Beispiel #1
0
 /**
  * Palauttaa lukua eli vaikeustasoindeksiä vastaavan vaikeustasokuvauksen, tai
  * tekstin "Tuntematon", jos parametri on sopimaton.
  * @param <type> $arvo
  * @return <type>
  */
 public static function hae_vaikeustason_kuvaus($arvo)
 {
     $kuvaus = "Tuntematon";
     // Jos parametri on ok, haetaan vaikeustason nimi. Jos huomataan
     // jotakin outoa, palautetaan virheviesti.
     if (is_numeric($arvo)) {
         try {
             $kuvaukset = Vaikeustasot::hae_vaikeustasokuvaukset();
             $arvot = Vaikeustasot::hae_vaikeustasoarvot();
             $i = 0;
             // Laskuri
             foreach ($arvot as $testiarvo) {
                 if ($arvo == $testiarvo) {
                     $kuvaus = $kuvaukset[$i];
                     break;
                 }
                 $i++;
             }
         } catch (Exception $poikkeus) {
             $kuvaus = $poikkeus->getMessage();
         }
     }
     return $kuvaus;
 }
 function testaa_tehtavan_luominen()
 {
     $teht_ots = "Testiteht 1";
     $this->lisaa_kommentti("Luodaan uusi teht&auml;v&auml; " . $teht_ots);
     $jatkolupa = true;
     if ($this->testihenkilo1 instanceof Henkilo && $this->testihenkilo1->olio_loytyi_tietokannasta) {
         $this->parametriolio->set_omaid($this->testihenkilo1->get_id());
         // Liitetään tehtävä kokonaisuuteen kokon2, joka on olemassa:
         if ($this->kokon2 instanceof Kokonaisuusolio) {
             $palauteolio = $this->luo_testitehtava($this->kokon2->get_id(), $teht_ots);
             $uuden_teht_id = $palauteolio->get_muokatun_id();
         } else {
             $jatkolupa = false;
             $this->lisaa_virheilmoitus("Testikokon kokon2 ei ole kokonaisuusolio.");
         }
         // Tarkistetaan onnistuiko:
         if (!$jatkolupa || $palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
             $this->lisaa_virheilmoitus("Virhe uuden teht&auml;v&auml;n" . " tallennuksessa (php_tehtava_metodit->" . "toteuta_uuden_tehtavan_tallennus)" . $palauteolio->get_ilmoitus());
         } else {
             $this->lisaa_kommentti("Tehtavan luonti ja tallennus ok");
             /************** JUURI TALLENNETUN TEHTÄVÄN HAKU TIETOKANNASTA *************/
             $this->lisaa_kommentti("Haetaan tietokannasta tehtava 'Testitehtava1'");
             $taulu = "tehtavat";
             $taulun_sarake = "otsikko";
             $hakuarvo = $teht_ots;
             $osumat_lkm = $this->tietokantaolio->hae_osumien_lkm($taulu, $taulun_sarake, $hakuarvo);
             // Osumia pitäisi olla tasan yksi, koska alussa poistettiin ylimääräiset.
             // Muuten on tullut jokin virhe.
             if ($osumat_lkm == 1) {
                 $osuma = $this->tietokantaolio->hae_eka_osuma_oliona($taulu, $taulun_sarake, $hakuarvo);
                 $teht = $osuma;
                 $this->lisaa_kommentti("Haku onnistui! Teht&auml;v&auml;n <br/>otsikko on '" . $teht->otsikko . "' , <br/>tehtavananto '" . $teht->tehtavananto . "' ja\n                            <br/>vaikeustaso '" . Vaikeustasot::hae_vaikeustason_kuvaus($teht->vaikeustaso) . "'");
                 // Haetaan vielä tehtävä tietokannasta ja luodaan olio, jota
                 // voidaan hyödyntää täällä:
                 $tehtolio = new Tehtava($uuden_teht_id, $this->tietokantaolio);
                 if ($tehtolio instanceof Tehtava) {
                     $this->teht1 = $tehtolio;
                     $this->lisaa_kommentti("Tehtava asetettu muuttujan" . " teht1 arvoksi ja on siten valmiina käyttöön.");
                 } else {
                     $this->lisaa_virheilmoitus("Virhe tehtavan haussa ja olion" . " luomisessa!");
                 }
             } else {
                 $this->lisaa_virheilmoitus("<div class='virhe'>Virhe tallennetun tehtavan haussa!\n                        Teht&auml;vi&auml; löytyi " . $osumat_lkm . " kpl\n                            (piti olla 1 kpl).</div>");
             }
         }
     } else {
         $this->lisaa_virheilmoitus("Virhe metodissa Testaa_tehtavan_luominen(): " . "testihenkilo1 ei ole kunnollinen olio!");
     }
     $this->lisaa_kommentti("**************************************************************");
 }
