Ejemplo n.º 1
0
     $teht->setKokon_id($id_kokon);
     $teht->setId($parametriolio->id_teht);
     $html = $tehtavanakymat->tulosta_esikatselu($omaid, $teht);
     //$html = $teht->tulosta_tehtava($id_kokon, $omaid, $tietokantaolio,
     //                              Valtuudet::$HALLINTA, 1);
     //echo preg_replace('/^\s+|\r\n|\n|\r|kissa||\s+$/m', '', $html);
     echo $output = str_replace(array("\r\n", "\r", "\n"), "", $html);
 } else {
     if ($kysymys == "nayta_ratkaisun_esikatselu") {
         $vastaus = $parametriolio->vastaus_ratk;
         $ratkaisu = $parametriolio->ratkaisu_ratk;
         $id_teht = $parametriolio->id_teht;
         // Luodaan uusi Ratkaisuolio tietojen perusteella:
         $kuvakansion_os = Kuvat::$latauskansion_osoite;
         $tk_ratkaisu = "";
         $ratk = new Ratkaisu(Ratkaisu::$MUUTTUJAA_EI_MAARITELTY, $tietokantaolio);
         // HUOM! Normaali set_arvo-metodi aiheuttaa sitkeät \n -merkit esikatseluun!
         $ratk->set_arvo_kevyt($vastaus, Ratkaisu::$sarakenimi_vastaus);
         $ratk->set_arvo_kevyt($ratkaisu, Ratkaisu::$sarakenimi_ratkaisu);
         $ratk->setTeht_id($id_teht);
         $ratk->setId($parametriolio->id_ratk);
         $html = $ratkaisunakymat->tulosta_esikatselu($id_kokon, $ratk);
         echo $html;
     } else {
         if ($kysymys == "hae_koodi") {
             $oliotyyppi = $parametriolio->naytettava + 0;
             if ($oliotyyppi === Oliotyyppi::$KOKONAISUUS) {
                 $koodi = $kokonaisuuskontrolleri->hae_tiivistelmakoodi();
             } else {
                 if ($oliotyyppi === Oliotyyppi::$TEHTAVA) {
                     $koodi = $tehtavakontrolleri->hae_tehtavakoodi();
Ejemplo n.º 2
0
 /**
  * Palauttaa yhden koostelomakkeessa otsikon "valitut elementit" alla
  * olevan valinnan html-koodin. Valinnalle annetaan id arvoksi vastaavan
  * olion id, jonka eteen on lisatty teksti "elemval_kokon_", "elemval_teht_"
  * tai "elemval_ratk_", jotta oikea olio pystytään löytämään (id:t voivat
  * olla samoja eri olioilla).
  * 
  * HUOM! Jos parametri $divi_tagit_mukaan on arvoltaan false, ei
  * div-tageja liitetä sisällön ympärille. Tätä tarvitaan, kun ajaxin kautta
  * tuodaan koodia sisään.
  * 
  * 
  * @param type $oliotyyppi
  * @param type $id_olio
  * @param type $divi_tagit_mukaan
  * @param Tietokantaolio $tietokantaolio
  * @return type
  */
 public function luo_valitut_elem_divi($oliotyyppi, $id_olio, $divi_tagit_mukaan, $tietokantaolio)
 {
     // Every div containing a choice has this same class value:
     $class_name = "chosen_elements_div";
     if ($oliotyyppi + 0 === Oliotyyppi::$KOKONAISUUS) {
         $olio = new Kokonaisuusolio($id_olio, $tietokantaolio);
         $otsikko = Tekstit::$Kokonaisuus_short . " " . $olio->getOtsikko();
     } else {
         if ($oliotyyppi + 0 === Oliotyyppi::$TEHTAVA) {
             $olio = new Tehtava($id_olio, $tietokantaolio);
             $otsikko = Tekstit::$Tehtava_short . ": " . $olio->getOtsikko();
         } else {
             if ($oliotyyppi + 0 === Oliotyyppi::$RATKAISU) {
                 $olio = new Ratkaisu($id_olio, $tietokantaolio);
                 $otsikko = Tekstit::$Ratkaisu_short . " :" . $olio->getVastaus();
             } else {
                 $otsikko = Tekstit::$tuntematon;
                 $olio = null;
             }
         }
     }
     $valittuelem_id = $this->luo_valitun_elementin_id($olio);
     $valittuelem_valintaruutu = $this->luo_valittujen_elem_listan_valintaruutu($olio);
     if ($divi_tagit_mukaan) {
         $palaute = Html::luo_div($otsikko . $valittuelem_valintaruutu, array(Attr::id($valittuelem_id), Attr::classs($class_name), Attr::onclick("kooste_set_elem_place", array($valittuelem_id))));
     } else {
         $palaute = $otsikko . $valittuelem_valintaruutu;
     }
     return $palaute;
 }
Ejemplo n.º 3
0
 /**
  * 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;
 }
Ejemplo n.º 4
0
 /**
  * Palauttaa ratkaisulomakkeen html-koodin.
  * @param Parametrit $parametriolio
  * @return string
  */
 function nayta_ratkaisulomake($parametriolio)
 {
     $id_kokon = $parametriolio->id_kokon;
     $id_teht = $parametriolio->id_teht;
     $id_ratk = $parametriolio->id_ratk;
     $omaid = $parametriolio->get_omaid();
     $uusi = $parametriolio->uusi;
     $ilmoitus_ratk = $parametriolio->ilmoitus_ratk;
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $kaavakieli = $parametriolio->kaavakieli;
     $nakyvyys_ratk = $parametriolio->nakyvyys_ratk;
     $mj = "";
     // Lomakkeen html-koodi.
     $tehtavanakymat = new Tehtavanakymat();
     // Tarpeen matkan varrella.
     // 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 ensin tehtävä, jotta sen voi nähdä samalla: *****************/
     $tehtava_html = "";
     /* Haetaan tehtävä: */
     $tehtava = new Tehtava($id_teht, $tietokantaolio);
     if (!$tehtava->olio_loytyi_tietokannasta) {
         $tehtava_html = Tekstit::$tehtava_ilm_ei_loytynyt;
     } else {
         $tehtava_html .= $tehtavanakymat->tulosta_tehtava_ilman_painikkeita($omaid, $tehtava);
     }
     /**************************************************************************/
     $esikatselunappi = "<button type='button' " . "onclick='nayta_ratkaisun_esikatselu(" . $id_kokon . "," . $id_teht . "," . $id_ratk . ")'" . "title='" . Painikkeet::$ESIKATSELU_TITLE . "'/>" . Painikkeet::$ESIKATSELU_VALUE . "</button>";
     // 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.
     $ratkaisu = new Ratkaisu($id_ratk, $tietokantaolio);
     // Pyritään tekemään niin, että vastauksen ollessa tyhjä ei
     // kirjoitettu vastaus kuitenkaan häviä..
     if ($ratkaisu->olio_loytyi_tietokannasta) {
         if (empty($parametriolio->ratkaisu_ratk)) {
             $vastaus_ratk = $ratkaisu->getVastaus();
             $ratkaisu_ratk = $ratkaisu->getRatkaisu();
         } else {
             $vastaus_ratk = $parametriolio->vastaus_ratk;
             $ratkaisu_ratk = $parametriolio->ratkaisu_ratk;
         }
         $nakyvyys_ratk = $ratkaisu->getNakyvyys();
     } else {
         if (empty($parametriolio->ratkaisu_ratk)) {
             $vastaus_ratk = "";
             $ratkaisu_ratk = $tehtava->getTehtavananto();
         } else {
             // Jos tietoja syötetty (esim. virhesyöte):
             $vastaus_ratk = $parametriolio->vastaus_ratk;
             $ratkaisu_ratk = $parametriolio->ratkaisu_ratk;
         }
     }
     // Siivotaan kenot ja varmistetaan tagien yms oikea näyttötapa:
     $vastaus_ratk = htmlspecialchars($vastaus_ratk, ENT_QUOTES, "UTF-8", true);
     $ratkaisu_ratk = htmlspecialchars($ratkaisu_ratk, ENT_QUOTES, "UTF-8", true);
     // Kaavakielivalikko:==================================================
     $kaavakielet = new Kaavakieli();
     $select_maaritteet = array(Attr::onchange("muuta_kaavakieli", array("this.value", Yleiset_arvot::$kaavakieli_name)));
     $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(Ratkaisukontrolleri::$ratkaisu_name_nakyvyys));
     $option_maaritteet = array();
     $otsikko = "";
     $nakyvyysvalikko = $nakyvyydet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $nakyvyys_ratk, $otsikko);
     //=====================================================================
     $vastaus_maxpituus = 1000;
     $ratkaisu_maxpituus = 10000;
     $toiminnan_name_arvo = Toimintonimet::$tehtavatoiminto;
     // Ilmoitus otetaan mukaan, jos ei tyhjä:
     if ($ilmoitus_ratk != "") {
         $ilmoitus_ratk = "<div class='lomakeilmoitus'>" . $ilmoitus_ratk . "</div>";
     }
     if ($uusi) {
         $submitnappi = "<input type='submit'\n            name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$ratkaisu_tallenna_uusi_value . "'/>";
         $perunappi = "<input type='submit'\n                    name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$ratkaisu_peru_uuden_tallennus_value . "'" . "title='" . Painikkeet::$ratkaisu_peru_uuden_tallennus_title . "'/>";
     } else {
         $submitnappi = "<input type='submit'\n            name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$ratkaisu_tallenna_muokkaus_value . "'/>";
         $perunappi = "<input type='submit'\n                    name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$ratkaisu_peruminen_value . "'/>";
     }
     $muokattavan_elementin_id = "ratkaisuteksti";
     $alasvetovalikon_id = "merkit1";
     $tekstityokaluolio = new Tekstityokalupalkki($muokattavan_elementin_id, $alasvetovalikon_id);
     $tekstimuokkauspainikkeet = $tekstityokaluolio->luo_painikkeet(Tekstityokalupalkki::$PERUSPAINIKKEET_JA_MATEMAATTISET, $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);
     //=====================================================================
     //======================================================================
     // Sitten palat yhteen:
     $mj = $tehtava_html . "<form align='left' method='post' id='ratkaisulomake' class='lomake'" . "action='index.php?" . "id_ratk=" . $id_ratk . "&id_teht=" . $id_teht . "&id_kokon=" . $id_kokon . "&uusi=" . $uusi . $koostetieto . "'/>" . $ilmoitus_ratk . "<table summary='uudet_tiedot'>" . "<tr><td colspan=2><b>" . Tekstit::$ratkaisulomake_ohje . " " . $esikatselunappi . "</b></td>" . "</tr>" . "<tr><td>" . Tekstit::$ratkaisulomake_vastaus . ": </td><td><input type='text'\n            size='80' maxlength='{$vastaus_maxpituus}' id='vastausteksti'" . "name='vastaus_ratk' value='{$vastaus_ratk}'\n            title='" . Tekstit::$ratkaisulomake_vastaustitle . "'/></td>" . "</tr>" . "<tr><td>" . Tekstit::$nakyvyys_valikko_otsikko . "</td><td>" . $nakyvyysvalikko . "</td>" . "</tr>" . "<tr><td></td>" . "<td>" . $kaavakielivalikko . "</td>" . "</tr>" . "<tr><td></td><td>" . $tekstimuokkauspainikkeet . "</td></tr>" . "<tr><td>" . Tekstit::$ratkaisulomake_ratkaisu . ":</td>" . "<td colspan='2'><textarea id='ratkaisuteksti' cols='80' rows='20'\n            maxlength = {$ratkaisu_maxpituus}\n            name='ratkaisu_ratk'>{$ratkaisu_ratk}" . "</textarea></td></tr>" . "<tr><td></td><td align='left'>" . $submitnappi . $perunappi . "</td></tr>" . "</table>" . "</form>";
     return $mj;
 }
Ejemplo n.º 5
0
 public function hae_ratkaisukoodi()
 {
     $sulkemisnappi = "<button onclick='sulje_esikatselu()' title='" . Painikkeet::$KOODIKATSELU_SULJE_TITLE . "'>" . Painikkeet::$KOODIKATSELU_SULJE_VALUE . "</button>";
     $koodi = Html::luo_div($sulkemisnappi, array(Attr::style("text-align: center")));
     $id = $this->get_parametriolio()->id_ratk;
     $ratk = new Ratkaisu($id, $this->get_tietokantaolio());
     if ($ratk->olio_loytyi_tietokannasta) {
         $koodi .= nl2br(htmlspecialchars($ratk->getVastaus())) . "<br/>" . nl2br(htmlspecialchars($ratk->getRatkaisu()));
     } else {
         $koodi .= Tekstit::$ratkaisu_ilm_ei_loytynyt;
     }
     return $koodi;
 }
Ejemplo n.º 6
0
 /**
 * Luo testiratkaisun ja palauttaa Ratkaisu-luokan olion, tai arvon
 * Pohja::$VIRHE.
 * 
 * create table ratkaisut
     (
    id                    mediumint auto_increment not null,
    tehtava_id              mediumint not null,
    henkilo_id		smallint not null,
    luomishetki_sek       int not null,
    ed_muutos_sek         int not null,
    vastaus               varchar(1000),
    ratkaisu              varchar(10000) not null,
    primary key (id),
    index(tehtava_id),
    FOREIGN KEY (tehtava_id) REFERENCES tehtavat (id)
                    ON DELETE CASCADE
     ) ENGINE=INNODB; 
 * 
 * @param type $parametriolio
 */
 private function luo_testiratkaisu()
 {
     $jatkolupa = false;
     $palaute = Pohja::$VIRHE;
     $ratkaisukontrolleri = new Ratkaisukontrolleri($this->tietokantaolio, $this->parametriolio);
     // Luodaan ensin testikokonaisuus:
     $this->parametriolio->set_omaid($this->testihenkilo->get_id());
     $palauteolio_kokon = $this->kok_teht_ratk_testiolio->luo_testikokonaisuus("Otsikko", "Testikokonaisuus", -1);
     if (!$palauteolio_kokon->operaatio_onnistui()) {
         $this->lisaa_virheilmoitus("Testikokonaisuuden luominen epäonnistui!" . " <br/>" . $palauteolio_kokon->get_ilmoitus());
     } else {
         $this->testikokonaisuus = new Kokonaisuusolio($palauteolio_kokon->get_muokatun_id(), $this->tietokantaolio);
         if ($this->testikokonaisuus->olio_loytyi_tietokannasta) {
             $this->lisaa_kommentti("Testikokonaisuuden luominen ok ");
             // Luodaan testitehtava:
             $palauteolio_teht = $this->kok_teht_ratk_testiolio->luo_testitehtava($palauteolio_kokon->get_muokatun_id(), "TEstitehtava on tama kiva!");
             if (!$palauteolio_teht->operaatio_onnistui()) {
                 $this->lisaa_virheilmoitus("Testitehtavan luominen epäonnistui!" . " Ilmoitukset: " . $palauteolio_teht->get_ilmoitus());
             } else {
                 $this->lisaa_kommentti("Testitehtavän luominen ok");
                 $jatkolupa = true;
             }
         } else {
             $this->lisaa_virheilmoitus("Kokon_oliota ei löytynyt tietokannasta!");
         }
     }
     /************** UUDEN RATKAISUN TALLENNUS *********************************/
     if ($jatkolupa) {
         $parametriolio = $this->parametriolio;
         $palaute = Pohja::$VIRHE;
         $id_kokon = -1;
         // haetaan tietokannasta tehtävä, johon ratkaisu voidaan liittää:
         $id_teht = $palauteolio_teht->get_muokatun_id();
         $osuma = new Tehtava($id_teht, $this->tietokantaolio);
         if ($osuma->olio_loytyi_tietokannasta) {
             $this->lisaa_kommentti("Luodaan sitten testiratkaisu.");
             $parametriolio->id_teht = $id_teht;
             $parametriolio->vastaus_ratk = "Vastaus";
             $parametriolio->ratkaisu_ratk = Kayttajatestaus::$testi_ratkaisu;
             // Laitetaan ratkaisun luojaksi testiomistaja
             $parametriolio->set_omaid($this->testiomistaja->get_id());
             // Satunnainen id.
             $palauteolio = new Palaute();
             $ratkaisukontrolleri->toteuta_tallenna_uusi($palauteolio);
             $tallennettu = new Ratkaisu($palauteolio->get_muokatun_id(), $this->tietokantaolio);
             if ($tallennettu->olio_loytyi_tietokannasta) {
                 $this->lisaa_kommentti("Ratkaisun tallennus ok (omistaja testiomistaja)!! Ratkaisu = " . $tallennettu->getRatkaisu());
             } else {
                 $this->lisaa_virheilmoitus("Ratkaisun tallennus ei ok!!");
             }
             // Tarkistetaan onnistuiko:
             if (!$palauteolio->operaatio_onnistui()) {
                 $this->lisaa_virheilmoitus("<div class='virhe'>Virhe uuden ratkaisun" . " tallennuksessa (Kayttajatestaus-" . "toteuta_uuden_ratkaisun_tallennus) </div>" . $ratkaisukontrolleri->tulosta_virheilmoitukset() . $palauteolio->get_ilmoitus());
             } else {
                 // haetaan tietokannasta:
                 $id = $palauteolio->get_muokatun_id();
                 $ratk = new Ratkaisu($id, $this->tietokantaolio);
                 if ($ratk->olio_loytyi_tietokannasta) {
                     $palaute = $ratk;
                 } else {
                     $this->lisaa_virheilmoitus("Testiratkaisua ei löytynyt tietokannasta!");
                 }
             }
         } else {
             $this->lisaa_virheilmoitus("Yhtään tehtävää ei löytynyt! Luo yksi ensin!");
         }
     }
     return $palaute;
 }