Site Tools


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

Oluliste failide asukohad

Dyn objekti kasutaja vaadete handlerid

  • lib/webdk_dynamic_object_utils.inc - üldised dyn tüübi kasutaja vormi handlerid
  • lib/webdk_dynamic_object_add_utils.inc - lisamise vormi handlerid
  • lib/webdk_dynamic_object_edit_utils.inc - muutmise vormi handlerid
  • lib/webdk_dynamic_object_view_utils.inc - vaatamise vormi handlerid
  • lib/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 handlerid
  • lib/webdk_dynamic_object_admin_add_utils.inc - dyn tüübile välja lisamise vormi handlerid
  • lib/webdk_dynamic_object_admin_edit_utils.inc - dyn tüübile välja lisamise vormi handlerid
  • lib/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:
    1. ongi vaja hoida eraldi spetsiifilise koode ning nende järgi otsida jms asju teha. Sel juhul määrab admin ise kõik koodid.
    2. 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_fields tabelis
  • koodi hoidmiseks on dyn tabeli juures eraldi väli _code lõ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_requirements global 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