Beispiel #3
0
 /**
  * Palauttaa tehtävälomakkeen html:n.
  *
  * @param Parametrit $parametriolio
  * @return <type> Palauttaa lomakkeen html:n
  */
 function nayta_tehtavalomake($parametriolio)
 {
     $id_kokon = $parametriolio->id_kokon;
     $id_teht = $parametriolio->id_teht;
     $omaid = $parametriolio->get_omaid();
     $uusi = $parametriolio->uusi;
     $ilmoitus_teht = $parametriolio->ilmoitus_teht;
     $otsikko_teht = $parametriolio->otsikko_teht;
     $tehtavananto_teht = $parametriolio->tehtavananto_teht;
     $vaikeustaso_teht = $parametriolio->vaikeustaso_teht;
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $nakyvyys = $parametriolio->nakyvyys_teht;
     $kaavakieli = $parametriolio->kaavakieli;
     $elem_id = $parametriolio->elementti_id;
     $mj = "";
     // Lomakkeen html-koodi.
     $esikatselunappi = "<button type='button' " . "onclick='nayta_tehtavan_esikatselu(" . $id_kokon . "," . $id_teht . ")'" . "title='" . Painikkeet::$ESIKATSELU_TITLE . "'/>" . Painikkeet::$ESIKATSELU_VALUE . "</button>";
     // TArkistetaan, onko käyttäjä tulossa koosteesta / elementtiryhmästä
     // ja mahdollistetaan paluu:
     $elem_id = $parametriolio->elementti_id;
     $elemryhma_id = $parametriolio->elemryhma_id;
     $koostetieto = "";
     if ($elem_id != Elementti::$MUUTTUJAA_EI_MAARITELTY) {
         $koostetieto = "&" . Koostekontrolleri::$elementti_name_id . "=" . $elem_id;
     }
     if ($elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) {
         $koostetieto .= "&" . Koostekontrolleri::$elemryhma_name_id . "=" . $elemryhma_id;
     }
     // Haetaan ajantasalla olevat tiedot tietokannasta. Aiemmin
     // tiedot tuotiin kiinteästi painikelomakkeeseen, mutta tällöin
     // kokorajoitus urlissa aiheutti ongelmia. Muutenkin se on huonompi
     // ja turvattomampi tapa.
     // HUOM! Tämä ei auta uuden tehtävän tekemisessä, jos esimerkiksi
     // tarkistus ei mene läpi!
     //
     // Huom2: tämä hakee myös uuden tehtävän tapauksessa edellisen aktiivisen
     // tehtävän tiedot lomakkeeseen. Aika usein tehtävät ovat samantyyppisiä,
     // jolloin tämä helpottaa tekemistä enemmän kuin haittaa..
     if ($id_teht != -1) {
         $taulunimi = "tehtavat";
         $sarakenimi = "id";
         $hakuarvo = $id_teht;
         $tehtava = new Tehtava($id_teht, $tietokantaolio);
         if ($tehtava->olio_loytyi_tietokannasta) {
             if (empty($tehtavananto_teht) && empty($otsikko_teht)) {
                 $otsikko_teht = $tehtava->getOtsikko();
                 $tehtavananto_teht = $tehtava->getTehtavananto();
             }
             $vaikeustaso_teht = $tehtava->getVaikeustaso();
             $nakyvyys = $tehtava->getNakyvyys();
         }
         // Tämä koodaa myös esim. heittomerkit, jolloin
         // ne eivät häiritse html:n seassa.
         $otsikko_teht = htmlspecialchars($otsikko_teht, ENT_QUOTES, "UTF-8", true);
         //htmlentities
         $tehtavananto_teht = htmlspecialchars($tehtavananto_teht, ENT_QUOTES, "UTF-8", true);
     }
     $toiminnan_name_arvo = Toimintonimet::$tehtavatoiminto;
     $otsikon_maxpituus = 1000;
     $tehtavananto_maxpituus = 10000;
     // Ilmoitus otetaan mukaan, jos ei tyhjä:
     if ($ilmoitus_teht != "") {
         $ilmoitus_teht = "<div class='lomakeilmoitus'>" . $ilmoitus_teht . "</div>";
     }
     if ($uusi) {
         $submitnappi = "<input type='submit' " . "name='{$toiminnan_name_arvo}' " . "value='" . Painikkeet::$tehtava_tallenna_uusi_value . "'/>";
         $perunappi = "<input type='submit' " . "name='{$toiminnan_name_arvo}' " . "value='" . Painikkeet::$tehtava_peru_uuden_tallennus_value . "'" . "title='" . Painikkeet::$tehtava_peru_uuden_tallennus_title . "'/>";
     } else {
         $submitnappi = "<input type='submit'\n                    name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$tehtava_tallenna_muokkaus_value . "'/>";
         $perunappi = "<input type='submit'\n                    name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$tehtava_peruminen_value . "'/>";
     }
     // Vaikeustasovalikko:
     $vaikeustaso_html = "";
     try {
         $arvot = Vaikeustasot::hae_vaikeustasoarvot();
         $nimet = Vaikeustasot::hae_vaikeustasokuvaukset();
         $name_arvo = "vaikeustaso_teht";
         $oletusvalinta_arvo = $vaikeustaso_teht;
         $otsikko = "";
         $vaikeustaso_html = Html::luo_pudotusvalikko($arvot, $nimet, $name_arvo, $oletusvalinta_arvo, $otsikko);
     } catch (Exception $poikkeus) {
         $vaikeustaso_html = "Virhe vaikeustasonimiss&auml! (" . $poikkeus->getMessage() . ")";
     }
     $muokattavan_elementin_id = "tehtavateksti";
     $alasvetovalikon_id = "merkit1";
     $tekstityokaluolio = new Tekstityokalupalkki($muokattavan_elementin_id, $alasvetovalikon_id);
     $tekstimuokkauspainikkeet = $tekstityokaluolio->luo_painikkeet(Tekstityokalupalkki::$PERUSPAINIKKEET_JA_MATEMAATTISET, $parametriolio->kaavakieli);
     // Kaavakielivalikko:==================================================
     $kaavakielet = new Kaavakieli();
     $select_maaritteet = array(Attr::onchange("muuta_kaavakieli", array("this.value", Yleiset_arvot::$kaavakieli_name, $muokattavan_elementin_id, $alasvetovalikon_id)));
     $option_maaritteet = array();
     $kaavakielivalikko = $kaavakielet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $kaavakieli, Tekstit::$kaavakieli_otsikko);
     //=====================================================================
     // Näkyvyysvalikko:
     $nakyvyydet = new Nakyvyys();
     $select_maaritteet = array(Attr::name(Tehtavakontrolleri::$tehtava_name_nakyvyys));
     $option_maaritteet = array();
     $otsikko = Tekstit::$nakyvyys_valikko_otsikko;
     $nakyvyysvalikko = $nakyvyydet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $nakyvyys, $otsikko);
     // Sitten palat yhteen:
     $mj = "<form align='left' method='post' id='tehtavalomake' class='lomake'" . "action='index.php" . "?id_teht=" . $id_teht . "&kieli_id=" . $parametriolio->kieli_id . "&taso_kokon=" . $parametriolio->taso_kokon . "&oppiaine_kokon=" . $parametriolio->oppiaine_kokon . "&" . Oliotyyppi::$naytettava_name . "=" . Oliotyyppi::$TEHTAVA . "&id_kokon=" . $id_kokon . "&uusi=" . $uusi . $koostetieto . "#tehtava" . $id_teht . "'/>" . $ilmoitus_teht . "<table summary='uudet_tiedot'>" . "<tr><td colspan=2><b>" . Tekstit::$tehtavalomake_ohje . "</b></td>" . "</tr>" . "<tr><td> " . Tekstit::$tehtavalomake_otsikko . ": </td><td><input type='text'\n            size='80' maxlength='{$otsikon_maxpituus}'" . "name='otsikko_teht' id='otsikkoteksti' value='{$otsikko_teht}'\n            title='" . Tekstit::$tehtavalomake_otsikkotitle . "'/></td>" . "</tr>" . "<tr><td>" . Tekstit::$tehtavalomake_vaikeustaso . ": </td>" . "<td>" . $vaikeustaso_html . $nakyvyysvalikko . $esikatselunappi . "</td>" . "</tr>" . "<tr><td></td>" . "<td>" . $kaavakielivalikko . "</td>" . "</tr>" . "<tr><td></td><td>" . $tekstimuokkauspainikkeet . "</td></tr>" . "<tr><td>" . Tekstit::$tehtavalomake_tehtavananto . ":</td>" . "<td colspan='2'><textarea id='tehtavateksti' cols='85' rows='20'\n            maxlength =" . $tehtavananto_maxpituus . " name='tehtavananto_teht'>" . $tehtavananto_teht . "</textarea></td></tr>" . "<tr><td></td><td align='left'>" . $submitnappi . $perunappi . "</td></tr>" . "</table>" . "</form>";
     return $mj;
 }