Hotfix release available: 2025-05-14b "Librarian".
upgrade now! [56.2] (what's this?)
Hotfix release available: 2025-05-14a "Librarian".
upgrade now! [56.1] (what's this?)
New release available: 2025-05-14 "Librarian".
upgrade now! [56] (what's this?)
smartcode:webdesktop
Table of Contents
Oluliste failide asukohad
Dyn objekti kasutaja vaadete handlerid
lib/webdk_dynamic_object_utils.inc- üldised dyn tüübi kasutaja vormi handleridlib/webdk_dynamic_object_add_utils.inc- lisamise vormi handleridlib/webdk_dynamic_object_edit_utils.inc- muutmise vormi handleridlib/webdk_dynamic_object_view_utils.inc- vaatamise vormi handleridlib/webdk_dynamic_object_list_utils.inc- listi vaate handlerid
Dyn objekti admin vaadete handlerid
lib/webdk_dynamic_object_admin_utils.inc- üldised dyn tüübi admin vormi handleridlib/webdk_dynamic_object_admin_add_utils.inc- dyn tüübile välja lisamise vormi handleridlib/webdk_dynamic_object_admin_edit_utils.inc- dyn tüübile välja lisamise vormi handleridlib/webdk_dynamic_object_admin_view_utils.inc- dyn tüübile välja lisamise vormi handlerid- lib/webdk_dynamic_object_admin_field_utils.inc - ???
- lib/webdk_dynamic_object_admin_data_utils.inc - ???
- lib/webdk_dynamic_object_admin_manage_utils.inc - ???
- lib/webdk_dynamic_object_admin_type_utils.inc - ???
Valikute koodid ja klassifilaatorid
- Nii ühe väärtuse valik, kui mitme väärtuse valik toimivad samal põhimõttel
- koodide kasutamisel on kaks mõtet:
- ongi vaja hoida eraldi spetsiifilise koode ning nende järgi otsida jms asju teha. Sel juhul määrab admin ise kõik koodid.
- koode saab kasutada ka selleks, et mingi väärtse nimetuse muutumisel ei läheks juba tehtud valikute seosed kaduma. Sel juhul pole vajadust koode ise käsitsi määrata, vaid need genereeritakse automaatselt, sest nende ainus mõte on olla unikaalne. Näide: kui enne oli valiku nimetus näiteks “President Lennart Meri” ning nüüd muudetakse see “President Toomas Hendrik Ilves”, siis tänu koodile jääb seos presidendiga ikka kehtima.
- koodid peavad dün. tüübi välja piires olema unikaalsed
- kui kasuta koode on peal, siis peab iga väärtuse juures ka kood olemas olema. Koodi puudmumisel genereeritakse see automaatselt kujul “i<uniq_number>”
- kui “Kasuta koode” valik välja lülitada, siis jäävad varem sisestatud koodid siiski alles, kuid neid ei näidata enam välja ega salvestata kirjete juurde
- Kui ei kasutata koode ega klassifikaatorit:
- nii muutmise/lisamise kui ka vaatamise vormil on valikutes näha vaid väärtuste nimetused
- dün. tüübi väja juures valikute lisamisel või muutmisel need muudatused varem vanade andmetega salvestatud väärtusi ei muuda
- kirje muutmisel leitakse hetkel valitud väärtused nimetuse järgi ning koode ei vaadata. Kui enam pole vastava nimetusega väärtust, siis muutmisel seda ka ei näidata ning ühtlasi kaob ta salvestamisel kirje juurest
- Kui kasutatakse koode, aga mitte klassifikaatorit:
- valiku(te) salvestamisel salvestatakse baasi eraldi väljadele nii väärtuse kood, kui sellele vastav nimetus
- primaarne on kood ning kirje muutmisel kuvatakse hetkel kehtiv valik vastavalt sellele (mitte nimetusele). Seega, kui antud koodile vastav nimetus on dün. tabeli välja juures vahepeal muutnud, siis muutmise vormil näidatakse hetkel valitud andmetes juba uut nimetust ning salvestamisel kirjutatakse vana nimetus uuega üle.
- andmeid saab otsida nii koodi kui ka nimetuse järgi
- kui dün. tüübi välja juures muudetakse väärtuse koodi või nimetust, siis see ei mõjuta juba varem vanade andmetega salvestatud kirjeid. Siiski kirje muutmise vormil saab teha valiku vaid hetkel kehtivate koodide ja nimetuste hulgast ning salvestamisel kirjutatakse seega vanad andmed igaljuhul mingi uuega üle.
- Kui kasutatakse klassifikaatorit:
- kõik väärtuste koodid ja nimetused on salvestatud vaid klassifikaatori juures, mitte iga dün. tüübi välja juures, mis antud klassifikaatorit kasutab
- kui klassifikaatori andmed muutuvad, siis see ei mõjuta juba varem vanade andmetega salvestatud kirjeid.
- koodide kasutamine või mitte kasutamine määratakse klassifikaatori juures, mitte iga dün. tüübi välja juures
- kui on soov mingi dün. tüübi välja juures koode mitte kasutada, siis tuleb valida väljale välimuseks “Ainult nimetus”
- kui on peal “Kasuta koode”, siis peab iga väärtuse juures olema kood ning selle puudumisel genereeritakse see automaatselt
- Klassifikaatori väärtuste põhjal on võimalik koostada ka ainult kindla dün. tüübi välja jaoks mõeldud valikute nimekiri. Selleks tuleb dün. tüübi väli siduda kõigepealt klassifikaatoriga ning järgmisel muutmisel seos kustutada. Sellel hetkel salvestatakse kõik klassifikaatori hetke väärtused (koos koodide ja nimetustega) antud välja juurde ning seos klassifikaatoriga kaob. Edaspidi saab välja väärtusi lisada, muuta ja kustutada ilma, et see mõjutaks klassifikaatorit. Samuti ei mõjuta klassifikaatori muudatused enam selle välja väärtusi.
- Kui kasutatakse koode (ükskõik kas koos klassifikaatoriga või mitte), siis on võimalik valid, millise välimusega on valikud lisamise ja muutmise vormidel. See puudutab vaid veebis vaatamise ja muutmsie vormidel välja välimust ning baasis hoitakse endiselt eraldi alles nii koodid kui nimetused.
Tehniline
Failid
lib/webdk_dynamic_object_utils.inc- lisamise/muutmise lehe AJAX-i HTML osa asub siin
Muu
TODO:
- script, mis tagaks, et klassifikaatoritel, millel kasutatakse koode, oleks kõigil väärtustel koodid olemas
- script, mis tagaks, et olemasolevatel koodiga väljadel on ka baasis see olemas
- nii klassif kui valiku välja juures vaadata, et kui lisamisel või muutmisel on “kasuta koode” peal, siis tuleb puuduvad koodid generuitada
- vaikeväärtuste salvestamine + nende kasutamine uue kirje lisamisel
Valik
- klassifikaaatori seost ning välja välimust hoitakse välja optionite juures
dynobject_fieldstabelis - koodi hoidmiseks on dyn tabeli juures eraldi väli
_codelõpuga. See väli lisatakse alles siis, kui välja juures on valitud koodide kasutamine
Mitme väärtuse valik
multisel_cache
Arenduse nipid
kindlale dyn tyybi lehele custom sisu lisamine
- loomulikult kogu asi käbi EXTi all
- failis $EXT/etc/pages/add_dynobj.inc saab määrata vastavalt dyn tüübile mapingu, mis fail includeda. Näide:
$EMS_VASTUS_TID = webdk_dynobj_name2tid("Vastus"); if($tid == $EMS_VASTUS_TID return $WEBDK_EXT_FS_DIR.'inc/eelnoud/mingi_suvaline_fail.inc';
- NB!! mitte unustada tehtud muutujat samas failis oleva funktsiooni
_ems_post_auth_requirementsglobal muutujatesse panna!!!
AJAXi kasutamine
- included ajaxi libra
- kirjutad response funktsiooni, mis tulemusega tegeleb
- teed EXTi alla eraldi lehe ($EXT/inc/ajax/ alla), kus käib ajaxi maagija
- suunad ajaxi päringud sellele failile
<script type="text/javascript" src="/js/ajax.js"></script> <script> // initsialiseerime ajaxi var ajax = new sack(); function ems_isikukaart_eval_ajax_response() { //return alert(ajax.response); eval(ajax.response); } function please_call_my_ajax() { var url = '{$WEBDK_BASE_URL}?page=ems_ajax_user_email_by_name&field='+fl_email_name+'&first_names='+window.escape(last_name)+'&u={$WEBDK_UNIQ}'; // ajax.requestFile = url; ajax.onCompletion = ems_isikukaart_eval_ajax_response; ajax.runAJAX(); } </script>
Dyn tabelite joinimine
SELECT IK.dyn_table_field_41552 AS eesnimi, -- $ IK.dyn_table_field_41553 AS perenimi -- $ FROM relations KM2IK_RYHM INNER JOIN dyn_table_41549 IK_RYHM ON -- isikukaardi ryhm IK_RYHM.dyn_table_41549_id = KM2IK_RYHM.relation_slave_id INNER JOIN items iIK_RYHM ON iIK_RYHM.item_id = IK_RYHM.dyn_table_41549_id INNER JOIN relations IK_RYHM2IK_LIIGE ON IK_RYHM2IK_LIIGE.relation_master_id = iIK_RYHM.item_id INNER JOIN dyn_table_41550 IK_LIIGE ON -- isikukaardi liie IK_LIIGE.dyn_table_41550_id = IK_RYHM2IK_LIIGE.relation_slave_id INNER JOIN items iIK_LIIGE ON iIK_LIIGE.item_id = IK_RYHM2IK_LIIGE.relation_slave_id INNER JOIN relations IK_LIIGE2IK ON IK_LIIGE2IK.relation_master_id = iIK_LIIGE.item_id INNER JOIN dyn_table_41516 IK ON -- isikukaart IK.dyn_table_41516_id = IK_LIIGE2IK.relation_slave_id INNER JOIN items iIK ON iIK.item_id = IK_LIIGE2IK.relation_slave_id WHERE KM2IK_RYHM.relation_master_id = {$komisjon_info['grupp_id']} AND -- komisjoni id IK_LIIGE.dyn_table_field_41572_lower = 'esimees' -- $EMS_ISIKUKAART_AMETINIMETUS_FID
WW OpenOffice generaatori kasutamine
// konverdime RTF-iks require_once("lib/webdk_oo_converter_utils.inc"); // OO template fail (alusp6hi) $ooo_tmp_name = $WEBDK_BASE_TEMP_FS_DIR.'Infotund_'.$infotund_date.'.odt'; // v2ljundfail $rtf_tmp_name = $WEBDK_BASE_TEMP_FS_DIR.'Infotund_'.$infotund_date.'.rtf'; $res = webdk_oo_convert_file($ooo_tmp_name,$rtf_tmp_name); if(!$res['status']) webdk_error("Viga dokumendi konverteerimisel!"); // lisame loodud faili dyn tyybi juurde webdk_dynamic_object_import_edit( $pid, array(webdk_dynobj_name2fid("Infotund","Fail") => $rtf_tmp_name), $item_opts = array(), $opts = array() ); @unlink($rtf_tmp_name);
smartcode/webdesktop.txt · Last modified: 2019/09/20 15:52 by 127.0.0.1
