/** * Palauttaa html-lomakkeen, jonka avulla voidaan tallentaa uuden * kokonaisuuden tiedot tietokantaan tai muokata vanhoja. Lomakkeen html-id on * 'kokonaisuuslomake'. * * @param <type> $id_kokon * @param <type> $omaid * @param <type> $uusi * @param <type> $ilmoitus_kokon * @param Tietokantaolio $tietokantaolio * @param <type> $oppiaine_kokon * @param <type> $otsikko_kokon * @param <type> $tiivis_kokon * @param <type> $selitys_kokon * @param <type> $taso_kokon * @param <type> $jarjestysnro_kokon * @param <type> $laajennetun_id_kokon * @param <type> $ylakokonaisuuden_id_kokon * @param <type> $kieli_id * @param <type> $toiminnan_name_arvo * @param Kokonaisuuskontrolleri $kokonaisuuskontrolleri Tämä vähän * suurellinen, mutten äkkiä parempaa keinoa keksinyt (15.1.2015) * @param int $kaavakieli viittaa käytettävään matematiikan kaavakieleen * (28.11.2015) * @param Elementti $elementti on Elementti-luokan olio, johon tämä * kokonaisuus kuuluu, tai sitten Elementti::$MUUTTUJAA_EI_MAARITELTY, * ellei tulla koosteesta. * (20.2.2016) * @return <type> */ function nayta_kokonaisuuslomake($id_kokon, $omaid, $uusi, $ilmoitus_kokon, $tietokantaolio, &$oppiaine_kokon, &$otsikko_kokon, &$tiivis_kokon, &$selitys_kokon, &$taso_kokon, &$jarjestysnro_kokon, &$laajennetun_id_kokon, &$ylakokonaisuuden_id_kokon, &$kieli_id, &$nakyvyys_kokon, $toiminnan_name_arvo, $kokonaisuuskontrolleri, $kaavakieli, $elementti, $elemryhma) { $mj = ""; // Lomakkeen html-koodi. $otsikon_maxpituus = 150; $submitnappi = ""; $perunappi = ""; $uusi_kuva_tiivis = ""; $uusi_kuva_seli = ""; $tulo_koosteesta = false; // True, if coming from Kooste (Package). $kokonaisuus = ""; // Tämä haetaan tietokannasta. /*$uusi_kuva_tiivis = ""; $uusi_kuva_seli = "";*/ $submit_kesken_nappi = "<input type='submit'" . "name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$TALLENNA_KESKEN_KOKON_VALUE . "' " . "title='" . Painikkeet::$TALLENNA_KESKEN_KOKON_TITLE . "'/>"; $esikatselunappi = "<button type='button' " . "onclick='nayta_kokonaisuuden_esikatselu(" . $id_kokon . ")'" . "title='" . Painikkeet::$ESIKATSELU_TITLE . "'/>" . Painikkeet::$ESIKATSELU_VALUE . "</button>"; $elementtitiedot = ""; // urliin lisättävät koosteen ja elementin idt if ($uusi) { $submitnappi = "<input type='submit'\n name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$TALLENNA_UUSI_KOKON_VALUE . "'/>"; $perunappi = "<input type='submit'\n name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$PERU_UUDEN_KOKON_TALLENNUS_VALUE . "'/>"; } else { // Haetaan ajantasalla olevat tiedot tietokannasta. Aiemmin // tiedot tuotiin kiinteästi painikelomakkeeseen, mutta tällöin // tämän jälkeen olioon tehdyt muutokset eivät näkyneet, jos // alkoi tehdä muutoksia olioon. $kokonaisuus = new Kokonaisuusolio($id_kokon, $tietokantaolio); if ($kokonaisuus->olio_loytyi_tietokannasta) { $oppiaine_kokon = $kokonaisuus->getOppiaine(); // Alla ovat tärkeitä, jotta esim. JS-koodi toimii, eikä // ala kehittämään mitään ylimääräistä muokatessa. Huom: // stripslash pilaa latex-koodin, eikä ilm tarpeellinen. $otsikko_kokon = htmlspecialchars($kokonaisuus->getOtsikko(), ENT_QUOTES, "UTF-8", true); $tiivis_kokon = htmlspecialchars($kokonaisuus->getTiivis(), ENT_QUOTES, "UTF-8", true); $selitys_kokon = htmlspecialchars($kokonaisuus->getSelitys(), ENT_QUOTES, "UTF-8", true); /*$otsikko_kokon = stripslashes($kokonaisuus->getOtsikko()); $tiivis_kokon = stripslashes($kokonaisuus->getTiivis()); $selitys_kokon = stripslashes($kokonaisuus->getSelitys());*/ $taso_kokon = $kokonaisuus->getTaso(); $jarjestysnro_kokon = $kokonaisuus->getJarjestysnro(); $laajennetun_id_kokon = $kokonaisuus->getLaajennetun_id(); $ylakokonaisuuden_id_kokon = $kokonaisuus->getYlakokonaisuuden_id(); $nakyvyys_kokon = $kokonaisuus->getNakyvyys(); $submitnappi = "<input type='submit'" . "name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$TALLENNA_MUOKKAUS_KOKON_VALUE . "'" . "title='" . Painikkeet::$TALLENNA_MUOKKAUS_KOKON_TITLE . "'/>"; $perunappi = "<input type='submit'\n name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$PERU_KOKON_MUUTOSTEN_TALLENNUS_VALUE . "'/>"; //============================================================== // Täällä katsotaan, onko käyttäjä tulossa koosteesta ja // mahdollistetaan kätevä paluu takaisin.======================= if ($elementti instanceof Elementti) { $kooste_id = $elementti->get_arvo(Elementti::$sarakenimi_kooste_id); $elem_id = $elementti->get_id(); //$koostenakymat = new Koostenakymat(); //$perunappi = $koostenakymat-> // nayta_inputpainike_paluu_koosteeseen_no_form(); $elementtitiedot = "&" . Koostekontrolleri::$kooste_name_id . "=" . $kooste_id . "&" . Koostekontrolleri::$elementti_name_id . "=" . $elem_id; $tulo_koosteesta = true; } if ($elemryhma instanceof Elementtiryhma) { $elemryhma_id = $elemryhma->get_id(); $elementtitiedot .= "&" . Koostekontrolleri::$elemryhma_name_id . "=" . $elemryhma_id . "&"; $tulo_koosteesta = true; } //========= Kuvan lisäyspainikkeet: paluu vanhaan ideaan =========== /* Uuden kuvan lisäyspainike tiivistelmään*/ $uusi_kuva_tiivis = "<input type='submit'" . "name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$LISAA_KUVA_MANUAALI_TIIVIS_KOKON_VALUE . "'" . "title='" . Painikkeet::$LISAA_KUVA_MANUAALI_TIIVIS_KOKON_TITLE . "'/>"; /* Uuden kuvan lisäyspainike selitykseen:*/ $uusi_kuva_seli = "<input type='submit'" . "name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$LISAA_KUVA_MANUAALI_SELITYS_KOKON_VALUE . "'" . "title='" . Painikkeet::$LISAA_KUVA_MANUAALI_SELITYS_KOKON_TITLE . "'/>"; //================================================================== } else { $this->lisaa_virheilmoitus(Tekstit::$ilm_kokon_ei_loytynyt); return $this->tulosta_virheilmoitukset() . $perunappi; } } // End of päivitetään vanhaa. // NÄkyvyysvalikko: ==================================================== $oletusarvo = $nakyvyys_kokon; $nakyvyydet = new Nakyvyys(); $select_maaritteet = array(Attr::name(Kokonaisuuskontrolleri::$kokon_name_nakyvyys), Attr::title(Tekstit::$nakyvyys_valikko_otsikko_title)); $option_maaritteet = array(); $nakyvyysvalikko = $nakyvyydet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $oletusarvo, Tekstit::$nakyvyys_valikko_otsikko); //====================================================================== // Ilmoitus otetaan mukaan, jos ei tyhjä: if ($ilmoitus_kokon != "") { $ilmoitus_kokon = "<span class='kokonaisuuslomakeilmoitus'>" . $ilmoitus_kokon . "</span><br />"; } $oppiainehtml = Tekstit::$oppiainevalikko_otsikko . ": <b>" . Oppiaineet::hae_oppiaineen_nimi($oppiaine_kokon) . "</b>"; $koulutasohtml = Tekstit::$tasovalikko_otsikko . ": <b>" . Koulutasot::hae_koulutason_nimi($taso_kokon, false) . "</b>"; // Kielivalintavalikko: VALINTA POISTETTU toimintavaikeuksien takia! //$kielivalintahtml = nayta_kielivalikko($kieli_id); $kielivalintahtml = Tekstit::$kielivalikko_otsikko . ": <b>" . Kielet::hae_kielen_nimi($kieli_id) . "</b>"; // Ylempi kokonaisuustaso $ylakokonvalikko = $this->nayta_ylakokonaisuusvalikko($id_kokon, $tietokantaolio, $ylakokonaisuuden_id_kokon, $oppiaine_kokon, $kieli_id, $taso_kokon, $uusi, $omaid, $kokonaisuuskontrolleri); // Tekstinmuokkaus tiivistelmää varten: $muokattavan_elementin_id_tii = "tiivis_tekstiruutu"; $alasvetovalikon_id = "merkit1_tiivis"; $tekstityokaluolio = new Tekstityokalupalkki($muokattavan_elementin_id_tii, $alasvetovalikon_id); // Nykyään nämä toimii sekä tiivistelmälle että selitykselle. // Lomake osaa huomata, kunpaa ollaan muokkaamassa: $tekstimuokkauspainikkeet = $tekstityokaluolio->luo_painikkeet(Tekstityokalupalkki::$PERUSPAINIKKEET_JA_MATEMAATTISET, $kaavakieli); // Tekstinmuokkaus selitystä varten: $muokattavan_elementin_id_sel = "selitys_tekstiruutu"; // Kaavakielivalikko:================================================== $kaavakielet = new Kaavakieli(); $select_maaritteet = array(Attr::onchange("muuta_kaavakieli", array("this.value", Yleiset_arvot::$kaavakieli_name, $muokattavan_elementin_id_tii, $alasvetovalikon_id))); $option_maaritteet = array(); $kaavakielivalikko = $kaavakielet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $kaavakieli, Tekstit::$kaavakieli_otsikko); //===================================================================== if ($uusi) { // Ellei id-kokon-arvoa määritellä täällä, tulee sessiomuuttujasta vanha. $id_kokon = Kokonaisuusolio::$kokon_ei_maaritelty; } // Vanha ylakokon_id otetaan talteen, jotta lapsiasiat pysyvät // oikealla tolalla. Haetaan mahdollisimman tuoreet tiedot. $ylakokonaisuuden_id_vanha = $ylakokonaisuuden_id_kokon; if ($kokonaisuus instanceof Kokonaisuusolio) { $ylakokonaisuuden_id_vanha = $kokonaisuus->getYlakokonaisuuden_id(); } /*lisaaTagit(elementin_id, elementin_tunnus, class_arvo, id_arvo*/ // Sitten palat yhteen: $mj = "<form align='left' method='post' id='kokonaisuuslomake'" . "action='index.php?id_kokon=" . $id_kokon . "&ylakokonaisuuden_id_vanha=" . $ylakokonaisuuden_id_vanha . "&taso_kokon=" . $taso_kokon . "&kieli_id=" . $kieli_id . "&uusi=" . $uusi . $elementtitiedot . "'/>" . $ilmoitus_kokon . "<b>" . Tekstit::$kokonlomake_ohje . "</b>" . $esikatselunappi . "<table summary='uudet_tiedot'>" . "<tr><td>" . Tekstit::$kokonlomake_otsikko . ": </td><td><input type='text'\n size='55' maxlength='{$otsikon_maxpituus}'" . "name='otsikko_kokon' value='{$otsikko_kokon}'" . "id='otsikkotekstikentta'" . "title='" . Tekstit::$kokonlomake_otsikkotitle . "'/>" . "</tr>" . "<tr><td></td>" . "<td>" . " " . $ylakokonvalikko . " " . $nakyvyysvalikko . "</td>" . "</tr>" . "<tr><td></td><td>" . $kaavakielivalikko . " " . $oppiainehtml . " " . $koulutasohtml . " " . $kielivalintahtml . "</td></tr>" . "<tr><td></td><td colspan='2'>" . $tekstimuokkauspainikkeet . "</td></tr>" . "<tr><td>" . Tekstit::$kokonlomake_tiivis . ":</td>" . "<td colspan='2'><textarea cols='80' rows='18' maxlength = '10000'\n id='" . $muokattavan_elementin_id_tii . "' name='tiivis_kokon' \n onfocus='kirjoituskentta_onfocus(\"tiivis_tekstiruutu\")'>" . $tiivis_kokon . "</textarea></td></tr>" . "<tr><td>" . Tekstit::$kokonlomake_selitys . ":</td>" . "<td colspan='2'><textarea cols='80' rows='9' maxlength = '10000'\n id='" . $muokattavan_elementin_id_sel . "' name='selitys_kokon'\n onfocus='kirjoituskentta_onfocus(\"selitys_tekstiruutu\")'>" . $selitys_kokon . "</textarea></td></tr>" . "<tr><td></td><td align='left'>" . $submitnappi . $submit_kesken_nappi . $uusi_kuva_tiivis . $uusi_kuva_seli . $perunappi . "</td></tr>" . "</table>" . "</form>"; return $mj; }
/** * Etsii tietokannasta ja palauttaa olion näkyvyysarvon. Oletuspalautusarvo * on Nakyvyys::$YKSITYINEN. Muita arvoja tutkitaan vain, jos kyseinen * olio löytyy tietokannasta. * @param type $kohdeolio_id * @param type $kohdeoliotyyppi * @param type $tietokantaolio */ public static function hae_nakyvyys($kohdeolio_id, $kohdeoliotyyppi, $tietokantaolio) { $nakyvyys = Nakyvyys::$YKSITYINEN; if ($kohdeoliotyyppi + 0 === Oliotyyppi::$KOKONAISUUS) { $kohde = new Kokonaisuusolio($kohdeolio_id, $tietokantaolio); if ($kohde->olio_loytyi_tietokannasta) { $nakyvyys = $kohde->getNakyvyys(); } } else { if ($kohdeoliotyyppi + 0 === Oliotyyppi::$TEHTAVA) { $kohde = new Tehtava($kohdeolio_id, $tietokantaolio); if ($kohde->olio_loytyi_tietokannasta) { $nakyvyys = $kohde->getNakyvyys(); } } else { if ($kohdeoliotyyppi + 0 === Oliotyyppi::$RATKAISU) { $kohde = new Ratkaisu($kohdeolio_id, $tietokantaolio); if ($kohde->olio_loytyi_tietokannasta) { $nakyvyys = $kohde->getNakyvyys(); } } else { if ($kohdeoliotyyppi + 0 === Oliotyyppi::$KOOSTE) { $kohde = new Kooste($kohdeolio_id, $tietokantaolio); if ($kohde->olio_loytyi_tietokannasta) { $nakyvyys = $kohde->get_arvo(Kooste::$sarakenimi_nakyvyys); } } else { if ($kohdeoliotyyppi + 0 === Oliotyyppi::$ELEMENTTI) { $kohde = new Elementti($kohdeolio_id, $tietokantaolio); if ($kohde->olio_loytyi_tietokannasta) { $nakyvyys = $kohde->get_arvo(Elementti::$sarakenimi_nakyvyys); } } else { } } } } } return $nakyvyys; }