/** * Hakee kaikki yhteen kokonaisuuteen liittyvät tehtävät ja palauttaa ne * kauniisti html-koodina palauteoliossa. * * @param Palaute $palauteolio */ function toteuta_nayta_tehtavat(&$palauteolio) { $parametriolio = $this->get_parametriolio(); $id_kokon = $parametriolio->id_kokon; $omaid = $parametriolio->get_omaid(); $kayttajan_valtuudet = $parametriolio->get_valtuudet(); $tietokantaolio = $parametriolio->get_tietokantaolio(); $tehtava_html = ""; $sisalto = ""; $palaa_nappi = ""; /* Paluu kokonaisuuksiin. */ $uusi_teht_nappi = ""; // Asetetaan kieli, taso ja oppiaine tehtävän perusteella, kun urlista // tullaan: if ($palauteolio->naytto_urlin_mukaan()) { $parametriolio->set_naytto_urlin_mukaan(true); // Isäntäkokonaisuus haetaan tietokannasta, jos teht_id kunnollinen: $teht = $this->get_olio(); if ($teht instanceof Tehtava && $teht->olio_loytyi_tietokannasta) { $kokon_id = $teht->getKokon_id(); $kokon = new Kokonaisuusolio($kokon_id, $tietokantaolio); // Jos löytyi, asetetaan kieli, taso ja oppiaine, jottei tarvita // urlissa: if ($kokon instanceof Kokonaisuusolio && $kokon->olio_loytyi_tietokannasta) { // Asetetaan nämä, voipi olla tarvetta: $parametriolio->id_kokon = $kokon_id; aseta_kieli_taso_ja_oppiaine($kokon->getKieli(), $kokon->getOppiaine(), $kokon->getTaso(), $parametriolio); // Tekstien käännös. Kielet::kaanna($parametriolio->get_kieli_id()); } } } /* Uusia tehtäviä voivat lisätä (valtuuksiltaan) vähintään muokkaajat. * Kannattaa kyllä olla varovainen, jos muuttaa valtuuksia.. */ if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) { try { $onsubmit_funktionimi = "nayta_tehtavalomake"; $onsubmit_parametrit = array($id_kokon); /* */ $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon=" . $id_kokon . "&" . "uusi=1"); $input_maaritteet = array('name' => Toimintonimet::$tehtavatoiminto, 'value' => Painikkeet::$tehtava_uusi_value); $uusi_teht_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } catch (Exception $poikkeus) { $sisalto .= "Uusi tehtävä -painike: " . $poikkeus->getMessage(); } } try { $onsubmit_funktionimi = "nayta_kokonaisuudet"; $onsubmit_parametrit = ""; /* Ei parametreja */ $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon={$id_kokon}"); $input_maaritteet = array('name' => Toimintonimet::$kokonaisuustoiminto, 'value' => Painikkeet::$palaa_kokonaisuuksiin); $palaa_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } catch (Exception $poikkeus) { $sisalto .= "Palaa-painike: " . $poikkeus->getMessage(); } $sisalto .= $uusi_teht_nappi; // Haetaan tehtävät: $tehtavat = $this->hae_tehtavat(); if (empty($tehtavat)) { $palauteolio->set_ilmoitus(Tekstit::$tehtava_ilm_ei_loytynyt); $palauteolio->set_linkkihtml($palaa_nappi); } else { $laskuri = 0; // Tehtävän nro foreach ($tehtavat as $tehtava) { if ($tehtava instanceof Tehtava) { $laskuri++; $tehtava->setNro($laskuri); $painikkeet = $this->luo_tehtavapainikkeet($tehtava->getId()); // Jos on kirjautunut käyttäjä, näytetään väripallolla, onko // yksityinen vai julkinen: if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) { if ($tehtava->getNakyvyys() + 0 === Nakyvyys::$YKSITYINEN) { $tehtava->setNakyvyysmerkkiPrivate(); } else { $tehtava->setNakyvyysmerkkiPublic(); } } $sisalto .= $this->tehtavanakymat->tulosta_tehtava($tehtava, $omaid, $painikkeet); } } // Haetaan tehtävälinkit, jos tehtäviä löytynyt. Lisätään // myös paluupainike linkkien eteen. $linkkihtml = $this->hae_tehtavalinkit($parametriolio); if ($linkkihtml === Tekstit::$tehtava_ilm_ei_loytynyt) { $palauteolio->set_linkkihtml($palaa_nappi); } else { $palauteolio->set_linkkihtml($palaa_nappi . $linkkihtml); } } /* Tämä ottaa palauteolion samalla käyttöön */ $palauteolio->set_sisalto($sisalto); // Haetaan kokonaisuuden tiedot: $kokon = new Kokonaisuusolio($id_kokon, $tietokantaolio); if ($kokon->olio_loytyi_tietokannasta) { $kokon_otsikko = $kokon->getOtsikko(); } else { $kokon_otsikko = "?"; } /* Lisätään otsikkotieto: */ $palauteolio->set_otsikkotarkennus($kokon_otsikko); $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_TEHTAVA); // Kieli- yms valikot pois näkyvistä: $palauteolio->set_valikkonaytto(false); // Fixed linkit -näkymä: $palauteolio->set_nayttotapa(Html_koodi::$sisaltoelem_fixed); return $palauteolio; }
/** * 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; }
<?php session_start(); // Aloitetaan istunto tai otetaan kiinni vanha. // Haetaan asetukset ja avataan yhteys tietokantaan: require_once 'asetukset/tietokantayhteys.php'; require_once 'yhteiset/php_yhteismetodit.php'; load_files("articles"); require_once 'sivukoodit.php'; // Yhdistetään tietokantaan: $tietokantaolio = new Tietokantaolio($dbtyyppi, $dbhost, $dbuser, $dbsalis); $tietokantaolio->yhdista_tietokantaan($dbnimi); $parametriolio = new Parametrit($tietokantaolio); // Tekstien käännös. Kielet::kaanna($parametriolio->get_kieli_id()); // Jos "submit", niin suuntana submit-sivu: $target = isset($_GET['target']) ? $_GET['target'] : ""; $ktunnus = isset($_POST['ktunnus']) ? $_POST['ktunnus'] : ""; // Onko alla oleva iso turvallisuusriski? Noo ellei ssl-salausta käytetä, // kulkevat salasana ja muut tiedot selainkoneen ja palvelimen välillä // salaamattomassa muodossa, mistä ne on mahdollista // viekkaan ilkimyksen noukkia. Toki tässä ohjelmassa ei kovin intiimejä // tietoja siirry, joten ssl lienee tarpeeton toistaiseksi. $salasana = isset($_POST['salasana']) ? $_POST['salasana'] : ""; $toiminta = isset($_POST['toiminta']) ? $_POST['toiminta'] : ""; $hamy = isset($_GET['id']) ? $_GET['id'] : "kelvoton"; $viesti = isset($_GET['viesti']) ? $_GET['viesti'] : ""; // Viesti käyttäjälle. $sisalto = ''; // Varsinainen sisältö. $hamynimi = 'id';
/** * Luo ja palauttaa kielivalikon html-koodin. Ei sisällä lomake- eli * form-tageja! * @param <type> $kieli * @param <type> $otsikko * @return <type> */ function nayta_kielivalikko(&$kieli, $otsikko) { $kielivalikkohtml = ""; try { $arvot = Kielet::hae_kielten_arvot(); $nimet = Kielet::hae_kielten_nimet(); $name_arvo = "kieli_kuv"; $oletusvalinta_arvo = $kieli; $kielivalikkohtml .= Html::luo_pudotusvalikko($arvot, $nimet, $name_arvo, $oletusvalinta_arvo, $otsikko); } catch (Exception $poikkeus) { $kielivalikkohtml = Bongaustekstit::$kielivalikko_virheilm . " (" . $poikkeus->getMessage() . ")"; } return $kielivalikkohtml; }
/** * Näyttää joukon lajiluokkia ja niiden nimet eri kielillä. * @param array $lajiluokat Sisältää kaikki lajiluokat olioina * @param <type> $painikkeet * @param <type> $on_admin TRUE, jos käyttäjällä admin-oikeudet * @return <type> */ public static function nayta_lajiluokat($lajiluokat, $painikkeet, $on_admin) { // Haetaan kielten nimet ja arvot: $kielinimet = Kielet::hae_kielten_nimet(); $kieliarvot = Kielet::hae_kielten_arvot(); $sarakkeiden_lkm = sizeof($kieliarvot) + 1; $html = "<div class=''>"; $html = "<div class=''>" . $painikkeet . "</div>"; $html .= "<table class='tietotaulu'>"; $html .= "<tr><td colspan=" . $sarakkeiden_lkm . "class='tietotauluotsikko'>" . Bongaustekstit::$lajiluokka_lajiluokkataulun_otsikko . "</td></tr>"; $html .= "<tr>"; foreach ($kielinimet as $kieli) { $html .= "<th>" . $kieli . "</th>"; } $html .= "<th>" . Bongaustekstit::$lajiluokka_toimintapainikkeet . "</th>"; $html .= "</tr>"; // Haetaan sitten kuvaukset: $laskuri = 0; foreach ($lajiluokat as $lajiluokka) { if ($lajiluokka instanceof Lajiluokka) { // Pariton rivi eri värillä: if ($laskuri % 2 == 0) { $html .= "<tr class='tietotaulu_parillinen_rivi'>"; } else { $html .= "<tr>"; } // Painikkeet havaintojen siirtoon ja lajiluokan poistoon vain, // jos järkevää, eli kun havaintoja/kuvia on olemassa tai // poistossa ei ole :) $poistonappi = ""; $siirtonappi = ""; if ($on_admin) { // Poistonappi: if (!$lajiluokka->lajiin_kohdistuu_havaintoja() && !$lajiluokka->lajiin_kohdistuu_kuvia() && !$lajiluokka->lajilla_on_aliluokkia()) { $id = ""; $class = "rinnakkain"; $value = Bongauspainikkeet::$LAJILUOKAT_POISTA_VALUE; $title = Bongauspainikkeet::$LAJILUOKAT_POISTA_TITLE; $onclick = "poista_lajiluokka(" . $lajiluokka->get_id() . ",\"" . Bongaustekstit::$lajiluokan_poisto_varmistuskysymys . "\",\"" . Bongaustekstit::$lajiluokan_poisto_perumisviesti . "\")"; $poistonappi = Html::luo_buttonpainike($id, $class, $value, $title, $onclick); } // Siirtonappi: if ($lajiluokka->lajiin_kohdistuu_havaintoja() || $lajiluokka->lajiin_kohdistuu_kuvia()) { $id = ""; $class = "rinnakkain"; $value = Bongauspainikkeet::$LAJILUOKAT_SIIRRA_HAVKUV_VALUE; $title = Bongauspainikkeet::$LAJILUOKAT_SIIRRA_HAVKUV_TITLE; $onclick = "hae_siirtolomake(" . $lajiluokka->get_id() . ")"; $siirtonappi = Html::luo_buttonpainike($id, $class, $value, $title, $onclick); } } // Haetaan nimet muilla kielillä: $kuvaukset = $lajiluokka->hae_kuvaukset(); // Kuvauksen sisältämä nimi pitää tulla oikeaan paikkaan // kielen mukaisesti. Ellei kuvausta löydy, jätetään tyhjä solu. // Tässä hyödynnetään sitä, että kuvaukset on järjestetty // kieli_id:n mukaisesti. Näin vältetään tupla for-lause.' $sarakkeiden_lkm = sizeof($kieliarvot); // Käännetään kuvaukset toisinpäin, eli pienin kieli_id // vikaksi. Kun tuo poisto on vain lopusta.. $kuvaukset = array_reverse($kuvaukset); for ($i = 0; $i < $sarakkeiden_lkm; $i++) { // Jokaisella solulla pitää olla oma erityinen id, // jotta solu tunnistetaan: $soluid = "nimisolu" . $laskuri . $i; $id_koodi = "id='" . $soluid . "'"; // Soluihin lisätään onclick-määre, jotta niitä päästään // muokkaamaan: // 2. parametri -1 -> olemattoman olion id. $onklikki = "onclick = 'hae_nimikuvauslomake(" . $kieliarvot[$i] . ",-1,\"" . $soluid . "\"," . $lajiluokka->get_id() . " )'"; $kielinimi = Kielet::hae_kielen_nimi($kieliarvot[$i]); // Eka sarake on aina latina: if ($i == 0) { // Latinassa olio on lajiluokka, jonka id tarvitaan // jatkossa. Tämä on aina olemassa. $onklikki = "onclick = 'hae_nimikuvauslomake(" . $kieliarvot[$i] . "," . $lajiluokka->get_id() . ",\"" . $soluid . "\"," . $lajiluokka->get_id() . " )'"; $html .= "<td class='huomio'" . $id_koodi . $onklikki . " title='" . Bongauspainikkeet::$LAJILUOKAT_MUOKKAA_TITLE . " (" . $kielinimi . ")'>" . $lajiluokka->get_nimi_latina() . "</td>"; } else { if (!empty($kuvaukset)) { // Valitaan aina viimeinen taulukosta: $kuvaus = $kuvaukset[sizeof($kuvaukset) - 1]; //$kuvaus = null; if ($kuvaus instanceof Kuvaus && $kuvaus->get_kieli() == $kieliarvot[$i]) { // Suomea ei päästetä muokkaamaan kuin admin: if ($kieliarvot[$i] == Kielet::$SUOMI) { if ($on_admin) { $onklikki = "onclick = 'hae_nimikuvauslomake(" . $kuvaus->get_kieli() . "," . $kuvaus->get_id() . ",\"" . $soluid . "\"," . $lajiluokka->get_id() . " )'"; } else { $onklikki = "onclick = 'nayta_viesti(\"" . Bongaustekstit::$lajiluokan_muok_ei_voi_suomenkiel . "\")'"; } } else { $onklikki = "onclick = 'hae_nimikuvauslomake(" . $kuvaus->get_kieli() . "," . $kuvaus->get_id() . ",\"" . $soluid . "\"," . $lajiluokka->get_id() . " )'"; } $html .= "<td class='huomio' " . $id_koodi . $onklikki . " title='" . Bongauspainikkeet::$LAJILUOKAT_MUOKKAA_TITLE . " (" . $kielinimi . ")'>" . $kuvaus->get_nimi() . "</td>"; // Poistetaan vika eli jo käytetty kuvaus: array_pop($kuvaukset); } else { $html .= "<td class='huomio' " . $id_koodi . $onklikki . " title='" . Bongauspainikkeet::$LAJILUOKAT_SYOTA_UUSI_TITLE . " (" . $kielinimi . ")'></td>"; } } else { $html .= "<td class='huomio' " . $id_koodi . $onklikki . " title='" . Bongauspainikkeet::$LAJILUOKAT_SYOTA_UUSI_TITLE . " (" . $kielinimi . ")'></td>"; } } } //Lisätään painikkeet: $html .= "<td>" . $siirtonappi . $poistonappi . "</td>"; $html .= "</tr>"; $laskuri++; } } $html .= "</table>"; $html .= "</div>"; // Lajiluokkalaatikon loppu return $html; }
/** * Toteuttaa yhden kokonaisuuden näytön. Näyttää joko yhden kokonaisuudet tai * sitten kaikki käyttäjän valinnan mukaan. * * @return Palaute $palauteolio */ function toteuta_nayta(&$palauteolio) { $parametriolio = $this->get_parametriolio(); $kokonnakymat = $this->kokonaisuusnakymat; // VARmistetaan ensin, että klikattu kokonaisuus on "auki": $sessiomuuttujanimi = Parametrit::linkkisessiomuuttujan_nimi($parametriolio->id_kokon); $_SESSION[$sessiomuuttujanimi] = Kokonaisuusolio::$LINKKI_AUKI; // Liitetään parametriolioon tieto siitä, jos näyttö pitää tehdä // pelkän urlin perusteella (linkistä tulo, ks index.php loppuosa): if ($palauteolio->naytto_urlin_mukaan()) { $parametriolio->set_naytto_urlin_mukaan(true); // Tämä haetaan tietokannasta, jos id kunnollinen: $kokon = $this->get_olio(); // Jos löytyi, asetetaan kieli, taso ja oppiaine, jottei tarvita // urlissa. Muussa tapauksessa näytetään ensimmäinen sopiva // kokonaisuus (ks. metodi hae_kokonaisuushtml()). if ($kokon instanceof Kokonaisuusolio && $kokon->olio_loytyi_tietokannasta) { aseta_kieli_taso_ja_oppiaine($kokon->getKieli(), $kokon->getOppiaine(), $kokon->getTaso(), $parametriolio); // Kielen vaihto ei muuten onnistunut, joten piti täällä tehdä. Kielet::kaanna($parametriolio->get_kieli_id()); } } // Uuden kokonaisuuden luova nappi vain, jos käyttäjällä riittävät valtuudet: if ($parametriolio->get_valtuudet() >= Valtuudet::$MUOKKAUS) { $painike = $kokonnakymat->create_new_article_button(); } else { // Muuten ei näytetä painiketta: $painike = ""; } if ($parametriolio->get_kokonaisuuksien_nayttotapa() == Kokonaisuuksien_nayttotavat::$kokonaisuudet_nayta_kaikki_arvo) { $this->toteuta_nayta_kokonaisuudet_kaikki($palauteolio); } else { $sisalto = $this->hae_kokonaisuushtml($parametriolio); //Haetaan linkit: $linkit = $this->hae_kokonaisuuslinkit($parametriolio, true); $palauteolio = new Palaute(); $palauteolio->set_sisalto($sisalto); $palauteolio->set_valikkonaytto(true); $palauteolio->nayta_kiintolinkit(); $palauteolio->set_linkkihtml($linkit); $palauteolio->set_kokonaisuudet($parametriolio->kokonaisuusoliot); $palauteolio->set_uusi_kokon_painike($painike); } $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_KOKONAISUUS); // Onnistumista ei varsinaisesti tarkisteta, mutta olkoon täällä näin. $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK); return $palauteolio; }
/** * Näyttää kaikkien nykyiseen kieleen (kaikki tasot ja oppiaineet) liittyvien * kokonaisuuksien otsikoiden, joista klikkaamalla pääsee tarkastelemaan * kokonaisuutta. * * Näytetään julkiset ja omat yksityiset kokonaisuudet. Tulevaisuudessa * voi lisätä tarvittaessa mahdollisuuden antaa oikeuksia muille. * * IDEA: toisen koosteen kloonaaminen voisi olla sallittavaa. Tällöin voi * kloonista tehdä omanlaisen, mutta toisen tekemä jää ennalleen. * * @param Palaute $palauteolio */ public function toteuta_nayta_koosteet(&$palauteolio) { $koosteet = array(); $omaid = $this->get_kayttaja()->get_id(); $kieli = $this->get_parametriolio()->kieli_id; $oppiaine = $this->get_parametriolio()->oppiaine_kokon; $taso = $this->get_parametriolio()->taso_kokon; // Järjestäminen ei oikein onnistu täällä erikoisen nimenrakennuksen // takia (kielien, tasojen ja oppiaineiden nimet mukana, joita ei ole // tietokannassa). $hakulause = "SELECT kt.id from " . Kooste::$taulunimi . " AS kt" . " JOIN " . Henkilo::$taulunimi . " AS hlot" . " ON kt." . Kooste::$sarakenimi_henkilo_id . "=hlot.id" . " WHERE kt." . Kooste::$sarakenimi_nakyvyys . "=" . Nakyvyys::$JULKINEN . " OR kt." . Kooste::$sarakenimi_henkilo_id . "=" . $omaid . " ORDER BY hlot." . Henkilo::$sarakenimi_sukunimi . "," . " kt." . Kooste::$sarakenimi_organisaatio; $osumat = $this->get_tietokantaolio()->tee_omahaku_oliotaulukkopalautteella($hakulause); foreach ($osumat as $kooste_tk_olio) { $kooste = new Kooste($kooste_tk_olio->id, $this->get_tietokantaolio()); // Jos löytyi tietokannasta, lisätään koosteisiin: if ($kooste->olio_loytyi_tietokannasta) { array_push($koosteet, $kooste); } } //============ luodaan koosterivit (yksi rivi - yksi kooste): ========== $rivit = array(); foreach ($koosteet as $kooste) { if ($kooste instanceof Kooste) { $nayttopainike = ""; $muokkauspainike = ""; $poistopainike = ""; $tekija_id = $kooste->get_arvo(Kooste::$sarakenimi_henkilo_id); $tekija = new Henkilo($tekija_id, $this->get_tietokantaolio()); $org = $kooste->get_arvo(Kooste::$sarakenimi_organisaatio); if (!empty($org)) { $org .= "_"; } $nimike = $tekija->get_arvo(Henkilo::$sarakenimi_sukunimi) . "_" . $org . Kielet::hae_kielen_nimi_lyhennos($kooste->get_arvo(Kooste::$sarakenimi_kieli)) . "_" . strtoupper(Oppiaineet::hae_oppiaineen_nimi2($kooste->get_arvo(Kooste::$sarakenimi_oppiaine))) . "_" . Koulutasot::hae_koulutason_nimi($kooste->get_arvo(Kooste::$sarakenimi_taso), false) . "_" . $kooste->get_arvo(Kooste::$sarakenimi_nimi) . " "; //========= Näyttöpainike ==================================== $nayttopainike = $this->koostenakymat->luo_koosteen_nayttopainike($kooste); //========= Muokkauspainike ja Poistopainike vain tietyille ==== // Täällä tarkistetaan oikeudet eka: $user = $this->get_kayttaja(); if ($user->olio_loytyi_tietokannasta) { if ($tekija_id + 0 === $user->get_id() + 0 || $user->get_arvo(Henkilo::$sarakenimi_valtuudet) + 0 === Valtuudet::$HALLINTA) { $muokkauspainike = $this->koostenakymat->luo_koosteen_muokkauspainike($kooste); $poistopainike = $this->koostenakymat->luo_koosteen_poistopainike($kooste); } } if ($kooste->getNakyvyys() + 0 === Nakyvyys::$JULKINEN) { $on_julkinen = true; } else { $on_julkinen = false; } $rivi = $this->koostenakymat->luo_koosterivi($nimike, $nayttopainike, $muokkauspainike, $poistopainike, $on_julkinen); array_push($rivit, $rivi); //============================================================== } } $tuloste = $this->koostenakymat->nayta_koosteet($rivit); //====================================================================== // Luodaan paluu-painike: $paluupainike = $this->koostenakymat->create_button_gobacktoarticles(); // Luodaan Uusi kooste -painike, jos käyttäjä kirjautunut ja hänellä // koostevaltuudet: $uusikoostepainike = ""; if (Henkilo::on_kirjautunut($omaid, $this->get_tietokantaolio())) { if ($this->get_kayttaja()->get_arvo(Henkilo::$sarakenimi_valtuudet) >= Valtuudet::$KOOSTE_LISAYS) { $uusikoostepainike = $this->koostenakymat->create_button_new_summary(); } } $palauteolio->set_sisalto($tuloste); $palauteolio->set_linkkihtml($paluupainike . $uusikoostepainike); $palauteolio->set_nayttotapa(Html_koodi::$sidenav_fixed); $palauteolio->set_valikkonaytto(false); }
/** * Palauttaa koostelomakkeen koodin. Jos $kooste-parametri on * Kooste-luokan alkio, on kysymys vanhan muokkaamisesta, muuten * uuden koosteen luomisesta. * @param type $kooste * @param Parametrit $parametrit * @param string $elementit Mahdolliset elementit tai niiden otsikot * @param string $valitut Valittujen olioiden tiedot html-koodina. */ public function nayta_lomake($kooste, $parametrit, $elementit, $valitut) { $sisalto = ""; $nimi = ""; $selitys = ""; $osaset = ""; $tekstikentan_lev = 55; $tekstiruudun_lev = 57; $uuden_luominen = true; // Asetetaan mahdolliset vanhat arvot kohdilleen: if ($kooste instanceof Kooste && $kooste->olio_loytyi_tietokannasta) { $uuden_luominen = false; // Perustiedot: $kooste_taso = $kooste->get_arvo(Kooste::$sarakenimi_taso); $kooste_oppiaine = $kooste->get_arvo(Kooste::$sarakenimi_oppiaine); $kooste_kieli = $kooste->get_arvo(Kooste::$sarakenimi_kieli); // Valittavien oletusvalinnat: $valittavat_taso = $kooste_taso; $valittavat_oppiaine = $kooste_oppiaine; $valittavat_kieli = $kooste_kieli; $koostetyyppi = $kooste->get_arvo(Kooste::$sarakenimi_tyyppi); $nakyvyys = $kooste->get_arvo(Kooste::$sarakenimi_nakyvyys); $lomakeotsikko = Html::luo_otsikko(Tekstit::$kooste_lomakeotsikko_muokkaus, array(), 1); // Alla ovat tärkeitä, jotta esim. JS-koodi toimii, eikä // ala kehittämään mitään ylimääräistä muokatessa. $nimi = htmlspecialchars(stripslashes($kooste->get_arvo(Kooste::$sarakenimi_nimi)), ENT_QUOTES, "UTF-8", true); $kooste_id = $kooste->get_id(); // Aattelin, että jos on tyhjä ... pitäisi tarkistaa, meneekö näin. if ($selitys === Kooste::$MUUTTUJAA_EI_MAARITELTY) { $selitys = ""; } else { $selitys = htmlspecialchars(stripslashes($kooste->get_arvo(Kooste::$sarakenimi_selitys)), ENT_QUOTES, "UTF-8", true); } $koosteotsikko = htmlspecialchars(stripslashes($kooste->get_arvo(Kooste::$sarakenimi_otsikko)), ENT_QUOTES, "UTF-8", true); $organisaatiotunnus = htmlspecialchars(stripslashes($kooste->get_arvo(Kooste::$sarakenimi_organisaatio)), ENT_QUOTES, "UTF-8", true); } else { // Uusi kooste $kooste_taso = $parametrit->taso_kokon; $kooste_oppiaine = $parametrit->oppiaine_kokon; $kooste_kieli = $parametrit->kieli_id; $valittavat_taso = $parametrit->taso_kokon; $valittavat_oppiaine = $parametrit->oppiaine_kokon; $valittavat_kieli = $parametrit->kieli_id; $koostetyyppi = $parametrit->kooste_tyyppi; $nakyvyys = $parametrit->kooste_nakyvyys; // Uusi kooste: if ($nakyvyys === Kooste::$MUUTTUJAA_EI_MAARITELTY) { $nakyvyys = Nakyvyys::$YKSITYINEN; } $lomakeotsikko = Html::luo_otsikko(Tekstit::$kooste_lomakeotsikko_uusi, array(), 1); $nimi = $parametrit->kooste_nimi; $selitys = $parametrit->kooste_selitys; $koosteotsikko = $parametrit->kooste_otsikko; $organisaatiotunnus = $parametrit->kooste_org; $kooste_id = Kooste::$MUUTTUJAA_EI_MAARITELTY; // Arvo ei_maaritelty (-2) ei näytä kivalta, joten muutetaan se // tyhjäksi. Huomaa &, ilman sitä ei toimi.. $syotteet = array(&$nimi, &$selitys, &$koosteotsikko, &$organisaatiotunnus); for ($i = 0; $i < sizeof($syotteet); $i++) { if ($syotteet[$i] == Kooste::$MUUTTUJAA_EI_MAARITELTY) { $syotteet[$i] = ""; } } } // Luodaan lomakkeen osat rivi kerrallaan (taulukkoasettelu): $nimirivi = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for(Koostenakymat::$koostelomake_nimikenttaid, Tekstit::$kooste_lomake_nimi . " *: ", array()), array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::name(Koostekontrolleri::$kooste_name_nimi), Attr::size($tekstikentan_lev), Attr::max_length(100), Attr::id(Koostenakymat::$koostelomake_nimikenttaid), Attr::value($nimi))), array()), array(Attr::title(Tekstit::$kooste_lomake_nimi_title))); // rivi // Tyyppirivi (uusi hieno metodi Asetuspohjan avulla: $koostetyypit = new Koostetyypit(); $select_maaritteet = array(Attr::name(Koostekontrolleri::$kooste_name_tyyppi)); $option_maaritteet = array(); $oletusvalinta_arvo = $koostetyyppi; $otsikko = ""; // Asetetaan erikseen. $koostevalikko = $koostetyypit->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $oletusvalinta_arvo, $otsikko); // Luodaan näkyvyysvalikko mukaan samalle riville: $nakyvyydet = new Perusnakyvyys(); $select_maaritteet_nak = array(Attr::name(Koostekontrolleri::$kooste_name_nakyvyys)); $option_maaritteet_nak = array(); $otsikko_nak = Tekstit::$nakyvyys_valikko_otsikko; $nakyvyysvalikko = $nakyvyydet->luo_pudotusvalikko($select_maaritteet_nak, $option_maaritteet_nak, $nakyvyys, $otsikko_nak); $tyyppirivi = Html::luo_tablerivi(Html::luo_tablesolu(Tekstit::$kooste_lomake_tyyppi . ": ", array()) . Html::luo_tablesolu($koostevalikko . " " . $nakyvyysvalikko, array()), array()); // Perustietorivi eli oppiaine, taso ja kieli: $valikko = $this->kokonaisuusnakymat->nayta_tasovalikko($kooste_taso) . " "; $valikko .= $this->kokonaisuusnakymat->nayta_oppiainevalikko($kooste_oppiaine) . " "; //$valikko .= $this->kokonaisuusnakymat->nayta_kielivalikko( // $parametrit->kieli_id); $valikko .= ucfirst(Tekstit::$language) . ": " . Html::luo_b(Kielet::hae_kielen_nimi($kooste_kieli), array()); $perustietorivi = Html::luo_tablerivi(Html::luo_tablesolu(Tekstit::$kooste_lomake_perustiedot . ": ", array()) . Html::luo_tablesolu($valikko, array()), array()); // Organisaatiotunnusrivi: $organisaatiorivi = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for(Koostenakymat::$koostelomake_organkenttaid, Tekstit::$kooste_lomake_organisaatio . ": ", array(Attr::title(Tekstit::$kooste_lomake_organisaatio_title))), array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::name(Koostekontrolleri::$kooste_name_organ_code), Attr::size($tekstikentan_lev), Attr::max_length(20), Attr::id(Koostenakymat::$koostelomake_organkenttaid), Attr::value($organisaatiotunnus))), array()), array()); // rivi // Tulostettava otsikko -rivi: $otsikkorivi = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for(Koostenakymat::$koostelomake_tulost_ots_kenttaid, Tekstit::$kooste_lomake_otsikko . ": ", array()), array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::name(Koostekontrolleri::$kooste_name_otsikko), Attr::size($tekstikentan_lev), Attr::max_length(200), Attr::id(Koostenakymat::$koostelomake_tulost_ots_kenttaid), Attr::value($koosteotsikko))), array()), array(Attr::title(Tekstit::$kooste_lomake_otsikko_title))); // rivi // Selitysrivi: $selitysrivi = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for(Koostenakymat::$koostelomake_selityskenttaid, Tekstit::$kooste_lomake_selitys . ": ", array()), array()) . Html::luo_tablesolu(Html::luo_textarea($selitys, array(Attr::name(Koostekontrolleri::$kooste_name_selitys), Attr::cols($tekstiruudun_lev), Attr::rows(9), Attr::id(Koostenakymat::$koostelomake_selityskenttaid))), array()), array(Attr::title(Tekstit::$kooste_lomake_selitys_title))); // rivi // // Ohje elementtien hakuun (väliteksti): $valiotsikko = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_b(Tekstit::$kooste_lomake_valiots_elementit, array()), array(Attr::colspan(2))), array()); // rivi // Perusvalikot taso, oppiaine ja kieli elementtien etsintään: $tasotiedot = new Koulutasot(); $oppiainetiedot = new Oppiaineet(); $kielitiedot = new Kielet(); // Lähetetään nämä, niin ei tartte js:ssä arvailla: $koostelomakevalinnat_oppiaine_name = Koostekontrolleri::$koostelom_elemval_oppiaine_name; $koostelomakevalinnat_kieli_name = Koostekontrolleri::$koostelom_elemval_kieli_name; $koostelomakevalinnat_taso_name = Koostekontrolleri::$koostelom_elemval_taso_name; // Osa arvoista on valikoille yhteiset, osa ei: $select_maaritteet_taso = array(Attr::onchange("hae_elementit", array(Koostenakymat::$koostelomake_tasovalikkoid, Koostenakymat::$koostelomake_oppiainevalikkoid, Koostenakymat::$koostelomake_kielivalikkoid, Koostekontrolleri::$kooste_name_id, $koostelomakevalinnat_kieli_name, $koostelomakevalinnat_oppiaine_name, $koostelomakevalinnat_taso_name, $kooste_id)), Attr::id(Koostenakymat::$koostelomake_tasovalikkoid)); $select_maaritteet_oppiaine = array(Attr::onchange("hae_elementit", array(Koostenakymat::$koostelomake_tasovalikkoid, Koostenakymat::$koostelomake_oppiainevalikkoid, Koostenakymat::$koostelomake_kielivalikkoid, Koostekontrolleri::$kooste_name_id, $koostelomakevalinnat_kieli_name, $koostelomakevalinnat_oppiaine_name, $koostelomakevalinnat_taso_name, $kooste_id)), Attr::id(Koostenakymat::$koostelomake_oppiainevalikkoid)); $select_maaritteet_kieli = array(Attr::onchange("hae_elementit", array(Koostenakymat::$koostelomake_tasovalikkoid, Koostenakymat::$koostelomake_oppiainevalikkoid, Koostenakymat::$koostelomake_kielivalikkoid, Koostekontrolleri::$kooste_name_id, $koostelomakevalinnat_kieli_name, $koostelomakevalinnat_oppiaine_name, $koostelomakevalinnat_taso_name, $kooste_id)), Attr::id(Koostenakymat::$koostelomake_kielivalikkoid)); $option_maaritteet = array(); $otsikko_tasot = Tekstit::$kokonlomake_koulutaso; $otsikko_aineet = Tekstit::$kokonlomake_oppiaine; $otsikko_kielet = Tekstit::$kielivalikko_otsikko; $tasovalikko = $tasotiedot->luo_pudotusvalikko($select_maaritteet_taso, $option_maaritteet, $valittavat_taso, $otsikko_tasot); $ainevalikko = $oppiainetiedot->luo_pudotusvalikko($select_maaritteet_oppiaine, $option_maaritteet, $valittavat_oppiaine, $otsikko_aineet); $kielivalikko = $kielitiedot->luo_pudotusvalikko($select_maaritteet_kieli, $option_maaritteet, $valittavat_kieli, $otsikko_kielet); $valikko = $tasovalikko . " " . $ainevalikko . " " . $kielivalikko; $valikkorivi = Html::luo_tablerivi(Html::luo_tablesolu($valikko, array(Attr::colspan(3))), array()); // Huom: asetetaan valittavien taso, kieli ja oppiaine sessiotietoihin, // jotta ne muistetaan, ovat määriteltujä ja niihin päästään käsiksi // myöhemminkin: $sessiomuuttujanimi_taso = Parametrit::sessiomuuttujanimi_koostelomake_valittavat_taso(); $sessiomuuttujanimi_kieli = Parametrit::sessiomuuttujanimi_koostelomake_valittavat_kieli(); $sessiomuuttujanimi_oppiaine = Parametrit::sessiomuuttujanimi_koostelomake_valittavat_oppiaine(); $_SESSION[$sessiomuuttujanimi_taso] = $valittavat_taso; $_SESSION[$sessiomuuttujanimi_kieli] = $valittavat_kieli; $_SESSION[$sessiomuuttujanimi_oppiaine] = $valittavat_oppiaine; //====================================================================== // Näytetään elementtilista ja mahdollisesti valitut elementit: $tyhja_taul = array(); /*$elem = Html::luo_tablerivi( Html::luo_tablesolu( // solu 1 Html::luo_table( // Taulu solun 1 sisään Html::luo_tablerivi( Html::luo_tablesolu_otsikko( Tekstit::$kooste_lomake_valittavat_elementit, $tyhja_taul ). Html::luo_tablesolu_otsikko( Tekstit::$kooste_lomake_valitut_elementit, $tyhja_taul ), $tyhja_taul ). Html::luo_tablerivi( Html::luo_tablesolu($elementit, $tyhja_taul). Html::luo_tablesolu( $valitut_koodi, array( Maarite::id( Koostenakymat::$koostelomake_valitut_elem_id) )), $tyhja_taul // rivi ), $tyhja_taul // table inner ), array(Maarite::colspan(3)) // solu 1 ), array() // rivi ); */ $elem = Html::luo_tablerivi(Html::luo_tablesolu_otsikko(Tekstit::$kooste_lomake_valittavat_elementit, array(Attr::colspan(2))), $tyhja_taul) . Html::luo_tablerivi(Html::luo_tablesolu($elementit, array(Attr::colspan(2))), array()); //====================================================================== // Luodaan vielä tallennuspainike: if ($uuden_luominen) { $painike_value = Painikkeet::$kooste_uuden_tallennus_value; $painike_title = Painikkeet::$kooste_uuden_tallennus_title; $form_action = "index.php"; } else { $painike_value = Painikkeet::$kooste_muokkaustallennus_value; $painike_title = Painikkeet::$kooste_muokkaustallennus_title; $form_action = "index.php?" . Koostekontrolleri::$kooste_name_id . "=" . $kooste->get_id(); } $tallennuspainike = Html::luo_input(array(Attr::type("submit"), Attr::value($painike_value), Attr::name(Toimintonimet::$koostetoiminto), Attr::title($painike_title), Attr::classs("btn btn-" . Koostenakymat::$btn_type_summary . " btn-" . Koostenakymat::$btn_size_summary))); if ($uuden_luominen) { $paluupainike = ""; } else { $paluupainike = $this->nayta_painike_paluu_koosteeseen($kooste->get_id(), Elementti::$MUUTTUJAA_EI_MAARITELTY); } $tallennuspainikerivi = Html::luo_tablerivi(Html::luo_tablesolu($tallennuspainike . " " . $paluupainike, array(Attr::colspan(3))), array()); // rivi //====================================================================== $taulukko = Html::luo_table($nimirivi . $tyyppirivi . $perustietorivi . $organisaatiorivi . $otsikkorivi . $selitysrivi . $tallennuspainikerivi . $valikkorivi . $elem, array()); // Tehdään vielä vähän isommaksi, jotta valitut saadaan näkymään // oikealla kuten oikeassa palkissa (oikea palkki on hankala, koska // lomakkeen jakaminen sinne ei oikein onnistunut). $maar_array = array(); $isotaulukko = Html::luo_table(Html::luo_tablerivi(Html::luo_tablesolu($taulukko, array()) . Html::luo_tablesolu($valitut, array(Attr::style("vertical-align: text-top;"))), $maar_array), array()); $sisalto .= $lomakeotsikko . $isotaulukko; $koodi = Html::luo_form($sisalto, array(Attr::classs("koostelomake"), Attr::action($form_action), Attr::method("post"), Attr::onsubmit("tarkista_arvot_kooste", array(Koostenakymat::$koostelomake_nimikenttaid, Tekstit::$kooste_virheilm_syotevika)))); return $koodi; }
/** * Palauttaa lukua eli kieli_indeksiä vastaavan kielen lyhennöksen, tai * tekstin "Tuntematon", jos parametri on sopimaton. * @param <type> $arvo * @return <type> */ public static function hae_kielen_nimi_lyhennos($arvo) { $asetukset = new Kielet(); return $asetukset->hae_nimi_versio2($arvo); }
$parametriolio = new Parametrit($kokoelmanimi, $omaid, $tietokantaolio); // Luodaan Havaintokontrolleri- ja Havaintonakymaluokan oliot: $havaintokontrolleri = new Havaintokontrolleri($tietokantaolio, $parametriolio); $havaintonakymat = new Havaintonakymat($tietokantaolio, $parametriolio); // Samoin lajiluokan jutut: $lajiluokkakontrolleri = new Kontrolleri_lj($tietokantaolio, $parametriolio); $lajiluokkanakymat = new Nakymat_lj(); /**************************************************************************/ // Yleisten toimintomuuttujien arvojen haku/alustus: $perustoiminto = isset($_REQUEST[Bongaustoimintonimet::$perustoiminto]) ? $_REQUEST[Bongaustoimintonimet::$perustoiminto] : ""; $havaintotoiminto = isset($_REQUEST[Bongaustoimintonimet::$havaintotoiminto]) ? $_REQUEST[Bongaustoimintonimet::$havaintotoiminto] : ""; $lajiluokkatoiminto = isset($_REQUEST[Bongaustoimintonimet::$lajiluokkatoiminto]) ? $_REQUEST[Bongaustoimintonimet::$lajiluokkatoiminto] : ""; $kuvatoiminto = isset($_REQUEST[Bongaustoimintonimet::$kuvatoiminto]) ? $_REQUEST[Bongaustoimintonimet::$kuvatoiminto] : ""; $yllapitotoiminto = isset($_REQUEST[Bongaustoimintonimet::$yllapitotoiminto]) ? $_REQUEST[Bongaustoimintonimet::$yllapitotoiminto] : ""; // Tekstien käännös. Kielet::kaanna($parametriolio->kieli_id); // Poistumisnappi $id = Yleisarvoja::$ulosnappiID; $name = Bongaustoimintonimet::$perustoiminto; $value = Bongauspainikkeet::$KIRJAUDU_ULOS_VALUE; $ulosnappi = luo_uloskirjauspainike($id, $name, $value); // Sivun pääsisältö: $sisalto = ""; $tiedot = $kirjautumistieto . ". " . $aikailmoitus; // Käyttäjälle tuleva huomautusviesti: $ilmoitus = ""; $kielivalikko = ""; // Ei vielä mitään. // Toimintojen toteutukset (ainakin metodikutsut, jos toiminto pitkä) if ($perustoiminto != "") { if ($perustoiminto == Bongauspainikkeet::$KIRJAUDU_ULOS_VALUE) {
/** * * @param Palaute $palauteolio * @param Parametrit $parametriolio * @param Koostekontrolleri $koostekontrolleri * @param Tehtavakontrolleri $tehtavakontrolleri * @param Ratkaisukontrolleri $ratkaisukontrolleri * @param Kokonaisuuskontrolleri $kokonaisuuskontrolleri */ function nayta_urlin_mukaan(&$palauteolio, &$parametriolio, &$koostekontrolleri, &$tehtavakontrolleri, &$ratkaisukontrolleri, &$kokonaisuuskontrolleri) { $palauteolio->set_oma(Yleiset_arvot::$toimintaa_ei_maaritelty); $palauteolio->set_naytto_urlin_mukaan(true); // Mietittävää: kielen, oppiaineen ja tason määritykset voisi laittaa // toteuta-metodeiden sisälle, jottei niitä tarvita roskaamaan urlia. // Lähinnä koosteiden kohdalla pitää // miettiä, koska tällä hetkellä kaikki näkyy kaikille, eli siis // niiden näkyvyyttä ei ole rajoitettu kielen, oppiaineen tai tason // perusteella. Mahdollisesti kielen perusteella näin voisi tehdäkin, // vaikka muut jättäisi ennalleen. // Huomaa myös, että urlissa voi olla pelkästään kielen, aineen ja // tason arvot, jolloin pitäisi osata näyttää ensimmäinen vastaava // kokonaisuus. // Otetaan kuitenkin parametrinolion arvo mukaan [, jos se on jokin muu // oletus "kokonaisuus"] (esim kun urlin perusteella tullaan): //if($parametriolio->naytettava != Palaute::$NAYTETTAVA_OLIOTYYPPI_KOKONAISUUS){ $palauteolio->set_naytettava_oliotyyppi(Oliotyyppi::muunna_palauteolion_arvoksi($parametriolio->naytettava)); //} // Alla pitäisi riittää palauteolion arvo. Se ohjaa nykyisin // näytettävää oliota. Muu-arvo (vähän kuin ei-määr) viittaa siihen, // ettei url määritä näytettävää oliota, joten pitää "arvata" se muuten. if ($palauteolio->get_naytettava_oliotyyppi() != Palaute::$NAYTETTAVA_OLIOTYYPPI_MUU) { if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_TEHTAVA) { $tehtavakontrolleri->toteuta_nayta_tehtavat($palauteolio); } else { if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_RATKAISU) { $ratkaisukontrolleri->toteuta_nayta($palauteolio); } else { if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTE) { // Haetaan kooste kieltä, tasoa ja oppiainetta varten: $kooste = $koostekontrolleri->get_olio(); if ($kooste->olio_loytyi_tietokannasta) { $kieli = $kooste->get_arvo(Kooste::$sarakenimi_kieli); $oppiaine = $kooste->get_arvo(Kooste::$sarakenimi_oppiaine); $taso = $kooste->get_arvo(Kooste::$sarakenimi_taso); // Kokonaisuusarvot ohjaavat eniten sovellusta: aseta_kieli_taso_ja_oppiaine($kieli, $oppiaine, $taso, $parametriolio); Kielet::kaanna($kieli); $koostekontrolleri->toteuta_nayta($palauteolio); } else { $koostekontrolleri->toteuta_nayta_koosteet($palauteolio); $palauteolio->set_ilmoitus(Tekstit::$kooste_koostetta_ei_ole_tai_ei_voida_nayttaa); } } else { if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTE_TULOSTUS) { $koostekontrolleri->toteuta_nayta_tulostus($palauteolio); } else { if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTE_ELEMRYHMA) { // Haetaan kooste kieltä, tasoa ja oppiainetta varten: $kooste = $koostekontrolleri->get_olio(); if ($kooste->olio_loytyi_tietokannasta) { $kieli = $kooste->get_arvo(Kooste::$sarakenimi_kieli); $oppiaine = $kooste->get_arvo(Kooste::$sarakenimi_oppiaine); $taso = $kooste->get_arvo(Kooste::$sarakenimi_taso); // Kokonaisuusarvot ohjaavat eniten sovellusta: aseta_kieli_taso_ja_oppiaine($kieli, $oppiaine, $taso, $parametriolio); Kielet::kaanna($kieli); $koostekontrolleri->toteuta_nayta($palauteolio); } else { $koostekontrolleri->toteuta_nayta_koosteet($palauteolio); $palauteolio->set_ilmoitus(Tekstit::$kooste_koostetta_ei_ole_tai_ei_voida_nayttaa); } } else { // default: $kokonaisuuskontrolleri->toteuta_nayta($palauteolio); } } } } } //====================================================================== //====================================================================== // Kun näytettävää oliota ei urlissa, tarkistetaan mahdolliset // id-arvot. Jos jokin määritelty, mennään sinne sitten! } else { // Tarkistetaan, onko kooste-id:tä: if ($parametriolio->kooste_id != Kooste::$MUUTTUJAA_EI_MAARITELTY || $parametriolio->elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) { $nayta_kooste = true; if ($parametriolio->elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) { $nayta_kooste = false; } // Haetaan kooste kieltä, tasoa ja oppiainetta varten: // Huomaa, että ei välttämättä Kooste-olio! $kooste = $koostekontrolleri->get_olio(); if ($kooste instanceof Kooste && $kooste->olio_loytyi_tietokannasta) { $kieli = $kooste->get_arvo(Kooste::$sarakenimi_kieli); $oppiaine = $kooste->get_arvo(Kooste::$sarakenimi_oppiaine); $taso = $kooste->get_arvo(Kooste::$sarakenimi_taso); // Kokonaisuusarvot ohjaavat eniten sovellusta: aseta_kieli_taso_ja_oppiaine($kieli, $oppiaine, $taso, $parametriolio); Kielet::kaanna($kieli); // NÄytetään joko kooste tai elementtiryhmä: if ($nayta_kooste) { $koostekontrolleri->toteuta_nayta($palauteolio); } else { $koostekontrolleri->toteuta_nayta_elementtiryhma($palauteolio); } } else { $koostekontrolleri->toteuta_nayta_koosteet($palauteolio); $palauteolio->set_ilmoitus(Tekstit::$kooste_koostetta_ei_ole_tai_ei_voida_nayttaa); } // Huomaa järjestys: ensin tarkistetaan ratkaisu, sitten teht ja // vasta lopuksi kokonaisuus (jonka id tahtoo kummitella muistissa). } else { if ($parametriolio->id_teht != Tehtava::$MUUTTUJAA_EI_MAARITELTY) { // Näytetään yksi tehtävä: $tehtavakontrolleri->toteuta_nayta($palauteolio); } else { if ($parametriolio->id_ratk != Ratkaisu::$MUUTTUJAA_EI_MAARITELTY) { $ratkaisukontrolleri->toteuta_nayta($palauteolio); } else { if ($parametriolio->id_kokon != Kokonaisuusolio::$kokon_ei_maaritelty) { $kokonaisuuskontrolleri->toteuta_nayta($palauteolio); // Ellei näytettävää oliota, viedään oppiaineen mukaisesti: } else { if ($parametriolio->oppiaine_kokon != Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY) { $kokonaisuuskontrolleri->toteuta_nayta($palauteolio); } else { $kokonaisuuskontrolleri->toteuta_nayta($palauteolio); } } } } } } }
/** * Hakee kaikki yhteen tehtävään liittyvät ratkaisut ja palauttaa ne * kauniisti html-koodina palauteoliossa. * * @param Palaute $palauteolio */ function toteuta_nayta(&$palauteolio) { $parametriolio = $this->get_parametriolio(); $id_kokon = $parametriolio->id_kokon; $id_teht = $parametriolio->id_teht; $omaid = $parametriolio->get_omaid(); $kayttajan_valtuudet = $parametriolio->get_valtuudet(); $tietokantaolio = $parametriolio->get_tietokantaolio(); $kuvakansion_os = Kuvat::$latauskansion_osoite; $paluunappi = ""; /* Palauttaa käyttäjän tehtävänäkymään. */ $ratkaisu_html = ""; $uusi_ratkaisu_nappi = ""; /* */ $tehtavanakymat = new Tehtavanakymat(); /***************************************************************************/ // Haetaan ensin tehtävä, jotta sen voi nähdä samalla: ********************/ $tehtava_html = ""; $teht = new Tehtava($id_teht, $tietokantaolio); if (!$teht->olio_loytyi_tietokannasta) { $tehtava_html = Tekstit::$tehtava_ilm_ei_loytynyt; } else { $tehtava_html .= $tehtavanakymat->tulosta_tehtava_ilman_painikkeita($omaid, $teht); } /**************************************************************************/ // Asetetaan kieli, taso ja oppiaine kokonaisuuden perusteella, kun urlista // tullaan. Ratkaisun avulla löydetään tehtävä ja sen avulla kokonaisuus: if ($palauteolio->naytto_urlin_mukaan()) { $parametriolio->set_naytto_urlin_mukaan(true); // Isäntäkokonaisuus haetaan tietokannasta, jos ratk_id kunnollinen: $ratk = $this->get_olio(); if ($ratk instanceof Ratkaisu && $ratk->olio_loytyi_tietokannasta) { $teht_id = $ratk->getTeht_id(); $teht = new Tehtava($teht_id, $tietokantaolio); if ($teht->olio_loytyi_tietokannasta) { $kokon_id = $teht->getKokon_id(); } // Lopulta päästään käsiksi kokonaisuuteen: $kokon = new Kokonaisuusolio($kokon_id, $tietokantaolio); // Jos löytyi, asetetaan kieli, taso ja oppiaine, jottei tarvita // urlissa: if ($kokon instanceof Kokonaisuusolio && $kokon->olio_loytyi_tietokannasta) { // Asetetaan nämä, voipi olla tarvetta: $parametriolio->id_kokon = $kokon_id; $parametriolio->id_teht = $teht_id; aseta_kieli_taso_ja_oppiaine($kokon->getKieli(), $kokon->getOppiaine(), $kokon->getTaso(), $parametriolio); // Tekstien käännös. Kielet::kaanna($parametriolio->get_kieli_id()); } } } //===================================================================== try { $paluunappi = $this->tehtavanakymat->button_gobackto_all_exercises($id_teht); } catch (Exception $poikkeus) { $tehtava_html .= "Palaa-painike: " . $poikkeus->getMessage(); } // Uusia ratkaisuja saavat tehdä ne, jotka lisätä tehtäviäkin: if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) { // Uusi_ratkaisu_painike: $onsubmit_funktionimi = "nayta_ratkaisulomake"; $onsubmit_parametrit = array($id_teht); /* Tehtävän id */ $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_teht=" . $id_teht . "&id_kokon=" . $id_kokon . "&uusi=1"); $input_maaritteet = array('name' => Toimintonimet::$tehtavatoiminto, 'value' => Painikkeet::$ratkaisu_uusi_value); $uusi_ratkaisu_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } $ratkaisu_html .= $paluunappi . $tehtava_html; $ratkaisu_html .= "<h3>" . Tekstit::$ratkaisu_ratkaisut_valiotsikko . "</h3>"; $ratkaisu_html .= $uusi_ratkaisu_nappi; $ratkaisut = $this->hae_ratkaisut($id_teht); if (empty($ratkaisut)) { $palauteolio->set_ilmoitus(Tekstit::$ratkaisu_ilm_ei_loytynyt); } else { foreach ($ratkaisut as $ratkaisu) { if ($ratkaisu instanceof Ratkaisu) { // Jos on kirjautunut käyttäjä, näytetään väripallolla, onko // yksityinen vai julkinen: if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) { if ($ratkaisu->getNakyvyys() + 0 === Nakyvyys::$YKSITYINEN) { $ratkaisu->setNakyvyysmerkkiPrivate(); } else { $ratkaisu->setNakyvyysmerkkiPublic(); } } $painikkeet = $this->luo_ratkaisupainikkeet($ratkaisu->getId()); $ratkaisu_html .= $this->ratkaisunakymat->tulosta_ratkaisu($id_kokon, $ratkaisu, $omaid, $painikkeet); } else { $this->lisaa_virheilmoitus(Tekstit::$ratkaisu_ilm_ei_loytynyt); } } } /* Tämä ottaa palauteolion samalla käyttöön */ $palauteolio->set_sisalto($ratkaisu_html); $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_RATKAISU); // Kieli- yms valikot pois näkyvistä: $palauteolio->set_valikkonaytto(false); return $palauteolio; }
public function testaa_kuvauksen_muokkaus() { $this->lisaa_testikommentti("<h4>Kuvauksen muokkaustesti alkaa</h4>", false); $this->lisaa_testikommentti("Muokataan ekaa valmista kuvausta (Linnut)", false); $this->muokattava = $this->kuvaukset[0]; //====================================================================== // Testataan ennen muutoksia onTallennuskelpoinen-metodi, jonka // pitäisi valittaa: $this->lisaa_testikommentti("Testataan ennen muutoksia\n onTallennuskelpoinen-metodi, jonka pitaisi valittaa:", false); $uusi = false; if ($this->muokattava->on_tallennuskelpoinen($uusi)) { $this->lisaa_testikommentti("Virhe: muuttumattomia tietoja ei\n ole tarkoitus antaa tallentaa!", true); } else { $this->lisaa_testikommentti("Oikein: muuttumattomia tietoja ei\n tallenneta!", false); } //====================================================================== // ASetetaan kuvaukselle tahallaan vääriä arvoja: $this->muokattava->set_kieli(Kuvaus::$MUUTTUJAA_EI_MAARITELTY); $this->muokattava->set_kuvaus(Kuvaus::$MUUTTUJAA_EI_MAARITELTY); //$this->muokattava->set_lajiluokka("jkljö"); Tätä ei voi muuttaa! $this->muokattava->set_nimi(Kuvaus::$MUUTTUJAA_EI_MAARITELTY); $this->lisaa_testikommentti("Testataan tahallaan vaarien muutosten jalkeen\n onTallennuskelpoinen-metodi, jonka pitaisi valittaa:", false); // tyhjennetään vielä aiemmat virheilmoitukset: $this->muokattava->tyhjenna_virheilmoitukset(); // Virheilmoituksia pitäisi tulla, yksi kustakin arvosta yllä: if ($this->muokattava->on_tallennuskelpoinen(false)) { $this->lisaa_testikommentti("Virhe: virheita livahti ohi\n tarkastuksen!", true); } else { if ($this->muokattava->virheilmoitusten_lkm() == 6) { $this->lisaa_testikommentti("Oikein: Tiedoissa virheita:<br/>" . $this->muokattava->tulosta_virheilmoitukset(), false); } else { $this->lisaa_testikommentti("Virhe: virheita (" . (3 - $this->muokattava->virheilmoitusten_lkm()) . " kpl) livahti ohi\n tarkastuksen! Seuraavat huomattu:<br/>" . $this->muokattava->tulosta_virheilmoitukset(), true); } } //====================================================================== // ASetetaan kuvaukselle hyviä arvoja: $muokattu_kuvaus = "Hurraa Sverige!"; $muokattu_nimi = "Fåglar"; $this->muokattava->set_kieli(Kielet::$RUOTSI); $this->muokattava->set_kuvaus($muokattu_kuvaus); $this->muokattava->set_nimi($muokattu_nimi); $this->lisaa_testikommentti("Testataan hyvien muutosten jalkeen\n onTallennuskelpoinen-metodi, jonka ei pitaisi valittaa:", false); // tyhjennetään vielä aiemmat virheilmoitukset: $this->muokattava->tyhjenna_virheilmoitukset(); // Virheilmoituksia ei pitäisi tulla: if ($this->muokattava->on_tallennuskelpoinen(false)) { $this->lisaa_testikommentti("Oikein! ARvot puhtaita!", false); } else { $this->lisaa_testikommentti("Virhe: Tiedoissa olevinaan virheita:<br/>" . $this->muokattava->tulosta_virheilmoitukset(), false); } //====================================================================== // tyhjennetään vielä aiemmat virheilmoitukset: //$this->muokattava->tyhjenna_virheilmoitukset(); // Kokeillaan sitten tallentaa muuttuneet tiedot: $this->lisaa_testikommentti("Kokeillaan tallentaa muutokset:", false); $tallennuspalaute = $this->muokattava->tallenna_muutokset(); if ($tallennuspalaute == Kuvaus::$OPERAATIO_ONNISTUI) { $this->lisaa_testikommentti("Muutosten tallennus onnistui!", false); // Kokeillaan hakea sama tietokannasta ja varmistetaan, että // muutettu kommentti on todella muuttunut: $testi = new Kuvaus($this->tietokantaolio, $this->muokattava->get_id()); if ($testi->get_kuvaus() == $muokattu_kuvaus && $testi->get_kieli() == Kielet::$RUOTSI && $testi->get_nimi() == $muokattu_nimi) { $this->lisaa_testikommentti("Muutokset oikein tietokannassa!\n Kuvaus on nykyaan: '" . $testi->get_kuvaus() . "', " . "nimi '" . $testi->get_nimi() . "', " . "ja kieli '" . Kielet::hae_kielen_nimi($testi->get_kieli()) . "'", false); } else { $this->lisaa_testikommentti("Muutokset vaarin tietokannassa!\n Kuvaus on nykyaan: '" . $testi->get_kuvaus() . "', " . "nimi '" . $testi->get_nimi() . "', " . "ja kieli '" . Kielet::hae_kielen_nimi($testi->get_kieli()) . "'", true); } // Muutetaan kuvaus alkuperäiseksi, jottei siivous häiriinny: $this->lisaa_testikommentti("Muutetaan kuvaus alkuperaiseksi,\n jotta siivous pysyy kasassa", false); // Huom! Alla käytetään testi-oliota, koska $this->muokattava ei // ole aivan ajan tasalla. $testi->set_kuvaus(Kuvaustestaus::$kuvaus_kuvaus); $tallennus2 = $testi->tallenna_muutokset(); if ($tallennus2 != Kuvaus::$OPERAATIO_ONNISTUI) { $this->lisaa_testikommentti("Virhe alkup. kuvaus-kuvauksen palauttamisessa: " . $tallennus2, true); } } else { $this->lisaa_testikommentti($tallennuspalaute, true); } //====================== Yritetään muuttaa varpus-kuvausta // ruotsinkieliseksi, minkä ei pitäisi onnistua, koska sellainen on jo: $this->lisaa_testikommentti("Yritetaan muuttaa varpus-kuvausta\n ruotsinkieliseksi, minka ei pitaisi onnistua, koska sellainen on jo", false); $varpunen = $this->kuvaus2; $varpunen->set_kieli(Kielet::$RUOTSI); $palaute = $varpunen->tallenna_muutokset(); if ($palaute == Kuvaus::$OPERAATIO_ONNISTUI) { $this->lisaa_testikommentti("Virhe!! Tupla sparv tallennettu!", true); } else { $this->lisaa_testikommentti("Tuplaa ei sallittu (OIKEIN): " . $palaute, false); } //====================================================================== $this->lisaa_testikommentti("<h4>Kuvauksen muokkaustesti loppui</h4>", false); }