====== Trükimallide koostamise juhend Webware Open Office generaatori (X-path) baasil ====== ===== Üldine ===== Smarty keelt kasutatakse WebDesktopis trükimallide juures. Kui Smarty keele märke { } (loogelisi sulgusid) tahetakse kasutada teksti sees, siis tuleb need eelnevalt asendada vastavalt "{" => "{{" "}" => "}}" Lisaks tuleb jutumärkide asemel kasutada märke ''' 3 ühekordset jutumärki (ilma jutumärkideta). Ühekordse jutumärgi saamiseks tuleb kasutada märke '' 2 ühekordset jutumärki (ilma jutumärkideta). === Näide: === ==Sisend== See on siin üks arvude hulk {ldelim}1,2,3{rdelim} ==Väljund== See on siin üks arvude hulk {1,2,3} Täpsemat infot standardse Smarty süntaksi kohta saate aadressilt http://smarty.net. \\ \\ ===== Path (teekond) ===== Path on teekond elemendini XML-i puus. Lisaks traditsioonilisele X-Path-i syntax-ile saab kasutada nö alampath-e eraldades nad “«” ja “»” märkidega. Näiteks “«objekt_id»”. Alamteekondades saab lisaks tavalisele teekonnale kasutada ka veel nn erifunktsioone: * glv:viide jadale:välja nimetus * type_ename:tüübi laienduse nimetus === Näited: === Antud näiteks väärtustatakse lähetatav (lhv) lähetuselt (lh) loetud id (lahetatav_id) kaudu.\\ // Parameeter "o" on vabalt valitud nimetus ja peab kattuma alamteekonnas antuga.\\ // Ainuke nõue on, et parameeter ei ole võrdne ühegi nö sisseehitatud parameetriga. {sle n=lhv p='''webdk_relations/webdk_relation/webdk_slave_item/webdk_item[item_id=''<>'']''' o=$lh} // Antud näites leitakse kõik seotud lähetused kasutades tüübi identifitseerimiseks laienduse nime.\\ // See on universaalsem lähenemine ning võimaldab lihtsamini malle ühest süsteemist teise üle kanda. {sle n=lhs p='''webdk_relations/webdk_relation/webdk_slave_item/webdk_item[item_type_id=''< >'']'''} \\ ===== Tag-id ===== ==== opt ==== See tag on mõeldud optimeerimiseks. Programmile on vaja anda “vihjeid”, et milliseid tüüpe antud mallis soovitakse kasutada, samuti vajadusel ka välju (näiteks, mis jäävad iflause piirkonda). See hoiab suuresti kokku sisend-XML-i mahtu. Vaikimisi paneb süsteem selle tüübi ID, mille pealt trükkimist alustatakse. St kui soovitakse ainult otseselt samalt andmekaardilt andmeid, siis opt tag-i ei pea kasutama. Samas, kui soovitakse ka seostest andmeid võtta, siis on vaja vastavate seotud tüüpide ID-d määrata. === Parameetrid: === ^Nimetus ^ Kirjeldus ^ |tids|Tüübi ID-de loetelu komadega eraldatud| |enames|Tüübi ekspordi nimetuste loetelu komadega eraldatud| |max_depth|Maksimaalne sügavus XML-is. Vaikimisi on see 2. Juhul kui tahetakse näiteks seostest omakorda sügavamale seostesse minna, siis peaks olema max_depth=3 jne| === Näide: === {opt tids=27992,28007,34111} \\ ==== sb ==== See tag on mõeldud baas teekonna määramiseks. Viimast on vaja eelkõige asukoha teekondade kirjelduste lühendamiseks. Kui ühtegi sb tag-i dokumendist ei leita, siis määratakse selleks automaatselt “/webdk_data/webdk_item”. === Parameetrid: === ^Nimetus ^ Kirjeldus ^ |p|path ehk teekond. Määrab asukoha XML-puus| === Näide: === {sb p='''webdk_item[item_id=''45676'']'''} Määrab, et järgnevad teekonnad on alates item-ist id=4676. \\ \\ ==== gv (get value) ==== Seda tag-i kasutatakse väljade sisu kuvamiseks. === Parameetrid: === ^Nimetus ^ Kirjeldus ^ |p|path ehk teekond. Määrab asukoha XML-puus| |c|context ehk kontekst. Määrab konteksti, millest alates väärtuse otsingut teostatakse. Vt näidet| |t|type ehk tüüp. Määrab ära välja tüübi. Kui määramata, siis kuvatakse täpselt nii nagu on sisendis. Vt tüübid osa| |req|On nõutud. Määrab, kas vastav muutuja on nõutud. Vaikimisi on “true”| |empty|Juhul, kui väärtus on tühi või puudu (viimase korral peab req=false), siis antakse selle muutuja väärtus tagasi. Näiteks. {gv p=minuvaartus req=false empty=tühi}.| === Tüübid: === ^Nimetus ^ Kirjeldus ^ |date|Kuupäev ja/või kellaaeg. Määrab ära kuupäeva tüübi, mille abil saab sisendisolevaid kuupäevi erinevatel kujudel esitada. Kuju saab määrata parameetriga fmt| |est_named _date|Kuupäev nn nimetatud kujul eesti keeles. Näiteks “30. oktoober 2008”. Vt näidet.| |musel|Määrab ära, et tegemist on musel väärtusega, mis formaaditakse vastavalt parameetritele “musel_sep”, “musel_val”. Näiteks. {gv p=MVV t=musel musel_sep=, empty=tühi musel_val=« code »: «value» req=false}| === Näide: === Tüüp: {gv p=../webdk_item_type/item_type_name_translation/et} Pealkiri: {gv p=pealkiri} Kuupäev formaadis AAAA-KK-PP: {gv p=reg_date t=date fmt=''Y-m-d''} Kuupäev nimetatud formaadis: {gv p=reg_date t=est_named_date} {sle n=a p=webdk_relations/webdk_relation/webdk_slave_item/webdk_item} Esimese seose pealkiri: {gv p=pealkiri c=$a.0} \\ ==== sle (set get value) ==== Seda tag-i kasutatakse nn sisemiste loetelude koostamiseks, et neid saaks hiljem näiteks Smarty foreach konstruktsiooniga kuvada. ^Nimetus ^ Kirjeldus ^ |n|name ehk nimetus. Määrab ära, millise nimega loetelu salvestatakse.| |p|path ehk teekond. Määrab asukoha XML-puus.| |c|context ehk kontekst. Määrab ära konteksti, kust alates astavat teekonda otsitakse. Vaikimisi kasutatakse aktiivset asukohta (näiteks sb-käsuga määratud). c-d kasutatakse eelkõige foreach jms tsüklites alamelementide kuvamisel.| === Näide: === {sle n=a p=webdk_relations/webdk_relation/webdk_slave_item/webdk_item} \\ ==== sl (sort list) ==== Seda tag-i kasutatakse nn sisemiste loetelude (koostatud “sle”-ga) sorteerimiseks. ^Nimetus ^ Kirjeldus ^ |n|name ehk nimetus.Funktsiooniga "sle" koostatud loetelu nimi| |p|path ehk teekond. Määrab asukoha XML-puus. See on relatiivne iga loetelus oleva elemendi suhtes.| === Näide: === {sle n=a p=webdk_relations/webdk_relation/webdk_slave_item/webdk_item} {sl n=a p=pealkiri} \\ ==== table ==== Seda tag-i kasutatakse tabelite koostamiseks. ^Nimetus ^ Kirjeldus ^ |p|path ehk teekond. Määrab tabeli väärtuste asukoha| |c|context ehk kontekst. Määrab ära alguspunkti, kust alates path-i resolvima hakatakse. Seda on vaja kasutada näiteks tsüklis sees “kontekstis” tabelite genereerimisel (vt näidet)| |sort|sorteerimise teekond. Määrab ära teekonna väärtuseni mille järgi sorteeritakse. See teekond peab olema relatiivne tabeli reale.| \\ ==== tgv (table get value) ==== Seda tag-i kasutatakse tabeli sisesta väärtuste kuvamiseks. === Parameetrid: === Parameetrid on samad, mis funktsioonil gv, vahega, et kontekstiks on konkreetne tabeli rida. === Tüübid: === ^Nimetus ^ Kirjeldus ^ |date|Kuupäev ja/või kellaaeg. Määrab ära kuupäeva tüübi, mille abil saab sisendisolevaid kuupäevi erinevatel kujudel esitada. Kuju saab määrata parameetriga fmt| === Näide: === {table p=webdk_routing} ^Roll^Kes^Ülesanne^ |{tgv n=rt_role_name}|{tgv n=rt_perf_name}|{tgv n=rt_task}| {/table} \\ ===== Globaalsed funktsioonid ===== Globaalseid funktsioone saab kasutada tingimuslausetes jms. === Parameetrid: === ^Nimetus ^ Kirjeldus ^ |name|Väljakutsutava funktsiooni nimetus. Tüüpiliselt “gv”| |param1.. paramN|Väljakutsutavale funktsioonile edastatavad parameetrid. “gv” puhul võib olla lihtsalt x-path-i teekond. Vt näidist| \\ ===== Muud märkused ===== Ekspordinimes, mida kasutatakse trükimallides ei tohi kasutada numbreid. Näiteks “webdk_item/minuvali2” ei leita, samas “webdk_item/minuvali_b” leitakse. === Näited: === {opt tids=27992,28007,34111}{sb p=/webdk_data/webdk_item} Tüüp: {gv p=../webdk_item_type/item_type_name_translation/et} Pealkiri: {gv p=pealkiri} Meie nr: {gv p=reg_nr} Teie kuupäev: {gv p='''webdk_relations/webdk_relation/webdk_slave_item/webdk_item[item_id=''<>'']/reg_kp'''} Teie nr: {gv p='''webdk_relations/webdk_relation/webdk_slave_item/webdk_item[item_id=''<>'']/reg_nr'''} Kuupäev: {gv p=reg_date} Sisu: {gv p=summary} Mitteeksisteeriv muutuja: {gv p=minu_muutuja req=''false''} Seotud ühe objekti väli (näiteks andmed isikukaardilt): {sle n=lh p='''webdk_relations/webdk_relation/webdk_slave_item/webdk_item[item_id=''<>'']'''} {glv i=$lh.0 n=Isik} \\ {table p=webdk_routing} ^Roll ^ Kes ^Ülesanne^ |{tgv n=rt_role_name}|{tgv n=rt_perf_name}|{tgv n=rt_task}| {/table} \\ **Risttabeli väärtuste kuvamine tabelis** \\ {table p=kaubad/rows/row} |{tgv n=nimetus}|{tgv n=kogus}|{tgv n=summa}| {/table} \\ * Seotud väljsaadetavad kirjad (tüübi ID=28007): {sle n=a p='''webdk_relations/webdk_relation/webdk_slave_item/webdk_item[item_type_id=''28007'']'''} {foreach from=$a item=i name=testloop2} {$smarty.foreach.testloop2.iteration}. - ID: {glv i=$i n=item_id} - Tüübi ID: {glv i=$i n=item_type_id} - Nimi: {glv i=$i n=item_name} - Looja: {glv i=$i n=item_creator_name} - Loodud: {glv i=$i n=item_create_time t=date} {/foreach} * Kõik seotud dokumendid: {sle n=a p=webdk_relations/webdk_relation/webdk_slave_item/webdk_item} {foreach from=$a item=i name=testloop3} {$smarty.foreach.testloop3.iteration}. - ID: {glv i=$i n=item_id} - Tüübi ID: {glv i=$i n=item_type_id} - Nimi: {glv i=$i n=item_name} - Looja: {glv i=$i n=item_creator_name} - Loodud: {glv i=$i n=item_create_time t=date} {/foreach} * Mitme väärtuse valiku välja kuvamine: {sle n=a p=MVV/selection} {foreach from=$a item=i name=mvv1} {$smarty.foreach.mvv1.iteration}. - Kood: {glv i=$i n=code}{if xpc(“glv”,$i,”item_id”) eq “K2”} (Erikood){/if} - Väärtus: {glv i=$i n=value} {/foreach} * Mitme kasutaja valiku välja kuvamine: {sle n=b p=MUSEL/record} {foreach from=$b item=i name=musel1} {$smarty.foreach.musel1.iteration}. {glv i=$i n=name}{if !$smarty.foreach.musel1.last}, {/if} {/foreach} * Kompleks variant, kus kaardil on ühe objekti valik ning mis peegeldatakse seostesse (dubleeri seosed). Antud näites on välja ekspordi nimeks "objekt", ehk siis tema ID on tegelikult väljal "objekt_id". Siin on näide, kuidas kuvada infot seotud objektide hulgast võttes aluseks objekt väljal oleva ID. {gv p='''webdk_relations/webdk_relation/webdk_slave_item/webdk_item[item_id=''<>'']/item_name'''} ==== Suunamiste info ==== {table p=webdk_routing} ^Roll ^ Täitmisaeg ^ Kellele ^ Resolutsioon ^ Olek (suunamise staatus) ^ Kommentaar / vastus ^ Põhjendus |{tgv n=rt_role_name}|{tgv n=rt_status_time}|{tgv n=rt_perf_name}|{tgv n=rt_task}|{tgv n=rt_status_tr}|{tgv n=rt_task_answer}|{tgv n=rt_answer_comment}| * Tingimuslik lause: {if xpc(“gv”,“arv”) eq 77}JAH ON 77{else}EI OLE 77{/if} * Tsüklis kontekstipõhiste tabelite genereerimine: {sle n=lvvphk p=’webdk_relations/webdk_relation/webdk_slave_item/webdk_item[item_type_id=2177]’} {foreach from=$lvvphk item=i} Nimetus: {glv i=$i n=nimetus} Kood: {glv i=$i n=kood} Alamtabel: {table c=$i p=’webdk_relations/webdk_relation/webdk_slave_item/webdk_item[item_type_id=2359]’} ^Alamnimetus ^ Kirjeldus^ |{tgv n=nimetus}|{tgv n=kirjeldus}| {/table}{/foreach} \\ === Väljund: === Tüüp: Saabunud kiri Pealkiri: Kiri Webware OÜ-lt Meie nr: 1.2/11 Kuupäev: 15.11.2007 Sisu: Teade serveri korralisest hooldusest Mitteeksisteeriv muutuja: Seotud ühe objekti väli (näiteks andmed isikukaardilt): Andres Maasikas ^Roll ^ Kes^Ülesanne^ |Teadmiseks|Mait Kauss|| |Vastutav isik|Eero Pealis|Täpsustage palun kuupäev| Risttabeli väärtuste kuvamine tabelis: \\ ^Nimetus ^ Kogus^Summa^ |ID-kaadi lugeja|5|500| |Klaviatuur|2|300| Seotud väljsaadetavad kirjad (tüübi ID=28007): 1. - ID: 34555 - Tüübi ID: 28007 - Nimi: 4.11/68-1 proovikiri - Looja: Erki Kaldjärv - Loodud: 03.12.2007 Kõik seotud dokumendid: 1. - ID: 34248 - Tüübi ID: 34111 - Nimi: dokument 1 - Looja: Erki Kaldjärv - Loodud: 03.10.2007 2. - ID: 34255 - Tüübi ID: 34111 - Nimi: dokument 2 - Looja: Erki Kaldjärv - Loodud: 06.10.2007 3. - ID: 34262 - Tüübi ID: 34111 - Nimi: dokument 3 - Looja: Erki Kaldjärv - Loodud: 06.10.2007 * Mitme väärtuse valiku välja kuvamine: 1. - Kood: K1 - Väärtus: AAA 2. - Kood: K2 (Erikood) - Väärtus: BBB * Mitme kasutaja valiku välja kuvamine: 1. - ID: 123 - Nimi: Erki Kaldjärv 2. - ID: 2345 - Nimi: Ants Kalda * Kompleks variant, kus kaardil on ühe objekti valik ning mis peegeldatakse seostesse (dubleeri seosed). Antud näites on välja ekspordi nimeks "objekt", ehk siis tema ID on tegelikult väljal "objekt_id". Siin on näide, kuidas kuvada infot seotud objektide hulgast võttes aluseks objekt väljal oleva ID. Minu objekti nimi * Tingimuslik lause: JAH * Tsüklis kontekstipõhiste tabelite genereerimine:\\ Tavaväärtused:\\ Nimetus: Toote nimetus Kood: Toote kood\\ Alamtabel:\\ ^Alamnimetus ^ Kirjeldus^ |Alamtoode 1|Pikk kirjeldus 1| |Alamtoode 2|Pikk kirjeldus 2|