/**
  * Toteuttaa nimenmukaisen toiminnon. Palauttaa palauteolion, mutta
  * huomaa, että se ei sisällä kokonaista html-sivua, vaan vain
  * pikakommenttilaatikon (div).
  *
  * @param <type> $max_lkm
  * @param <type> $kohde_id
  * @param <type> $max_lkm
  * @return Palauteolio $palauteolio
  */
 public function toteuta_nayta_pikakommentit($kohde_tyyppi, $kohde_id, $max_lkm)
 {
     $html = "";
     // Palautettava.
     $omaid = $this->parametriolio->omaid;
     // Haetaan tietokannasta kyseisen kohteen pikakommentit:
     $hakulause = "SELECT " . Pikakommentti::$SARAKENIMI_ID . ", henkilo_id\n                        FROM pikakommentit\n                        WHERE kohde_tyyppi={$kohde_tyyppi}\n                        AND kohde_id={$kohde_id}\n                        LIMIT {$max_lkm}";
     $osumat_kaikki = $this->tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause);
     //============= SUODATUS ALKU ==========================================
     $osumat = array();
     $suodattimet = Suodatin::hae_suodattimet($omaid, $this->tietokantaolio);
     foreach ($osumat_kaikki as $osuma) {
         $henkilo_id = $osuma->henkilo_id;
         if (!Suodatin::henkilo_suodatetaan_kevyt($henkilo_id, $omaid, $suodattimet)) {
             array_push($osumat, $osuma);
         }
     }
     //============= SUODATUS LOPPU =========================================
     if (!empty($osumat)) {
         foreach ($osumat as $pk_olio) {
             $pk = new Pikakommentti($this->tietokantaolio, $pk_olio->id);
             $html .= $pk->nayta_pikakommentti($this->parametriolio->omaid, $this->parametriolio->get_kayttajan_valtuudet());
         }
     } else {
         // Ellei kommentteja löytynyt:
         $html .= Pikakommenttitekstit::$ilmoitus_pikakommentteja_ei_loytynyt;
     }
     // Lisätään vielä tallennuspainike ja tekstinsyöttökenttä:
     $tallennuspainike = "<button type='button' id=" . Pikakommentti::$TALLENNUSPAINIKKEEN_ID . " onclick=" . "'tallenna_uusi_pikakommentti(" . $kohde_tyyppi . "," . $kohde_id . ")'" . "title='" . Pikakommenttitekstit::$tallenna_uusi_pikakommentti_title . "'>" . Pikakommenttitekstit::$tallenna_uusi_pikakommentti_value . "</button>";
     $html .= Nakyma_pikakommentit::nayta_pikakommenttilomake($tallennuspainike);
     // Paketoidaan yksittäiset yhteen taulukkoon. Tarvitaan myös
     // painike poistumiseen.
     $painikkeet = "<button type='button' onclick=" . "'piilota_pikakommentit()'title='" . Pikakommenttitekstit::$pikakommentit_sulje_title . "'>" . Pikakommenttitekstit::$pikakommentit_sulje_value . "</button>";
     $html = Nakyma_pikakommentit::nayta_pikakommentit($html, $painikkeet);
     $this->palauteolio->set_sisalto($html);
     return $this->palauteolio;
 }
Ejemplo n.º 2
0
/**
 * Edellisen yleistetty ja hiukan muokattu versio.
 * Palauttaa Palaute-olion, jonka sisältönä on ne oliot (kokonaisuudet/
 * tehtävät/ratkaisut/tms), johon parametri 'naytettava' viittaa (Oliotyyppi-
 * luokan arvoja). 
 * 
 * @param Parametrit $parametriolio
 * @return Palaute $palauteolio
 */
function toteuta_nayta_oliot2($parametriolio)
{
    $kohde = $parametriolio->naytettava;
    $id_kokon = $parametriolio->id_kokon;
    $oppiaine_kokon = $parametriolio->oppiaine_kokon;
    $taso_kokon = $parametriolio->taso_kokon;
    $id_teht = $parametriolio->id_teht;
    $tietokantaolio = $parametriolio->get_tietokantaolio();
    $kayttajan_valtuudet = $parametriolio->get_valtuudet();
    $kieli_id = $parametriolio->kieli_id;
    $omaid = $parametriolio->get_omaid();
    $kokonaisuuskontrolleri = new Kokonaisuuskontrolleri($tietokantaolio, $parametriolio);
    $tehtavakontrolleri = new Tehtavakontrolleri($tietokantaolio, $parametriolio);
    $ratkaisukontrolleri = new Ratkaisukontrolleri($tietokantaolio, $parametriolio);
    $palauteolio = new Palaute();
    $nayta_valikot = false;
    $selitys_auki = Kokonaisuusolio::$SELITYS_KIINNI_ID;
    /* Palautetaan kohteen mukainen näkymä: */
    if ($kohde == Oliotyyppi::$KOKONAISUUS) {
        // Selityksen näyttämisen voisi jotenkin mahdollistaa tarvittaessa.
        $kokonaisuuskontrolleri->toteuta_nayta($palauteolio);
        $nayta_valikot = true;
        $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_KOKONAISUUS);
    } else {
        if ($kohde == Oliotyyppi::$TEHTAVA) {
            $tehtavakontrolleri->toteuta_nayta_tehtavat($palauteolio);
            $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_TEHTAVA);
        } else {
            if ($kohde == Oliotyyppi::$RATKAISU) {
                $ratkaisukontrolleri->toteuta_nayta($palauteolio);
                $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_RATKAISU);
            } else {
                $kokonaisuuskontrolleri->toteuta_nayta($palauteolio);
                $nayta_valikot = true;
                $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_KOKONAISUUS);
                $palauteolio->set_ilmoitus("Tuntematon kohde (parametriolio->naytettava)!");
            }
        }
    }
    $palauteolio->set_valikkonaytto($nayta_valikot);
    return $palauteolio;
}
Ejemplo n.º 3
0
 /**
  * @param string $id_raaka Id value of the element (like teht_43)
  * @param Parametrit $parametriolio
  * @param Tehtavanakymat $tehtavanakymat
  * @param Kokonaisuusnakymat $kokonnakymat
  */
 function show_element_preview($id_raaka, $parametriolio, $tehtavanakymat, $kokonnakymat)
 {
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $omaid = $parametriolio->get_omaid();
     // Let's find out the type of element:
     $type = Elementti::irrota_elem_olion_tyyppi($id_raaka);
     // Let's find out the id of the original object:
     $id = Elementti::irrota_elem_olion_id($id_raaka);
     if ($type === Oliotyyppi::$TEHTAVA) {
         // Luodaan uusi Tehtäväolio tietojen perusteella:
         $teht = new Tehtava($id, $tietokantaolio);
         $html = $tehtavanakymat->tulosta_esikatselu($omaid, $teht);
     } else {
         if ($type === Oliotyyppi::$KOKONAISUUS) {
             $kokon = new Kokonaisuusolio($id, $tietokantaolio);
             $html = $kokonnakymat->tulosta_esikatselu($kokon, $parametriolio);
         } else {
             $html = "Unknown type=" . $type . " and id=" . $id;
         }
     }
     //echo $output = str_replace(array("\r\n", "\r", "\n"), "", $html);
     return $html;
 }
Ejemplo n.º 4
0
 /**
  * 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;
 }
Ejemplo n.º 5
0
 /**
  * Palauttaa koodi, joka luo lomakkeen, jonka avulla voi muokata omaa
  * salasanaa ja muita tietoja. 
  * 
  * @param Parametrit $parametriolio 
  * @param type $uusi jos true, niin kyseessä uuden henkilön luominen.
  * @return type
  */
 function nayta_henkilotietolomake(&$parametriolio, $uusi)
 {
     /*$puh = $parametriolio->puhelin;
       $os = $parametriolio->osoite;
       $asuinmaa = $parametriolio->asuinmaa;
       $kieli = $parametriolio->kieli_henkilo;*/
     $tahti_molemmissa = "*";
     $tahti_vain_uudessa = "";
     $otsikko = Html::luo_b(Kayttajatekstit::henkilolomakeotsikko_muokkaus(), array());
     $tallennuspainike = Html::luo_input(array(Attr::type("submit"), Attr::name(Toimintonimet::$henkilotietotoiminto), Attr::value(Kayttajatekstit::$nappi_tallenna_tietomuutokset_value), Attr::title(Kayttajatekstit::$nappi_tallenna_tietomuutokset_title), Attr::classs("rinnakkain")));
     if ($uusi) {
         $etun = $parametriolio->etun;
         $sukun = $parametriolio->sukun;
         $lempin = $parametriolio->lempin;
         $komm = $parametriolio->komm;
         $uusktunnus = $parametriolio->uusktunnus;
         $eosoite = $parametriolio->eosoite;
         $name = Toimintonimet::$henkilotietotoiminto;
         $tahti_vain_uudessa = "*";
         $tallennuspainike = Html::luo_input(array(Attr::type("submit"), Attr::name(Toimintonimet::$henkilotietotoiminto), Attr::value(Kayttajatekstit::$nappi_henkilo_tallenna_uusi_value), Attr::title(Kayttajatekstit::$nappi_henkilo_tallenna_uusi_title), Attr::classs("rinnakkain")));
         $otsikko = Kayttajatekstit::henkilolomakeotsikko_uusi();
     } else {
         // Haetaan tiedot tietokannasta:
         $user = new Henkilo($parametriolio->get_omaid(), $parametriolio->get_tietokantaolio());
         if ($user->olio_loytyi_tietokannasta) {
             $etun = $user->get_arvo(Henkilo::$sarakenimi_etunimi);
             $sukun = $user->get_arvo(Henkilo::$sarakenimi_sukunimi);
             $lempin = $user->get_arvo(Henkilo::$sarakenimi_lempinimi);
             $komm = $user->get_arvo(Henkilo::$sarakenimi_kommentti);
             $uusktunnus = $parametriolio->uusktunnus;
             $eosoite = $user->get_arvo(Henkilo::$sarakenimi_eosoite);
             $name = Toimintonimet::$henkilotietotoiminto;
         } else {
             $this->lisaa_virheilmoitus(Tekstit::$virheilm_henkiloa_ei_loytynyt);
         }
     }
     $otsikko .= Html::luo_p(Kayttajatekstit::henkilolomake_nakyvyysselitys(), array(Attr::style("font-size: 80%")));
     $mj = $otsikko;
     // Ilmoitukset:
     $mj .= Html::luo_div($parametriolio->ilmoitus_kokon, array(Attr::id(Kayttajanakymat::$id_henkilotietolomakeilmoitukset), Attr::classs("korostus")));
     $mj .= Html::luo_table(Html::luo_tablerivi(Html::luo_tablesolu("*" . Kayttajatekstit::$lomakekentta_etunimi, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("text"), Attr::name(Kayttajakontrolleri::$name_etunimi), Attr::value($etun), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu("*" . Kayttajatekstit::$lomakekentta_sukunimi, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("text"), Attr::name(Kayttajakontrolleri::$name_sukunimi), Attr::value($sukun), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu(Kayttajatekstit::$lomakekentta_lempinimi, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("text"), Attr::name(Kayttajakontrolleri::$name_lempinimi), Attr::value($lempin), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu(Kayttajatekstit::$lomakekentta_kuvaus_itsesta, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("text"), Attr::name(Kayttajakontrolleri::$name_kommentti), Attr::value($komm), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu("*" . Kayttajatekstit::$lomakekentta_email, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("text"), Attr::name(Kayttajakontrolleri::$name_eosoite), Attr::value($eosoite), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu($tahti_vain_uudessa . Kayttajatekstit::$lomakekentta_kayttajatunnus, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("text"), Attr::name(Kayttajakontrolleri::$name_uusikayttajatunnus), Attr::value(""), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu($tahti_vain_uudessa . Kayttajatekstit::$lomakekentta_salasana, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("password"), Attr::name(Kayttajakontrolleri::$name_uusisalasana), Attr::value(""), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu($tahti_vain_uudessa . Kayttajatekstit::$lomakekentta_salasana_vahvistus, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("password"), Attr::name(Kayttajakontrolleri::$name_salasanavahvistus), Attr::value(""), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu("", array()) . Html::luo_tablesolu($tallennuspainike . Html::luo_input(array(Attr::type("submit"), Attr::name(Toimintonimet::$henkilotietotoiminto), Attr::value(Kayttajatekstit::$nappi_poistu_tiedoista_value), Attr::title(Kayttajatekstit::$nappi_poistu_tiedoista_title), Attr::classs("rinnakkain"))), array()), array()), array(Attr::summary("Muokkaustiedot"), Attr::align("center")));
     $lomake = Html::luo_form($mj, array(Attr::action("index.php"), Attr::method("post"), Attr::classs("tietolomake_rajaton")));
     return $lomake;
 }
/**
 * Toteuttaa :
 * @param Parametrit $parametriolio
 * @return Palaute $palauteolio
 */
function toteuta_nayta_valtuustaulukko($parametriolio)
{
    $palauteolio = new Palaute();
    $ilmoitus = Tekstit::$ilm_nayta_valtuudet;
    $sisalto = nayta_valtuuslomake($parametriolio->get_tietokantaolio());
    $palauteolio->set_sisalto($sisalto);
    $palauteolio->set_ilmoitus($ilmoitus);
    return $palauteolio;
}
Ejemplo n.º 7
0
 /**
  * Palauttaa html-linkkejä, jotka vievät kyseiseen tehtävään. Nämä
  * on tarkoitus sijoittaa tehtäväsivulle, jotta tehtävien selaaminen helpottuu.
  * 
  * @param Parametrit $parametriolio
  * @return <type>
  */
 function hae_tehtavalinkit($parametriolio)
 {
     $tehtavalinkki_html = "";
     $id_kokon = $parametriolio->id_kokon;
     /* Haetaan tehtävät: */
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $tehtavat = $this->hae_tehtavat();
     if (empty($tehtavat)) {
         // Jos muutat tätä, ota huomioon myös vastaanottava metodi.
         $tehtavalinkki_html = Tekstit::$tehtava_ilm_ei_loytynyt;
     } else {
         $laskuri = 1;
         // Kertoo tehtävän juoksevan numeron (juokseva nro).
         $pituus = 25;
         // Linkin suurin pituus (ylimenevä osa katkaistaan)
         foreach ($tehtavat as $tehtava) {
             /*$tehtavalinkki_html .= "<a href='index.php".
                   "?id_kokon=".$id_kokon.
                   "&kieli_id=".$parametriolio->kieli_id.
                   "&taso_kokon=".$parametriolio->taso_kokon.
                   "&oppiaine_kokon=".$parametriolio->oppiaine_kokon.
                   "&id_teht=".$tehtava->getId().
                   "&".Oliotyyppi::$naytettava_name."=".
                   Palaute::$NAYTETTAVA_OLIOTYYPPI_TEHTAVA.
                   "#tehtava".$tehtava->getId()."' ".
               "title='".$tehtava->getOtsikko()."'>".
               $laskuri.". ".
                   Yleismetodit::leikkaa_merkkijono($tehtava->getOtsikko(), $pituus).
               "</a>";*/
             $tehtavalinkki_html .= "<a href='index.php" . "?id_teht=" . $tehtava->getId() . "#tehtava" . $tehtava->getId() . "' " . "title='" . $tehtava->getOtsikko() . "'>" . $laskuri . ". " . Yleismetodit::leikkaa_merkkijono($tehtava->getOtsikko(), $pituus) . "</a>";
             $laskuri++;
         }
     }
     return $tehtavalinkki_html;
 }
Ejemplo n.º 8
0
/**
 * Toteuttaa uuden havainnon tallentamisen.
 *
 * @param Parametrit $parametriolio
 * @return Palaute $palauteolio
 */
function toteuta_havainnon_kopiointi($parametriolio)
{
    $tietokantaolio = $parametriolio->tietokantaolio;
    // Haetaan vanhan havainnon tiedot:
    $id_hav = $parametriolio->id_hav;
    $taulunimi = "bhavainnot";
    $sarakenimi = "id";
    $hakuarvo = $id_hav;
    $havainto_tkanta = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
    // Jos entinen havainto löytyy:
    if ($havainto_tkanta != Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
        $parametriolio->lajiluokka_id_hav = $havainto_tkanta->lajiluokka_id;
        $parametriolio->paiva_hav = $havainto_tkanta->paiva;
        $parametriolio->kk_hav = $havainto_tkanta->kk;
        $parametriolio->vuosi_hav = $havainto_tkanta->vuosi;
        $parametriolio->paikka_hav = $havainto_tkanta->paikka;
        $parametriolio->kommentti_hav = $havainto_tkanta->kommentti;
        $parametriolio->maa_hav = $havainto_tkanta->maa;
        $parametriolio->set_on_kopio(true);
        $palauteolio = toteuta_uuden_havainnon_tallennus($parametriolio);
    } else {
        $palauteolio = new Palaute();
        $palauteolio->set_ilmoitus(Bongaustekstit::$havaintoa_ei_loytynyt_virheilm);
        $palauteolio->set_sisalto(toteuta_nayta_havainnot($parametriolio));
    }
    $palauteolio->set_oikean_palkin_naytto(true);
    return $palauteolio;
}
Ejemplo n.º 9
0
/**
 * Palauttaa suoritustilaston taulukkoon muotoiltuna.
 * @param Parametrit $parametriolio
 * @return Palaute Palauttaa Palaute-luokan esiintymän. /
 */
function hae_suoritustilasto($parametriolio)
{
    $tietokantaolio = $parametriolio->tietokantaolio;
    $omaid = $parametriolio->omaid;
    $palauteolio = new Palaute();
    // Painikkeita:
    $muokkausnappi = "";
    // Määritellään myöhemmin
    $poistonappi = "";
    // Määritellään myöhemmin
    $paluunappi = "";
    // Paluunappi perusnäkymään:
    $class = "rinnakkain";
    $id = "paluunappi";
    $action = "muistio.php";
    $name = Muistiotoimintonimet::$perustoiminto;
    $value = Muistiopainikkeet::$paluu_perussuoritusnakymaan;
    $paluunappi = Html::luo_painikelomake($class, $id, $action, $name, $value);
    // Paluunappi lajitarkennusnäkymään:
    $class = "rinnakkain";
    $id = "paluunappi";
    $action = "muistio.php";
    $name = Muistiotoimintonimet::$perustoiminto;
    $value = Muistiopainikkeet::$paluu_tilastot_lajeittain_nakymaan;
    $paluunappi2 = Html::luo_painikelomake($class, $id, $action, $name, $value);
    $otsikko = "";
    if ($parametriolio->vain_omat_suoritukset) {
        $otsikko = $_SESSION['tiedot']->etunimi . " " . $_SESSION['tiedot']->sukunimi . ", ";
    }
    $otsikko .= Lajitarkennukset::hae_lajitarkennuksen_kuvaus($parametriolio->lajitarkennus);
    $otsikko .= $paluunappi2 . $paluunappi;
    if ($parametriolio->vain_omat_suoritukset) {
        $mj = "<table id = 'tulostaulu'>\n            <tr><td id='kuukm' colspan='4'>{$otsikko}</td></tr>\n            <tr>\n                <th>Aika</th>\n                <th>Kuvaus</th>\n                <th>Pvm</th>\n                <th>Toiminnot</th>\n            </tr>";
    } else {
        $mj = "<table id = 'tulostaulu'>\n            <tr><td id='kuukm' colspan='5'>{$otsikko}</td></tr>\n            <tr>\n                <th>Aika</th>\n                <th>Kuvaus</th>\n                <th>Pvm</th>\n                <th>Nimi</th>\n                <th>Toiminnot</th>\n            </tr>";
    }
    // Tarkistetaan, haetaanko kaikki vaiko vain omat:
    if ($parametriolio->vain_omat_suoritukset) {
        $hakulause = "SELECT * FROM suoritukset\n                WHERE (lajitarkennus= " . $parametriolio->lajitarkennus . " AND henkilo_id = " . $omaid . ")\n                ORDER by kestotunnit, kestomin, kestosek;";
    } else {
        $hakulause = "SELECT * FROM suoritukset\n                WHERE lajitarkennus= '" . $parametriolio->lajitarkennus . "' " . "ORDER by kestotunnit, kestomin, kestosek;";
        //ORDER by henkilo_id, kestotunnit, kestomin, kestosek;"
    }
    $osumaoliot = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause);
    if (empty($osumaoliot)) {
        $mj .= "<tr><td colspan=5>" . Muistiotekstit::$suorituksia_ei_loytynyt . "</td></tr>";
    } else {
        $laskuri = 0;
        foreach ($osumaoliot as $suoritus) {
            // Painikkeet:
            $class = "rinnakkain";
            $id = "muokkausnappi";
            $action = "muistio.php?" . URL_muuttujat::$suoritus_id . "=" . $suoritus->id . "&" . URL_muuttujat::$valinnat . "=" . $suoritus->id . "&" . URL_muuttujat::$lajitarkennus . "=" . $suoritus->lajitarkennus . "&" . URL_muuttujat::$paluunakyma . "=" . Muistio_yleisia_arvoja::$nakyma_tulostilasto;
            $name = Muistiotoimintonimet::$perustoiminto;
            $value = Muistiopainikkeet::$muokkausnappikomento_lyhyt;
            $muokkausnappi = Html::luo_painikelomake($class, $id, $action, $name, $value);
            $id = "poistonappi";
            $value = Muistiopainikkeet::$poistonappikomento_lyhyt;
            $poistonappi = Html::luo_painikelomake($class, $id, $action, $name, $value);
            // Haetaan henkilön nimi:
            $nimi = hae_henkilon_nimi($suoritus->henkilo_id, false, $parametriolio->tietokantaolio);
            // Muotoillaan aika:
            $aika = muotoile_suorituksen_kesto($suoritus->kestotunnit, $suoritus->kestomin, $suoritus->kestosek, $suoritus->kesto);
            if ($laskuri % 2 != 0) {
                $mj .= "<tr class='parillinen_rivi'>";
            } else {
                $mj .= "<tr>";
            }
            // Nämä tulevat kaikkiin:
            $mj .= "<td>{$aika}</td>" . "<td>{$suoritus->kuvaus}</td>" . "<td class='aikasolu'>" . anna_viikonp_suomeksi($suoritus->paiva, $suoritus->kk, $suoritus->vuosi, true) . " " . $suoritus->paiva . "." . $suoritus->kk . "." . $suoritus->vuosi . "</td>";
            // Lisätään nimi, jos näytetään kaikki:
            if ($parametriolio->vain_omat_suoritukset == false) {
                $mj .= "<td>{$nimi}</td>";
            }
            // Toiminnot tulevat kaikkiin omiin ja adminille:
            if ($suoritus->henkilo_id == $parametriolio->omaid || $parametriolio->get_kayttajan_valtuudet() == Valtuudet::$HALLINTA) {
                $mj .= "<td>" . $muokkausnappi . $poistonappi . "</td>";
            } else {
                $mj .= "<td></td>";
            }
            // Lopuksi suljetaan taulukon rivi:
            $mj .= "</tr>";
            $laskuri++;
        }
    }
    $mj .= "</table>";
    $palauteolio->set_sisalto($mj);
    $palauteolio->set_nayta_kiintolinkit(false);
    return $palauteolio;
}
Ejemplo n.º 10
0
<?php

session_start();
// Aloitetaan istunto.
require_once 'asetukset/tietokantayhteys.php';
require_once 'yhteiset/php_yhteismetodit.php';
load_files("articles");
// Yhdistetään tietokantaan:
$tietokantaolio = new Tietokantaolio($dbtyyppi, $dbhost, $dbuser, $dbsalis);
$tietokantaolio->yhdista_tietokantaan($dbnimi);
// Tee parametriolio ja palauteolio!
$parametriolio = new Parametrit($tietokantaolio);
$palauteolio = new Palaute();
// Kontrollerit ja näkymät:
$kokonaisuuskontrolleri = new Kokonaisuuskontrolleri($tietokantaolio, $parametriolio);
$kokonaisuusnakymat = new Kokonaisuusnakymat();
$tehtavakontrolleri = new Tehtavakontrolleri($tietokantaolio, $parametriolio);
$ratkaisukontrolleri = new Ratkaisukontrolleri($tietokantaolio, $parametriolio);
$koostekontrolleri = new Koostekontrolleri($tietokantaolio, $parametriolio);
// Tekstien käännös.
Kielet::kaanna($parametriolio->get_kieli_id());
$ilmoitus = "";
// Tämä on yleinen ilmoitus käyttäjälle.
$sisalto = "";
// Sivun pääsisalto;
/**************************************************************************/
/*********************** TOIMINTA-TOIMINNOT *******************************/
$toiminta = $parametriolio->get_toiminta();
$erikoistoiminta = $parametriolio->get_erikoistoiminta();
$henkilotietotoiminto = $parametriolio->get_henkilotietotoiminto();
$kuvatoiminta = $parametriolio->get_kuvatoiminta();
Ejemplo n.º 11
0
 /**
  * @param Parametrit $parametriolio
  * @param Palaute $palauteolio
  * @return html Palauttaa sivun täydellisen html:n.
  */
 function nayta_etusivu($parametriolio, $palauteolio, $nayttotapa)
 {
     $valtuudet = $parametriolio->get_valtuudet();
     $ylapalkkipainikkeet = $palauteolio->get_ylapalkkipainikkeet();
     $sisalto = $palauteolio->get_sisalto();
     $ilmoitus = $palauteolio->get_ilmoitus();
     $linkit = $palauteolio->get_linkkihtml();
     $aika = Aika::anna_nyk_viikonp_suomeksi() . " " . date("d.m.Y");
     $aikailmoitus = "Tänään on " . $aika . " ";
     // Kieli:
     $lang_id = $parametriolio->kieli_id;
     // Tulostetaan etusivun html-koodi:
     $otsikkoteksti = Palautustekstit::heading1($lang_id);
     // Vain katselu on mahdollista ilman kirjautumista:
     if ($valtuudet > Valtuudet::$KATSELU) {
         $kirjautuminen = Html::span(array(Attr::style("font-size:70%")), " " . $_SESSION['tiedot']->etunimi . " ") . Html::luo_forminput_painike(array(Attr::classs("navbar-form inline-block")), array(Attr::classs("btn btn-default btn-md"), Attr::name("toiminta"), Attr::value(Painikkeet::$KIRJAUDU_ULOS_VALUE)));
     } else {
         $kirjautuminen = Html::a(array(Attr::title(Tekstit::$linkit_tunnistautuminen)), Html::span(array(Attr::classs("glyphicon glyphicon-log-in login-painike")), ""), "../kokonaisuudet/tunnistus.php?target=submit");
     }
     $ylapalkkipainikkeet .= $kirjautuminen;
     // Näyttötavan vaikutus:
     if ($nayttotapa === Palautusnakymat::$show_1col) {
         $number_of_col = 1;
     } else {
         if ($nayttotapa === Palautusnakymat::$show_2col) {
             $number_of_col = 2;
         } else {
             $number_of_col = 1;
         }
     }
     $links = $linkit;
     $content = $sisalto;
     $header_content = $otsikkoteksti;
     $etusivu = '<!DOCTYPE html>' . '<html>' . $this->create_head() . '<body onload="kaynnista_metodit(2)">
         <div id="ilmoitus">' . $ilmoitus . '</div>
         ' . $this->create_nav($header_content, $ylapalkkipainikkeet) . '
         ' . $this->create_sidenavs_and_content_row($links, $content, $number_of_col) . '
         ' . $this->create_footer($aikailmoitus, "") . '
         </body>
         </html>';
     return $etusivu;
 }
Ejemplo n.º 12
0
 public function __construct($tietokantaolio)
 {
     $this->tietokantaolio = $tietokantaolio;
     $this->toiminta = $this->retrieve(Parametrit::$POST, Toimintonimet::$kokonaisuustoiminto, Parametrit::$UNDEFINED, "");
     // Ylläpito:
     $this->erikoistoiminta = $this->retrieve(Parametrit::$POST, Toimintonimet::$yllapitotoiminto, Parametrit::$UNDEFINED, "");
     $this->henkilotietotoiminto = $this->retrieve(Parametrit::$POST, Toimintonimet::$henkilotietotoiminto, Parametrit::$UNDEFINED, "");
     $this->kuvatoiminta = $this->retrieve(Parametrit::$REQ, Toimintonimet::$kuvatoiminto, Parametrit::$UNDEFINED, "");
     $this->tehtavatoiminto = $this->retrieve(Parametrit::$REQ, Toimintonimet::$tehtavatoiminto, Parametrit::$UNDEFINED, "");
     $this->lv_toiminto = $this->retrieve(Parametrit::$REQ, Toimintonimet::$lv_toiminto, Parametrit::$UNDEFINED, "");
     $this->koostetoiminto = $this->retrieve(Parametrit::$REQ, Toimintonimet::$koostetoiminto, Parametrit::$UNDEFINED, "");
     $this->palautustoiminto = $this->retrieve(Parametrit::$REQ, Toimintonimet::$palautustoiminto, Parametrit::$UNDEFINED, "");
     $this->naytto_urlin_mukaan = false;
     // Oletus näin, koska useimmin näin.
     // Yleisiä muuttujia:
     $this->valtuudet = Valtuudet::$KATSELU;
     // Oletus!
     $this->omaid = -1;
     // Oletus (tunnistautumaton käyttäjä)
     $this->nayta_kirjautunut = false;
     if (isset($_SESSION['tunnistus'])) {
         if ($_SESSION['tunnistus'] == 'kunnossa') {
             $this->nayta_kirjautunut = true;
             $this->valtuudet = $_SESSION['tiedot']->valtuudet;
             $this->omaid = $_SESSION['tiedot']->id;
         }
     }
     // Tämä voi olla kuka tahansa henkilö, ei välttämättä käyttäjä:
     // Alla ei-määritelty on sellainen id, ettei se osu yksiin esimerkiksi
     // ei-määritellyn omaid:n kanssa. Aikaisemmin sama ei-määritelty -arvo
     // saattoi avata reiän toimenpidekieltoon.
     $this->henkilo_id = $this->retrieve(Parametrit::$REQ, "henkilo_id", Parametrit::$UNDEFINED, Yleiset_arvot::$henkilo_id_ei_maaritelty);
     // Valintavalikot kielelle, koulutasolle ja aineelle. Kaikissa toiminnoissa
     // niitä ei ole järkevää näyttää.
     $this->nayta_valintavalikot = true;
     $this->valikot = "";
     $this->kokonaisuusryhman_vaihto = false;
     // Oletus
     // TARKISTETTAVA!
     // Selvitetään, onko kyseessä kokonaisuusryhmän vaihto. Sillä saattaa
     // olla merkitystä jossakin (tämän merkitys voisi olla hyvä tarkistaa).
     if (isset($_REQUEST['kieli_id'])) {
         if (isset($_SESSION['kieli_id']) && $_SESSION['kieli_id'] != $_REQUEST['kieli_id']) {
             // Tässä tapauksessa vanhat sessiotiedot vain hämäävät:
             $this->kokonaisuusryhman_vaihto = true;
         }
     } else {
         if (isset($_REQUEST['taso_kokon'])) {
             if (isset($_SESSION['taso_kokon']) && $_SESSION['taso_kokon'] != $_REQUEST['taso_kokon']) {
                 $this->kokonaisuusryhman_vaihto = true;
             }
         } else {
             if (isset($_REQUEST['oppiaine_kokon'])) {
                 if (isset($_SESSION['oppiaine_kokon']) && $_SESSION['oppiaine_kokon'] != $_REQUEST['oppiaine_kokon']) {
                     $this->kokonaisuusryhman_vaihto = true;
                 }
             }
         }
     }
     // Kieli saadaan $_REQUEST['kieli_id']-muuttujasta. Ellei se ole
     // määritelty, katsotaan session muistama ja ellei siellä mitään-> suomi:
     $this->kieli_id = $this->retrieve(Parametrit::$REQ_SES, "kieli_id", "kieli_id", Kielet::$SUOMI);
     // Kaavakieli saadaan $_REQUEST[Yleiset_arvot::$kaavakieli_name]-muuttujasta.
     // Ellei se ole määritelty, katsotaan session muistama ja ellei siellä
     // mitään-> oletus.
     // Tämä siis määrää, millä kielellä matemaattiset kaavat syötetään.
     $this->kaavakieli = $this->retrieve(Parametrit::$REQ_SES, Yleiset_arvot::$kaavakieli_name, Yleiset_arvot::$kaavakieli_name, Kaavakieli::$LaTeX);
     // Näytettävän olion tyyppi saadaan $_REQUEST[Oliotyyppi::$naytettava_name]-
     // muuttujasta.
     // Tämä siis määrää, millainen olio käyttäjälle näytetään (erityisesti
     // kun käyttäjä syöttää urlin vain ja näytettävä määritelty).
     // HUOM! Sessio pois käytöstä, ettei turhia muista!
     $this->naytettava = $this->retrieve(Parametrit::$REQ, Oliotyyppi::$naytettava_name, Oliotyyppi::$naytettava_name, Palaute::$NAYTETTAVA_OLIOTYYPPI_MUU);
     /*************** Kokonaisuuksiin liittyvät muuttujat: *********************/
     // Luodaan muuttuja, joka pitää sisällään tietokannasta haetut kokonaisuudet:
     $this->kokonaisuusoliot = array();
     // Tarvetta?
     // kokonaisuuksien_nayttotapa saadaan
     // $_REQUEST['kokonaisuuksien_nayttotapa']-muuttujasta. Ellei se ole
     // määritelty, katsotaan session muistama ja ellei siellä mitään,
     // näytetään oletuksena yksi kokonaisuus kerrallaan:
     $this->kokonaisuuksien_nayttotapa = $this->retrieve(Parametrit::$REQ_SES, Kokonaisuuksien_nayttotavat::$kokonaisuudet_nayttotapa_name, Kokonaisuuksien_nayttotavat::$kokonaisuudet_nayttotapa_name, Kokonaisuuksien_nayttotavat::$kokonaisuudet_nayta_yksi_kerrallaan_arvo);
     $this->selitys_auki_id = Kokonaisuusolio::$SELITYS_KIINNI_ID;
     /* Tämä tiedottaa, käsitelläänkö (esim. kuvan lisäys) uutta vai vanhaa oliota.
      * Huom! Viimeisen muutoksen jälkeen kuvat lisätään kuitenkin aina vanhaan
      * olioon. Muuten menee hankalaksi perumisten kanssa. En muista, onko
      * tästä mistään iloa, mutta saahan tuo olla mahdollista tarvetta varten.
      */
     $this->uusi = $this->retrieve(Parametrit::$REQ, "uusi", Parametrit::$UNDEFINED, false);
     // Kokonaisuus_id on hyvä pitää muistissa vähän pysyvämmin. Tästä
     // on iloa, jos esimerkiksi käy tunnistautumassa välillä:
     $this->id_kokon = $this->retrieve(Parametrit::$REQ_SES, Kokonaisuuskontrolleri::$name_id_kokon, Kokonaisuuskontrolleri::$name_id_kokon, Kokonaisuusolio::$kokon_ei_maaritelty);
     $this->otsikko_kokon = $this->retrieve(Parametrit::$REQ, 'otsikko_kokon', Parametrit::$UNDEFINED, "");
     $this->tiivis_kokon = $this->retrieve(Parametrit::$REQ, 'tiivis_kokon', Parametrit::$UNDEFINED, "");
     $this->selitys_kokon = $this->retrieve(Parametrit::$REQ, 'selitys_kokon', Parametrit::$UNDEFINED, "");
     $this->jarjestysnro_kokon = $this->retrieve(Parametrit::$REQ, 'jarjestysnro_kokon', Parametrit::$UNDEFINED, -1);
     $this->laajennetun_id_kokon = $this->retrieve(Parametrit::$REQ, 'laajennetun_id_kokon', Parametrit::$UNDEFINED, -1);
     $this->ilmoitus_kokon = $this->retrieve(Parametrit::$REQ, 'ilmoitus_kokon', Parametrit::$UNDEFINED, "");
     $this->nakyvyys_kokon = $this->retrieve(Parametrit::$REQ, Kokonaisuuskontrolleri::$kokon_name_nakyvyys, Parametrit::$UNDEFINED, Nakyvyys::$YKSITYINEN);
     $this->ylakokonaisuuden_id_kokon = $this->retrieve(Parametrit::$REQ, 'ylakokonaisuuden_id_kokon', Parametrit::$UNDEFINED, -1);
     $this->ed_id_kokon = $this->retrieve(Parametrit::$REQ, 'ed_id_kokon', Parametrit::$UNDEFINED, Kokonaisuusolio::$kokon_edellista_ei_ole);
     $this->seur_id_kokon = $this->retrieve(Parametrit::$REQ, 'seur_id_kokon', Parametrit::$UNDEFINED, Kokonaisuusolio::$kokon_seuraavaa_ei_ole);
     // Tätä tarvitaan kokonaisuuden muutoksessa, jos yläkokonaisuutta
     // muutetaan. Tällöin pitää tarkistaa vanhan yläkokon lapsellisuus.
     $this->ylakokonaisuuden_id_vanha = $this->retrieve(Parametrit::$REQ, 'ylakokonaisuuden_id_vanha', Parametrit::$UNDEFINED, -1);
     // True (1), jos on kokonaisuuksia, jotka viittaavat tähän kokonaisuuteen
     //(ylakokonaisuuden_id).
     $this->on_lapsia_kokon = $this->retrieve(Parametrit::$REQ, 'on_lapsia_kokon', Parametrit::$UNDEFINED, "");
     // Taso saadaan $_REQUEST['taso_kokon']-muuttujasta. Ellei se ole
     // määritelty, katsotaan session muistama (pysyy mielessä silloin, kun
     // sitä ei muuteta!) ja ellei siellä mitään-> oletus:
     $this->taso_kokon = $this->retrieve(Parametrit::$REQ_SES, "taso_kokon", "taso_kokon", Koulutasot::$PERUSKOULU);
     // samoin oppiaine:
     $this->oppiaine_kokon = $this->retrieve(Parametrit::$REQ_SES, "oppiaine_kokon", "oppiaine_kokon", Oppiaineet::$MA);
     // True, jos siirto ylöspäin, false, jos alaspäin.
     $this->siirto_ylos = $this->retrieve(Parametrit::$REQ, 'siirto_ylos', Parametrit::$UNDEFINED, false);
     $this->tallennuskesken = false;
     // Oletus näin.
     /********************** kokonaisuustiedot loppu ***************************/
     /********************* koostetiedot alku ************************************/
     $this->kooste_id = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$kooste_name_id, Parametrit::$UNDEFINED, Kooste::$MUUTTUJAA_EI_MAARITELTY);
     $this->kooste_henkilo_id = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$kooste_name_henkilo_id, Parametrit::$UNDEFINED, Kooste::$MUUTTUJAA_EI_MAARITELTY);
     $this->kooste_kieli = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$kooste_name_kieli, Parametrit::$UNDEFINED, Kielet::$SUOMI);
     $this->kooste_nakyvyys = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$kooste_name_nakyvyys, Parametrit::$UNDEFINED, Kooste::$MUUTTUJAA_EI_MAARITELTY);
     $this->kooste_nimi = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$kooste_name_nimi, Parametrit::$UNDEFINED, Kooste::$MUUTTUJAA_EI_MAARITELTY);
     $this->kooste_oppiaine = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$kooste_name_oppiaine, Parametrit::$UNDEFINED, Oppiaineet::$MA);
     $this->kooste_tyyppi = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$kooste_name_tyyppi, Parametrit::$UNDEFINED, Kooste::$MUUTTUJAA_EI_MAARITELTY);
     $this->kooste_otsikko = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$kooste_name_otsikko, Parametrit::$UNDEFINED, Kooste::$MUUTTUJAA_EI_MAARITELTY);
     $this->kooste_selitys = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$kooste_name_selitys, Parametrit::$UNDEFINED, Kooste::$MUUTTUJAA_EI_MAARITELTY);
     $this->kooste_taso = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$kooste_name_taso, Parametrit::$UNDEFINED, Koulutasot::$PERUSKOULU);
     $this->kooste_org = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$kooste_name_organ_code, Parametrit::$UNDEFINED, Kooste::$MUUTTUJAA_EI_MAARITELTY);
     $this->kooste_ed_elem_id = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$kooste_name_ed_elem_id, Parametrit::$UNDEFINED, Kooste::$MUUTTUJAA_EI_MAARITELTY);
     $this->kooste_seur_elem_id = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$kooste_name_seur_elem_id, Parametrit::$UNDEFINED, Kooste::$MUUTTUJAA_EI_MAARITELTY);
     $this->kooste_elementtivalinnat = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$koostelom_elemval_name, Parametrit::$UNDEFINED, array());
     // Valittavien taso, kieli ja oppiaine pannaan myös sessiomuuttujaan:
     $sessiomuuttujanimi_taso = Parametrit::sessiomuuttujanimi_koostelomake_valittavat_taso();
     $sessiomuuttujanimi_kieli = Parametrit::sessiomuuttujanimi_koostelomake_valittavat_kieli();
     $sessiomuuttujanimi_oppiaine = Parametrit::sessiomuuttujanimi_koostelomake_valittavat_oppiaine();
     // Taso
     $this->koostelomake_valittavat_taso = $this->retrieve(Parametrit::$REQ_SES, Koostekontrolleri::$koostelom_elemval_taso_name, $sessiomuuttujanimi_taso, Koulutasot::$LUKIO);
     // Kieli:
     $this->koostelomake_valittavat_kieli = $this->retrieve(Parametrit::$REQ_SES, Koostekontrolleri::$koostelom_elemval_kieli_name, $sessiomuuttujanimi_kieli, Kielet::$SUOMI);
     // Oppiaine:
     $this->koostelomake_valittavat_oppiaine = $this->retrieve(Parametrit::$REQ_SES, Koostekontrolleri::$koostelom_elemval_oppiaine_name, $sessiomuuttujanimi_oppiaine, Oppiaineet::$MA);
     /********************* Koostetiedot loppu ************************************/
     /********************* Koosteen elementtiryhmätiedot alku *************/
     $this->elemryhma_elementtivalinnat = $this->retrieve(Parametrit::$POST, Koostekontrolleri::$elemryhma_name_elementtivalinnat, Parametrit::$UNDEFINED, array());
     $this->elemryhma_kooste_id = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$elemryhma_name_kooste_id, Parametrit::$UNDEFINED, Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY);
     $this->elemryhma_nimi = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$elemryhma_name_nimi, Parametrit::$UNDEFINED, Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY);
     $this->elemryhma_selitys = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$elemryhma_name_selitys, Parametrit::$UNDEFINED, Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY);
     $this->elemryhma_id = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$elemryhma_name_id, Parametrit::$UNDEFINED, Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY);
     $this->elemryhma_tunnus = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$elemryhma_name_tunnus, Parametrit::$UNDEFINED, Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY);
     /********************* Elementtitiedot alku ************************************/
     $this->elementti_id = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$elementti_name_id, Parametrit::$UNDEFINED, Elementti::$MUUTTUJAA_EI_MAARITELTY);
     $this->elementti_jarjestysluku = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$elementti_name_jarjestysluku, Parametrit::$UNDEFINED, Elementti::$MUUTTUJAA_EI_MAARITELTY);
     $this->elementti_kooste_id = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$elementti_name_kooste_id, Parametrit::$UNDEFINED, Elementti::$MUUTTUJAA_EI_MAARITELTY);
     $this->elementti_olio_id = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$elementti_name_olio_id, Parametrit::$UNDEFINED, Elementti::$MUUTTUJAA_EI_MAARITELTY);
     $this->elementti_oliotyyppi = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$elementti_name_oliotyyppi, Parametrit::$UNDEFINED, Elementti::$MUUTTUJAA_EI_MAARITELTY);
     $this->elementti_pisteet = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$elementti_name_pisteet, Parametrit::$UNDEFINED, Elementti::$MUUTTUJAA_EI_MAARITELTY);
     $this->elementti_nakyvyys = $this->retrieve(Parametrit::$REQ, Koostekontrolleri::$elementti_name_nakyvyys, Parametrit::$UNDEFINED, Elementti::$MUUTTUJAA_EI_MAARITELTY);
     /********************* Elementtitiedot loppu ************************************
        /********************* kuvatiedot alku ************************************/
     /* Kuvalatauskansion osoite: */
     $this->latauskansio_os = Kuvat::$latauskansion_osoite;
     $this->uusi_kuva = $this->retrieve(Parametrit::$REQ, 'uusi_kuva', Parametrit::$UNDEFINED, true);
     $this->ilmoitus_kuva = $this->retrieve(Parametrit::$REQ, 'ilmoitus_kuva', Parametrit::$UNDEFINED, "");
     $this->kuvaotsikko_kuva = $this->retrieve(Parametrit::$REQ, 'kuvaotsikko_kuva', Parametrit::$UNDEFINED, "");
     $this->kuvaselitys_kuva = $this->retrieve(Parametrit::$REQ, 'kuvaselitys_kuva', Parametrit::$UNDEFINED, "");
     $this->vuosi_kuva = $this->retrieve(Parametrit::$REQ, 'vuosi_kuva', Parametrit::$UNDEFINED, "");
     $this->kk_kuva = $this->retrieve(Parametrit::$REQ, 'kk_kuva', Parametrit::$UNDEFINED, "");
     $this->paiva_kuva = $this->retrieve(Parametrit::$REQ, 'paiva_kuva', Parametrit::$UNDEFINED, "");
     $this->id_kuva = $this->retrieve(Parametrit::$REQ, 'id_kuva', Parametrit::$UNDEFINED, -1);
     $this->kohde_kuva = $this->retrieve(Parametrit::$REQ, 'kohde_kuva', Parametrit::$UNDEFINED, Kuvat::$kohde_kokonaisuus_tiivistelma);
     /* Tämä on sen olion id, johon kuva kuuluu (kokonaisuus/tehtävä/ratkaisu) */
     $this->id_kohde_kuva = $this->retrieve(Parametrit::$REQ, 'id_kohde_kuva', Parametrit::$UNDEFINED, -1);
     $this->nayttokokoindeksi_kuva = $this->retrieve(Parametrit::$REQ, 'nayttokokoindeksi_kuva', Parametrit::$UNDEFINED, "");
     /********************* kuvatiedot loppu ************************************/
     /********************* tehtävätiedot alku ************************************/
     // Teht_id on myös hyvä pitää muistissa vähän pysyvämmin, koska sen
     // 'alapuolella' on ratkaisujen joukko, joita käydään välillä katsomassa,
     // jolloin takaisinkin pitää osata tulla.
     // Äh sitten ei urlin perusteella enää mene kokonaisuuksiin.. Ehkä ei
     // tarvitse kuitenkaan.
     /*$this->id_teht = $this->retrieve(
       Parametrit::$REQ_SES, 'id_teht', 'id_teht', 
       Tehtava::$MUUTTUJAA_EI_MAARITELTY); */
     $this->id_teht = $this->retrieve(Parametrit::$REQ, 'id_teht', Parametrit::$UNDEFINED, Tehtava::$MUUTTUJAA_EI_MAARITELTY);
     $this->ilmoitus_teht = $this->retrieve(Parametrit::$REQ, 'ilmoitus_teht', Parametrit::$UNDEFINED, "");
     $this->otsikko_teht = $this->retrieve(Parametrit::$REQ, 'otsikko_teht', Parametrit::$UNDEFINED, "");
     $this->tehtavananto_teht = $this->retrieve(Parametrit::$REQ, 'tehtavananto_teht', Parametrit::$UNDEFINED, "");
     $this->vaikeustaso_teht = $this->retrieve(Parametrit::$REQ, 'vaikeustaso_teht', Parametrit::$UNDEFINED, Vaikeustasot::$NORMAALI);
     $this->nakyvyys_teht = $this->retrieve(Parametrit::$REQ, Tehtavakontrolleri::$tehtava_name_nakyvyys, Parametrit::$UNDEFINED, Nakyvyys::$YKSITYINEN);
     /********************* tehtävätiedot loppu ********************************/
     /********************* Ratkeisutiedot alku ************************************/
     $this->id_ratk = $this->retrieve(Parametrit::$REQ, 'id_ratk', Parametrit::$UNDEFINED, Ratkaisu::$MUUTTUJAA_EI_MAARITELTY);
     $this->ilmoitus_ratk = $this->retrieve(Parametrit::$REQ, 'ilmoitus_ratk', Parametrit::$UNDEFINED, "");
     $this->vastaus_ratk = $this->retrieve(Parametrit::$REQ, 'vastaus_ratk', Parametrit::$UNDEFINED, "");
     $this->ratkaisu_ratk = $this->retrieve(Parametrit::$REQ, 'ratkaisu_ratk', Parametrit::$UNDEFINED, "");
     $this->nakyvyys_ratk = $this->retrieve(Parametrit::$REQ, Ratkaisukontrolleri::$ratkaisu_name_nakyvyys, Parametrit::$UNDEFINED, Nakyvyys::$YKSITYINEN);
     /********************* ratkaisutiedot loppu ********************************/
     /********************* henkilötiedot alku *********************************/
     // Lisätään ihmisen tiedot:
     $this->etun = $this->retrieve(Parametrit::$POST, 'etunimi', Parametrit::$UNDEFINED, "");
     $this->sukun = $this->retrieve(Parametrit::$POST, 'sukunimi', Parametrit::$UNDEFINED, "");
     $this->lempin = $this->retrieve(Parametrit::$POST, 'lempinimi', Parametrit::$UNDEFINED, "");
     $this->svuosi = $this->retrieve(Parametrit::$POST, 'svuosi', Parametrit::$UNDEFINED, "");
     $this->skk = $this->retrieve(Parametrit::$POST, 'skk', Parametrit::$UNDEFINED, "");
     $this->spaiva = $this->retrieve(Parametrit::$POST, 'spaiva', Parametrit::$UNDEFINED, "");
     $this->komm = $this->retrieve(Parametrit::$POST, 'kommentti', Parametrit::$UNDEFINED, "");
     $this->uusktunnus = $this->retrieve(Parametrit::$POST, 'uusikayttajatunnus', Parametrit::$UNDEFINED, "");
     $this->uussalasana = $this->retrieve(Parametrit::$POST, 'uusisalasana', Parametrit::$UNDEFINED, "");
     $this->salavahvistus = $this->retrieve(Parametrit::$POST, Kayttajakontrolleri::$name_salasanavahvistus, Parametrit::$UNDEFINED, "");
     $this->eosoite = $this->retrieve(Parametrit::$POST, 'eosoite', Parametrit::$UNDEFINED, "");
     $this->uudet_valtuudet = $this->retrieve(Parametrit::$POST, 'valtuudet', Parametrit::$UNDEFINED, Valtuudet::$KATSELU);
     /********************* henkilötiedot loppu ****************************/
     /*================== Lisävaltuudet alku ==================================*/
     $this->lv_henkilo_id = $this->retrieve(Parametrit::$POST, Kayttajakontrolleri::$lv_name_kohdehenkilo_id, Parametrit::$UNDEFINED, -1);
     $this->lv_kohde_id = $this->retrieve(Parametrit::$POST, Kayttajakontrolleri::$lv_name_kohdeolio_id, Parametrit::$UNDEFINED, -1);
     $this->lv_kohdetyyppi = $this->retrieve(Parametrit::$POST, Kayttajakontrolleri::$lv_name_kohdeoliotyyppi, Parametrit::$UNDEFINED, -1);
     $this->lv_vaikutusalue = $this->retrieve(Parametrit::$POST, Kayttajakontrolleri::$lv_name_vaikutusalue, Parametrit::$UNDEFINED, -1);
     $this->lv_oikeudet = $this->retrieve(Parametrit::$POST, Kayttajakontrolleri::$lv_name_oikeudet, Parametrit::$UNDEFINED, -1);
     $this->lv_omistaja_id = $this->retrieve(Parametrit::$POST, Kayttajakontrolleri::$lv_name_omistaja_id, Parametrit::$UNDEFINED, -1);
     /*============== Lisävaltuudet loppu =================================*/
     /*================== Kurssitiedot alku ==================================*/
     $this->kurssitieto_id = $this->retrieve(Parametrit::$POST, Palautuskontrolleri::$kurssitieto_name_id, Parametrit::$UNDEFINED, Kurssitieto::$MUUTTUJAA_EI_MAARITELTY);
     $this->kurssitieto_kuvaus = $this->retrieve(Parametrit::$POST, Palautuskontrolleri::$kurssitieto_name_kuvaus, Parametrit::$UNDEFINED, Kurssitieto::$MUUTTUJAA_EI_MAARITELTY);
     $this->kurssitieto_luomishetki_sek = $this->retrieve(Parametrit::$POST, Palautuskontrolleri::$kurssitieto_name_luomishetki_sek, Parametrit::$UNDEFINED, Kurssitieto::$MUUTTUJAA_EI_MAARITELTY);
     $this->kurssitieto_nakyvyys = $this->retrieve(Parametrit::$POST, Palautuskontrolleri::$kurssitieto_name_nakyvyys, Parametrit::$UNDEFINED, Kurssitieto::$MUUTTUJAA_EI_MAARITELTY);
     $this->kurssitieto_opettaja_id = $this->retrieve(Parametrit::$POST, Palautuskontrolleri::$kurssitieto_name_opettaja_id, Parametrit::$UNDEFINED, Kurssitieto::$MUUTTUJAA_EI_MAARITELTY);
     $this->kurssitieto_opettaja_nimi = $this->retrieve(Parametrit::$POST, Palautuskontrolleri::$kurssitieto_name_opettaja_nimi, Parametrit::$UNDEFINED, Kurssitieto::$MUUTTUJAA_EI_MAARITELTY);
     $this->kurssitieto_tunniste = $this->retrieve(Parametrit::$POST, Palautuskontrolleri::$kurssitieto_name_tunniste, Parametrit::$UNDEFINED, Kurssitieto::$MUUTTUJAA_EI_MAARITELTY);
     /*================== Kurssitiedot loppu ==================================*/
     /*================== Palautukset alku ==================================*/
     $this->palautus_id = $this->retrieve(Parametrit::$POST, Palautuskontrolleri::$palautus_name_id, Parametrit::$UNDEFINED, Palautus::$MUUTTUJAA_EI_MAARITELTY);
     $this->palautus_kurssitieto_id = $this->retrieve(Parametrit::$POST, Palautuskontrolleri::$palautus_name_kurssitieto_id, Parametrit::$UNDEFINED, Palautus::$MUUTTUJAA_EI_MAARITELTY);
     $this->palautus_kuvaus = $this->retrieve(Parametrit::$POST, Palautuskontrolleri::$palautus_name_kuvaus, Parametrit::$UNDEFINED, Palautus::$MUUTTUJAA_EI_MAARITELTY);
     $this->palautus_luomishetki_sek = $this->retrieve(Parametrit::$POST, Palautuskontrolleri::$palautus_name_luomishetki_sek, Parametrit::$UNDEFINED, Palautus::$MUUTTUJAA_EI_MAARITELTY);
     $this->palautus_opiskelija_etunimi = $this->retrieve(Parametrit::$POST, Palautuskontrolleri::$palautus_name_opiskelija_etunimi, Parametrit::$UNDEFINED, Palautus::$MUUTTUJAA_EI_MAARITELTY);
     $this->palautus_opiskelija_sukunimi = $this->retrieve(Parametrit::$POST, Palautuskontrolleri::$palautus_name_opiskelija_sukunimi, Parametrit::$UNDEFINED, Palautus::$MUUTTUJAA_EI_MAARITELTY);
     $this->palautus_teksti = $this->retrieve(Parametrit::$POST, Palautuskontrolleri::$palautus_name_teksti, Parametrit::$UNDEFINED, Palautus::$MUUTTUJAA_EI_MAARITELTY);
     /*================== Palautukset loppu ==================================*/
 }
Ejemplo n.º 13
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;
 }
Ejemplo n.º 14
0
 // Yhdistetään tietokantaan:
 $tietokantaolio = new Tietokantaolio($dbtyyppi, $dbhost, $dbuser, $dbsalis);
 // Alla ylempi tapa ei luo uutta yhteyttä, vaan käyttää
 // jo olemassaolevaa. Tavallaan hyvä, mutta aiheutti sen, että kun
 // yhteys täällä suljettiin, sulkeutui se myös muualla ja aiheutti
 // varoituksia (vaikkei oikeastaan toimintahäiriöitä).
 //
 // Ellen ihan väärässä ole, liittyy tämä ongelma nimenomaan
 // ajax-hakuihin, jotka voivat mennä päällekkäin muiden (pääsivun)
 // tietokantayhteyksien kanssa.
 //$tietokantaolio->yhdista_tietokantaan($dbnimi);
 $tietokantaolio->yhdista_tietokantaan_uusi_yhteys($dbnimi);
 // Kokoelmanimi:
 $kokoelmanimi = isset($_REQUEST['kokoelmanimi']) ? $_REQUEST['kokoelmanimi'] : Kuva::$KUVAT_ALBUMIT;
 // Haetaan parametrit;
 $parametriolio = new Parametrit($kokoelmanimi, $omaid, $tietokantaolio);
 // Luodaan Havaintokontrolleri- ja Havaintonakymaluokan oliot:
 $havaintokontrolleri = new Havaintokontrolleri($tietokantaolio, $parametriolio);
 // Luodaan Käyttäjähommat:
 $kayttajakontrolleri = new Kayttajakontrolleri($tietokantaolio, $parametriolio);
 //================== Pikakommenttimuuttujat=========================
 $kommenttiteksti = isset($_REQUEST['kommenttiteksti']) ? $_REQUEST['kommenttiteksti'] : Pikakommentti::$PARAMETRI_EI_KAYTOSSA;
 $kohde_tyyppi = isset($_REQUEST['kohde_tyyppi']) ? $_REQUEST['kohde_tyyppi'] : Pikakommentti::$PARAMETRI_EI_KAYTOSSA;
 $kohde_id = isset($_REQUEST['kohde_id']) ? $_REQUEST['kohde_id'] : Pikakommentti::$PARAMETRI_EI_KAYTOSSA;
 $pikakommentin_id = isset($_REQUEST['pikakommentin_id']) ? $_REQUEST['pikakommentin_id'] : Pikakommentti::$PARAMETRI_EI_KAYTOSSA;
 // Seuraavalla on käyttöä esimerkiksi poistoa peruttaessa. Ei
 // tartte hakea tietokannasta. Tavallaan hyvä tapa tämäkin.
 $sisalto_html = isset($_REQUEST['sisalto_html']) ? $_REQUEST['sisalto_html'] : "";
 // Luodaan käsiteltävä (tai tyhjä) pikakommentti:
 $nykyinen_pikakommentti = new Pikakommentti($tietokantaolio, $pikakommentin_id);
 // Sijoitetaan tiedot tarvittaessa:
Ejemplo n.º 15
0
 /**
  * Toteuttaa kokonaisuudessaan uuden kokonaisuuden tallennuksen tietokantaan.
  * Palauttaa Palauteolio-luokan olion.
  *
  * Järjestysluvuksi kokonaisuus saa id:n. Järjestyslukua voi myöhemmin
  * muuttaa vaihtamalla jonkin toisen kokonaisuuden kanssa, jolloin ei pitäisi
  * tulla päällekkäisyyksiä.
  *
  * @return <type>
  */
 function toteuta_tallenna_uusi(&$palauteolio)
 {
     $parametriolio = $this->get_parametriolio();
     $tallennuskesken = $parametriolio->tallennuskesken;
     $omaid = $parametriolio->get_omaid();
     $oppiaine_kokon = $parametriolio->get_oppiaine_kokon();
     $otsikko_kokon = $parametriolio->get_otsikko_kokon();
     $tiivis_kokon = $parametriolio->get_tiivis_kokon();
     $selitys_kokon = $parametriolio->get_selitys_kokon();
     $taso_kokon = $parametriolio->get_taso_kokon();
     $laajennetun_id_kokon = $parametriolio->get_laajennetun_id_kokon();
     $kieli_id = $parametriolio->get_kieli_id();
     $ylakokonaisuuden_id_kokon = $parametriolio->get_ylakokonaisuuden_id_kokon();
     $jarjestysnro_kokon = $parametriolio->get_jarjestysnro_kokon();
     $nakyvyys_kokon = $parametriolio->nakyvyys_kokon;
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $palauteolio = new Palaute();
     $linkit = "";
     // Kokonaisuuslinkit
     $sisalto = "";
     $ilmoitus = "";
     $tallennetun_id = "";
     $valikot_nayta = true;
     $kokonaisuusoliot = array();
     $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_YLEINEN);
     // Tallennettava kokonaisuus:
     $kokonaisuus = new Kokonaisuusolio(Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY, $this->get_tietokantaolio());
     // Lisätään kokonaisuudelle saadut parametrit:
     $kokonaisuus->set_arvo($omaid, Kokonaisuusolio::$sarakenimi_henkilo_id);
     $kokonaisuus->set_arvo($otsikko_kokon, Kokonaisuusolio::$sarakenimi_otsikko);
     $kokonaisuus->set_arvo($tiivis_kokon, Kokonaisuusolio::$sarakenimi_tiivis);
     $kokonaisuus->set_arvo($selitys_kokon, Kokonaisuusolio::$sarakenimi_selitys);
     $kokonaisuus->set_arvo($taso_kokon, Kokonaisuusolio::$sarakenimi_taso);
     $kokonaisuus->set_arvo($oppiaine_kokon, Kokonaisuusolio::$sarakenimi_oppiaine);
     $kokonaisuus->set_arvo($laajennetun_id_kokon, Kokonaisuusolio::$sarakenimi_laajennetun_id);
     $kokonaisuus->set_arvo($kieli_id, Kokonaisuusolio::$sarakenimi_kieli);
     $kokonaisuus->set_arvo($ylakokonaisuuden_id_kokon, Kokonaisuusolio::$sarakenimi_ylakokonaisuuden_id);
     $kokonaisuus->set_arvo($nakyvyys_kokon, Kokonaisuusolio::$sarakenimi_nakyvyys);
     // Tallennus tietokantaan:
     $palaute = $kokonaisuus->tallenna_uusi();
     // Jos tiedoissa on vikaa, esim. tyhjä otsikko:
     if ($palaute != Kokonaisuusolio::$OPERAATIO_ONNISTUI) {
         $valikot_nayta = false;
         $ilmoitus_kokon = $kokonaisuus->tulosta_virheilmoitukset();
         $uusi = true;
         $id_kokon = -1;
         $sisalto = $this->kokonaisuusnakymat->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, Toimintonimet::$kokonaisuustoiminto, $this, $parametriolio->kaavakieli, Elementti::$MUUTTUJAA_EI_MAARITELTY, Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY);
         $ilmoitus = $ilmoitus_kokon;
     } else {
         $tallennetun_id = $kokonaisuus->get_id_tietokanta();
         /* Asetetaan järjestysluku samaksi kuin kokonaisuuden id. Näin
          * varmistetaan se, ettei tule samoja. */
         $id = $kokonaisuus->get_id();
         $kokonaisuus->set_arvo($id, Kokonaisuusolio::$sarakenimi_jarjestysnro);
         $onnistuiko = $kokonaisuus->tallenna_muutokset();
         if ($onnistuiko == Kokonaisuusolio::$OPERAATIO_ONNISTUI) {
             $ilmoitus = Tekstit::$ilm_kokon_lisays_ok;
             //Aktiivisuusmerkintä:
             $aktiivisuuspalaute = paivita_aktiivisuus($omaid, $tietokantaolio, time(), Aktiivisuus::$UUDEN_KOKONAISUUDEN_TALLENNUS);
             if (!$aktiivisuuspalaute) {
                 $this->lisaa_virheilmoitus(Tekstit::$virheilm_aktiivisuuden_tallennus_eiok);
             } else {
                 $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK);
             }
         } else {
             $ilmoitus = Tekstit::$virheilm_kokon_tallennus_ok_jarjnro_eiok . " " . $kokonaisuus->tulosta_virheilmoitukset();
         }
         //=================================================================
         // Asetetaan sessiomuuttujat oikein, jotta näkyy myös
         // luettelossa. Yläkokonaisuus auki (sillä on ainakin yksi lapsi,
         // tämä) ja tämä kiinni (tällä ei voi olla lapsia, koska juuri luotu).
         $muuttujanimi_ylakok = Parametrit::linkkisessiomuuttujan_nimi($ylakokonaisuuden_id_kokon);
         $_SESSION[$muuttujanimi_ylakok] = Kokonaisuusolio::$LINKKI_AUKI;
         $muuttujanimi = Parametrit::linkkisessiomuuttujan_nimi($tallennetun_id);
         $_SESSION[$muuttujanimi] = Kokonaisuusolio::$LINKKI_KIINNI;
         //=================================================================
         $parametriolio->id_kokon = $id;
         $palauteolio2 = new Palaute();
         if ($tallennuskesken) {
             $parametriolio->uusi = false;
             $this->toteuta_nayta_kokonaisuuslomake($palauteolio2);
         } else {
             $palauteolio2 = $this->toteuta_nayta($palauteolio2);
         }
         $sisalto = $palauteolio2->get_sisalto();
         $linkit = $palauteolio2->get_linkkihtml();
     }
     $palauteolio->set_ilmoitus($ilmoitus);
     $palauteolio->set_sisalto($sisalto);
     $palauteolio->set_muokatun_id($tallennetun_id);
     $palauteolio->set_valikkonaytto($valikot_nayta);
     $palauteolio->set_kokonaisuudet($kokonaisuusoliot);
     $palauteolio->nayta_kiintolinkit();
     $palauteolio->set_linkkihtml($linkit);
     $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_KOKONAISUUS);
     return $palauteolio;
 }
Ejemplo n.º 16
0
<?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';
Ejemplo n.º 17
0
/**
 * Toteuttaa albumin (bongaus tai kuva-albumit) esikatselukuvien näytön.
 * @param Parametrit $parametriolio
 * @return Palaute Palauttaa $palauteolio-luokan olion.
 */
function toteuta_nayta_esikatselukuvat($parametriolio)
{
    $palauteolio = new Palaute();
    if ($parametriolio->kokoelmanimi == Kuva::$KUVAT_ALBUMIT) {
        $sis = "Toimintoa ei toteutettu";
    } else {
        if ($parametriolio->kokoelmanimi == Kuva::$KUVAT_BONGAUS) {
            $sis = bongaus_nayta_albumin_esikatselu($parametriolio->omaid, $parametriolio->id_lj, $parametriolio->tietokantaolio, $parametriolio->get_kayttajan_valtuudet(), $parametriolio->kuvia_rinnakkain, $parametriolio->get_ikkunan_leveys(), $parametriolio->get_kuvahakumoodi());
        }
    }
    $palauteolio->set_ilmoitus("");
    $palauteolio->set_sisalto($sis);
    return $palauteolio;
}
Ejemplo n.º 18
0
<?php

session_start();
// Aloitetaan istunto.
require_once '../kokonaisuudet/asetukset/tietokantayhteys.php';
require_once '../kokonaisuudet/yhteiset/php_yhteismetodit.php';
load_files("submit");
// Yhdistetään tietokantaan:
$tietokantaolio = new Tietokantaolio($dbtyyppi, $dbhost, $dbuser, $dbsalis);
$tietokantaolio->yhdista_tietokantaan($dbnimi);
// Tee parametriolio ja palauteolio!
$parametriolio = new Parametrit($tietokantaolio);
$palauteolio = new Palaute();
// Kontrollerit ja näkymät:
$palautuskontrolleri = new Palautuskontrolleri($tietokantaolio, $parametriolio);
$palautusnakymat = new Palautusnakymat();
/*********************** TOIMINTA-TOIMINNOT *******************************/
$toiminta = $parametriolio->get_toiminta();
$palautustoiminta = $parametriolio->get_palautustoiminto();
$lang_id = $parametriolio->kieli_id;
$kayttajan_valtuudet = $parametriolio->get_valtuudet();
// Käsitellään tilanne "$toiminta on määritelty" eli lähinnä
// kokonaisuuksiin liittyvät toiminnot sekä yleisiä toimintoja:
if ($parametriolio->get_toiminta() != "") {
    // Kirjautuminen ulos:
    if ($toiminta == Painikkeet::$KIRJAUDU_ULOS_VALUE) {
        $palauteolio = toteuta_uloskirjautuminen($parametriolio);
    }
} else {
    if ($palautustoiminta != "") {
        if ($palautustoiminta === Palautustekstit::button_new_course_value($lang_id)) {
Ejemplo n.º 19
0
 /**
  * Palauttaa uuden yksittäisen havainnon tietojen syöttöön tarkoitetun
  * lomakkeen.
  * 
  * <p>Riippuvuudet: yhteiset/php_yhteiset.php</p>
  * 
  * @return string
  */
 function nayta_uusi_havaintolomake()
 {
     $ylaluokka_id_lj = $this->parametriolio->ylaluokka_id_lj;
     $kieli_kuv = $this->parametriolio->kieli_kuv;
     $tietokantaolio = $this->parametriolio->get_tietokantaolio();
     // $tallennuskommentti kertoo mikä laji tallennettiin viimeksi.
     $tallennuskommentti = $this->parametriolio->get_tallennuspalaute();
     // Mahdolliset arvot voivat olla epätyhjiä puutteellisen yrityksen
     // jälkeen (ei tartte uudestaan naputella):
     $id_hav = $this->parametriolio->id_hav;
     $lajiluokka_id_hav = $this->parametriolio->lajiluokka_id_hav;
     $paiva_hav = $this->parametriolio->paiva_hav;
     $kk_hav = $this->parametriolio->kk_hav;
     $vuosi_hav = $this->parametriolio->vuosi_hav;
     $paikka_hav = $this->parametriolio->paikka_hav;
     $kommentti_hav = $this->parametriolio->kommentti_hav;
     $maa_hav = $this->parametriolio->maa_hav;
     $varmuus_hav = $this->parametriolio->varmuus_hav;
     //=============================================================
     $poistunappi = Html::luo_input(array(Maarite::type("submit"), Maarite::classs("rinnakkain"), Maarite::name(Bongaustoimintonimet::$havaintotoiminto), Maarite::value(Bongauspainikkeet::$PERUMINEN_HAVAINTO_VALUE)));
     $uusi_laji_nappi = Html::luo_input(array(Maarite::type("submit"), Maarite::classs("rinnakkain"), Maarite::name(Bongaustoimintonimet::$lajiluokkatoiminto), Maarite::value(Bongauspainikkeet::$UUSI_LAJILUOKKA_VALUE)));
     $havaintolomakeohje = Bongaustekstit::$havaintolomake_uusi_ohje;
     $submitnappi = Html::luo_input(array(Maarite::type("submit"), Maarite::classs("rinnakkain"), Maarite::name(Bongaustoimintonimet::$havaintotoiminto), Maarite::value(Bongauspainikkeet::$TALLENNA_UUSI_HAVAINTO_VALUE)));
     // Lajivalikko (kun vain yksi valittu)
     $otsikko = "";
     $lajivalikko = Lajiluokka::nayta_lajivalikko($lajiluokka_id_hav, $tietokantaolio, $ylaluokka_id_lj, $kieli_kuv, $otsikko);
     /*************************************************************************/
     $maavalikkohtml = "";
     try {
         $arvot = Maat::hae_maa_arvot();
         $nimet = Maat::hae_maakuvaukset();
         $name_arvo = Maat::$tietokannan_sarakenimi;
         $oletusvalinta_arvo = $maa_hav;
         $otsikko = Maat::$valikko_otsikko;
         $onchange_metodinimi = "kirjoita_maa";
         $onchange_metodiparametrit_array = array();
         $maavalikkohtml .= Html::luo_pudotusvalikko_onChange($arvot, $nimet, $name_arvo, $oletusvalinta_arvo, $otsikko, $onchange_metodinimi, $onchange_metodiparametrit_array);
     } catch (Exception $poikkeus) {
         $maavalikkohtml = "Virhe maavalikossa! (" . $poikkeus->getMessage() . ")";
     }
     /*************************************************************************/
     $naytettava_valinta = $varmuus_hav;
     $varmuusvalikko = Varmuus::muodosta_valikkohtml(false, $naytettava_valinta);
     // kommentin muotoilu:
     if (!empty($tallennuskommentti)) {
         $tallennuskommentti = $tallennuskommentti . Html::luo_br();
     }
     // Tallennetun näyttö tallennuksen jälkeen. Nyt pitää arvata eli
     // katsoa tietokannasta suurin id ja sillä perusteella asettaa
     // arvoksi sitä yksi isompi.
     $id_hav_uusi = hae_suurin_id($this->tietokantaolio, Tietokannan_taulunimet::$bhavainnot) + 1;
     $url_jatke_nyk = "#havainto" . $id_hav_uusi;
     $url_id = "?id_hav=" . $id_hav_uusi . $url_jatke_nyk;
     // Näin löytyy päivitettävä havainto!
     $maar_array = array();
     // Rivi1: ohjeita
     $rivi1 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_b(Html::luo_span($tallennuskommentti, array(Maarite::id(Bongausasetuksia::$havaintolomake_tallennustiedote_id))) . $havaintolomakeohje, $maar_array), array(Maarite::colspan(2))), $maar_array);
     // taulukkorivi
     // Toinen rivi: pvm-painikkeet
     $rivi2 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_button(Bongauspainikkeet::$ed_vko, array(Maarite::id("b1"), Maarite::onclick("nayta_ed_vko", ""))) . Html::luo_button(Bongauspainikkeet::$ed_paiva, array(Maarite::id("b2"), Maarite::onclick("nayta_ed", ""))) . Html::luo_button(Bongauspainikkeet::$seur_paiva, array(Maarite::id("b3"), Maarite::onclick("nayta_seur()", ""))) . Html::luo_button(Bongauspainikkeet::$seur_vko, array(Maarite::id("b4"), Maarite::onclick("nayta_seur_vko()", ""))), array(Maarite::colspan(2), Maarite::align("left"))), $maar_array);
     // taulukkorivi
     // Rivi3: pvm-kentät
     $rivi3 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for("paiva", "*" . Bongaustekstit::$paiva . ":", ""), array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_input(array(Maarite::type("text"), Maarite::id("paiva"), Maarite::name("paiva_hav"), Maarite::value($paiva_hav), Maarite::size("4"), Maarite::max_length("2"), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . Html::luo_label_for("kk", "*" . Bongaustekstit::$kk . ":", "") . Html::luo_input(array(Maarite::type("text"), Maarite::id("kk"), Maarite::name("kk_hav"), Maarite::value($kk_hav), Maarite::size("4"), Maarite::max_length("2"), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . Html::luo_label_for("vuosi", "*" . Bongaustekstit::$vuosi . ":", "") . Html::luo_input(array(Maarite::type("text"), Maarite::id("vuosi"), Maarite::name("vuosi_hav"), Maarite::value($vuosi_hav), Maarite::size("4"), Maarite::max_length("4"), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . Html::luo_span("", array(Maarite::id("pvm_naytto"))), array(Maarite::align("left"))), $maar_array);
     // taulukkorivi
     // painike, josta saadaan näkyviin monta lajia kerralla:
     $rivi4 = Html::luo_tablerivi(Html::luo_tablesolu("", array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_input(array(Maarite::type("submit"), Maarite::value(Bongauspainikkeet::$NAYTA_MONEN_HAVAINNON_VALINTA_VALUE), Maarite::title(Bongauspainikkeet::$NAYTA_MONEN_HAVAINNON_VALINTA_TITLE), Maarite::name(Bongaustoimintonimet::$havaintotoiminto))), array(Maarite::align("left"))), $maar_array);
     // rivi5: Lajivalinta
     $rivi5 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for("lisaa_myohemmin", "*" . Bongaustekstit::$laji . ": ", ""), array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_span($lajivalikko, array(Maarite::id(Bongausasetuksia::$havaintolomake_lajivalikko_id))) . Html::luo_span($uusi_laji_nappi, array(Maarite::id(Bongausasetuksia::$havaintolomake_lajivalikkopainike_id))) . Html::luo_span("(" . Bongaustekstit::$havaintolomake_laji_puuttuu_ohje . ")", array(Maarite::id(Bongausasetuksia::$havaintolomake_lajivalintaohje_id))), array(Maarite::align("left"), Maarite::id(Bongausasetuksia::$havaintolomake_lajivalintarivi_id))), $maar_array);
     // taulukkorivi
     // rivi6: Paikka ja maa:
     $rivi6 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for("lisaa myohemmin", "*" . Bongaustekstit::$paikka . ": ", ""), array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_input(array(Maarite::type("text"), Maarite::name("paikka_hav"), Maarite::value($paikka_hav))) . $maavalikkohtml, array(Maarite::align("left"))), $maar_array);
     // taulukkorivi
     // rivi7: Havainnon varmuus:
     $rivi7 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for("lisaa myohemmin", Varmuus::$valikko_otsikko, ""), array(Maarite::align("left"))) . Html::luo_tablesolu($varmuusvalikko, array(Maarite::align("left"))), $maar_array);
     // taulukkorivi
     // rivi8: Havaintokommentti:
     $rivi8 = Html::luo_tablerivi(Html::luo_tablesolu(Bongaustekstit::$kommentti, array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_textarea($kommentti_hav, array(Maarite::cols(50), Maarite::rows(6), Maarite::name("kommentti_hav"))), array(Maarite::align("left"))), $maar_array);
     // taulukkorivi
     // rivi9: Painikkeet:
     $rivi9 = Html::luo_tablerivi(Html::luo_tablesolu("", array(Maarite::align("left"))) . Html::luo_tablesolu($submitnappi . $poistunappi, array(Maarite::align("left"))), $maar_array);
     // taulukkorivi
     // Rivit taulukon sisään:
     $taulukko = Html::luo_table($rivi1 . $rivi2 . $rivi3 . $rivi4 . $rivi5 . $rivi6 . $rivi7 . $rivi8 . $rivi9, array(Maarite::summary("uudet_tiedot"), Maarite::id(Bongausasetuksia::$havaintolomakkeen_id)));
     // Taulukko lomakkeen sisään:
     $html = Html::luo_form($taulukko, array(Maarite::align("center"), Maarite::method("post"), Maarite::action("index.php" . $url_id)));
     // näytetään js-päivämäärä
     $html .= Html::luo_script_js("nayta_pvm();");
     return $html;
 }
Ejemplo n.º 20
0
 /**
  * Tallentaa linkin kuvan ja albumin/havainnon&lajin välille. Palauttaa
  * onnistuessaan arvon Kuva::OPERAATIO_ONNISTUI tai sitten virheilmoituksen.
  * 
  * <p>Huom! Parametriolion id_kuva-muuttujan pitää olla määritelty,
  * muuten ei tehdä mittään!</p>
  * 
  * HUOM! MENEEKÖ JÄRJESTYSLUKU-JUTTU SEKAISIN, JOS SAMALLE KUVALLE MONTA
  * LINKKIÄ?! 
  * 
  * @param \Parametrit $parametriolio & edessä on siksi, että saadaan
  * välitettyä tietoa parametriolion avulla kutsuvaan ohjelmaan. 
  */
 public static function tallenna_kuvalinkit(&$parametriolio)
 {
     $tietokantaolio = $parametriolio->tietokantaolio;
     $uuden_kuvan_id = $parametriolio->id_kuva;
     $palaute = Kuva::$VIRHE;
     // Onnistumisen tarkastelu:
     $onnistumiset_lkm = 0;
     $linkitettavat_lkm = 0;
     // Näille pitäisi luoda linkit.
     // Tämän avulla osataan näyttää bongausalbumi tallennuksen jälkeen.
     $vika_id_lj = Lajiluokka::$MUUTTUJAA_EI_MAARITELTY;
     if ($uuden_kuvan_id == Parametrit::$EI_MAARITELTY) {
         $palaute = "Uuden kuvan id ei ole m&auml;&auml;ritelty!";
     } else {
         $taulu = $parametriolio->get_kuvalinkkitaulunimi();
         $sarakenimet = $parametriolio->get_kuvalinkkitaulun_sarakenimitaulukko();
         // Jarjestysluvuksi laitetaan uuden kuvan id.
         $jarjestysluku = $uuden_kuvan_id;
         // tapaus: monen havainnon valinta:
         if ($parametriolio->kokoelmanimi == Kuva::$KUVAT_BONGAUS && !empty($parametriolio->havaintovalinnat)) {
             $valitut_hav_idt = $parametriolio->havaintovalinnat;
             $linkitettavat_lkm = sizeof($valitut_hav_idt);
             // Tallennetaan yksi kerrallaan linkit. Huom! Ainut keksimäni
             // järkevä tapa täällä on tallentaa kuvalinkki samaan lajiluokkaan
             // kuin havaintokin on. Näin sama kuva saatetaan linkittää eri
             // lajeihin, mutta tämähän on käyttäjän tyhmyyttä.. Toki se
             // korjaantuu havainnon lajiluokkaa korjaamalla.
             foreach ($valitut_hav_idt as $id_hav) {
                 //Pitää laji_id hakea kustakin havainnosta erike
                 $hav = new Havainto($tietokantaolio, $id_hav);
                 if ($hav->olio_loytyi_tietokannasta) {
                     $id_lj = $hav->get_lajiluokka_id();
                     $vika_id_lj = $id_lj;
                     $arvot = array($uuden_kuvan_id, $id_lj, $id_hav, $jarjestysluku);
                     $virheilmoitus = "";
                     $onnistuiko_linkki = $parametriolio->tietokantaolio->tallenna_uusi_rivi($taulu, $sarakenimet, $arvot, $virheilmoitus);
                     if ($onnistuiko_linkki == Tietokantaolio::$HAKU_ONNISTUI) {
                         $onnistumiset_lkm++;
                     }
                 }
             }
             // Albumin näyttöä varten (joka lajille on oma albumi):
             $parametriolio->id_lj = $vika_id_lj;
         } else {
             // Vain yksi tallennetaan:
             $linkitettavat_lkm = 1;
             // Yksi on bongaus:
             if ($parametriolio->kokoelmanimi == Kuva::$KUVAT_BONGAUS) {
                 $arvot = array($uuden_kuvan_id, $parametriolio->id_lj, $parametriolio->id_hav, $jarjestysluku);
             } else {
                 $arvot = array($uuden_kuvan_id, $parametriolio->id_alb, $jarjestysluku);
             }
             $virheilmoitus = "";
             $onnistuiko_linkki = $parametriolio->tietokantaolio->tallenna_uusi_rivi($taulu, $sarakenimet, $arvot, $virheilmoitus);
             if ($onnistuiko_linkki == Tietokantaolio::$HAKU_ONNISTUI) {
                 $onnistumiset_lkm++;
             }
         }
         if ($onnistumiset_lkm > 0 && $onnistumiset_lkm === $linkitettavat_lkm) {
             $palaute = Kuva::$OPERAATIO_ONNISTUI;
         } else {
             if ($linkitettavat_lkm == 0) {
                 $palaute = "Virhe! Yht&auml;&auml; linkki&auml; ei tallennettu, " . " koska valintoja ei havaittu!";
             } else {
                 $palaute = "Virhe! Vain " . $onnistumiset_lkm . " linkki&auml; " . "tallennettiin! Piti tallentaa " . $linkitettavat_lkm . " kpl.";
             }
         }
     }
     return $palaute;
 }
Ejemplo n.º 21
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.º 22
0
 /**
  * Palauttaa koosteessa näytettävän kokonaisuuden tulostusta varten optimoidun
  * html-koodin.
  *
  * @param Elementti $elementti Olio, joka viittaa kokonaisuuteen, jonka
  * näkymää parhaillaan puuhaillaan.
  * @param Kokonaisuusolio $kokonaisuus
  * @param Parametrit $parametriolio
  * @param int $kohdeoikeudet Käyttäjän oikeudet tähän olioon.
  * @param <type> $selitys_auki jos true, niin selitys näytetään, muuten ei.
  * @return <type>
  */
 function luo_koostenakyma_tulostus($elementti, $kokonaisuus, $parametriolio, $selitys_auki, $kohdeoikeudet)
 {
     $omaid = $parametriolio->get_omaid();
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $kayttajan_valtuudet = $parametriolio->get_valtuudet();
     $palaute = "";
     $selitys = "";
     $nayta_selitys_nappi = "";
     /* Näyttää selityksen. */
     $siirra_ylemmaksi_nappi = "";
     $siirra_alemmaksi_nappi = "";
     // Alla jostakin syystä !empty($kokonaisuus->getSelitys()) ei toiminut!
     if ($kokonaisuus->getSelitys() != "") {
         $onsubmit_parametrit = array($kokonaisuus->get_id());
         /* Tämän avulla löytyvät */
         $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon=" . $kokonaisuus->get_id());
         if ($selitys_auki) {
             $title = Painikkeet::$SULJE_SELITYS_title;
             $onsubmit_funktionimi = "sulje_selitys";
             $input_maaritteet = array('name' => Toimintonimet::$kokonaisuustoiminto, 'value' => Painikkeet::$SULJE_SELITYS_value, 'title' => $title);
         } else {
             $title = Painikkeet::$NAYTA_SELITYS_title;
             $onsubmit_funktionimi = "nayta_selitys";
             $input_maaritteet = array('name' => Toimintonimet::$kokonaisuustoiminto, 'value' => Painikkeet::$NAYTA_SELITYS_value, 'title' => $title);
         }
         $nayta_selitys_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
     }
     if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) {
         // Järjestyksen muutosnapit (jos mielekästä):
         /*$siirra_ylemmaksi_nappi = "";
                     if($kokonaisuus->getEdellisenId_taso() != Kokonaisuusolio::$kokon_edellista_ei_ole){
                         $onsubmit_funktionimi = ""; // Tulevaa varten.
                         $onsubmit_parametrit = "";  // Ei ole vielä.
                         $form_maaritteet =
                             array("class" => "rinnakkain",
                                 "method"=>"post",
                                "action"=>"{$_SERVER['PHP_SELF']}?id_kokon=".$kokonaisuus->get_id().
                                             "&oppiaine_kokon=".$kokonaisuus->getOppiaine().
                                             "&kieli_id=".$kokonaisuus->getKieli().
                                             "&ed_id_kokon=".$kokonaisuus->getEdellisenId_taso().
                                             "&siirto_ylos=true");
                         $input_maaritteet =
                             array("value" => Painikkeet::$SIIRRA_YLEMMAKSI_KOKON_value,
                                 "title" => Painikkeet::$SIIRRA_YLEMMAKSI_KOKON_title,
                                 "name"=>Toimintonimet::$kokonaisuustoiminto);
         
                         try{
                             $siirra_ylemmaksi_nappi =
                             Html::luo_submit_painike_onsubmit_toiminnolla(
                                                         $onsubmit_funktionimi,
                                                         $onsubmit_parametrit,
                                                         $form_maaritteet,
                                                         $input_maaritteet);
                         }
                         catch (Exception $poikkeus){
                             $siirra_ylemmaksi_nappi = $poikkeus->getMessage();
                         }
                     }
         
         
                     // Alaspäin siirto:
                     $siirra_alemmaksi_nappi = "";
                     if($kokonaisuus->getSeuraavanId_taso() != Kokonaisuusolio::$kokon_seuraavaa_ei_ole){
                         $onsubmit_funktionimi = ""; // Tulevaa varten.
                         $onsubmit_parametrit = "";  // Ei ole vielä.
                         $form_maaritteet =
                             array("class" => "rinnakkain",
                                 "method"=>"post",
                                "action"=>"{$_SERVER['PHP_SELF']}?id_kokon=".$kokonaisuus->get_id().
                                             "&oppiaine_kokon=".$kokonaisuus->getOppiaine().
                                             "&kieli_id=".$kokonaisuus->getKieli().
                                             "&seur_id_kokon=".$kokonaisuus->getSeuraavanId_taso().
                                             "&siirto_ylos=0");
                         $input_maaritteet =
                             array("value" => Painikkeet::$SIIRRA_ALEMMAKSI_KOKON_value,
                                 "title" => Painikkeet::$SIIRRA_ALEMMAKSI_KOKON_title,
                                 "name"=>Toimintonimet::$kokonaisuustoiminto,);
         
                         try{
                             $siirra_alemmaksi_nappi =
                             Html::luo_submit_painike_onsubmit_toiminnolla(
                                                         $onsubmit_funktionimi,
                                                         $onsubmit_parametrit,
                                                         $form_maaritteet,
                                                         $input_maaritteet);
                         }
                         catch (Exception $poikkeus){
                             $siirra_alemmaksi_nappi = $poikkeus->getMessage();
                         }
                     }*/
     }
     // Tehtävien lisääminen sopivasti oikeutetuille:
     if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) {
         /* Uuden tehtävän luontipainike *
                     $onsubmit_funktionimi= "nayta_tehtavalomake";
                     $onsubmit_parametrit = array($kokonaisuus->get_id());    /* Tarpeen?*
         
                     $form_maaritteet = array('method'=>'post',
                                             'class'=>'rinnakkain',
                                               'action'=>"{$_SERVER['PHP_SELF']}?".
                                               "id_kokon=".$kokonaisuus->get_id().
                                               "&uusi=true");
         
                     $input_maaritteet = array('name'=>Toimintonimet::$tehtavatoiminto,
                                         'value'=>Painikkeet::$tehtava_uusi_value);
         
                     try{
                         $uusi_teht_nappi =
                             Html::luo_submit_painike_onsubmit_toiminnolla(
                                                             $onsubmit_funktionimi,
                                                             $onsubmit_parametrit,
                                                             $form_maaritteet,
                                                             $input_maaritteet);
                     }
                     catch (Exception $poikkeus){
                         $palaute .= "Virhe tehtavanapin luomisessa: ".
                                         $poikkeus->getMessage();
                     }*/
     }
     // TEhtävien lisäyspainikekoodi loppuu.
     /* haetaan mahdolliset kuvat */
     $kuvahtml_tiivis = $kokonaisuus->hae_kuvat(Kuvat::$kohde_kokonaisuus_tiivistelma, $omaid, $tietokantaolio, false);
     /* Kaikki kokonaisuudet ovat samanlaisia tasosta riippumatta */
     $class_arvo = "elementti_kokon";
     $otsikko = "<div class = " . $class_arvo . " id='elem" . $elementti->get_id() . "'>" . "<h3>" . $kokonaisuus->getOtsikkomerkinta() . $kokonaisuus->getOtsikko() . " " . $siirra_ylemmaksi_nappi . $siirra_alemmaksi_nappi . "</h3>";
     /* Haetaan vielä tarvittaessa selitys: */
     if ($selitys_auki && $kokonaisuus->getSelitys() != "") {
         /* haetaan mahdolliset kuvat */
         $kuvahtml_selitys = $kokonaisuus->hae_kuvat(Kuvat::$kohde_kokonaisuus_selitys, $omaid, $tietokantaolio, false);
         $selitysotsikko = "<div class='selitysotsikko'>" . Tekstit::$otsikko_selitys . "</div>";
         /* Muotoillaan selitys: */
         $selitys_muokattu = muotoile_merkit($kokonaisuus->getSelitys());
         // Pikkukaavat ensin, jotta kursiivin poisto onnistuu ennen
         // sulkujen käsittelyä.
         $selitys_muokattu = Kaavaeditori::muotoile_pikkukaavat($selitys_muokattu);
         // Sitten normaalikaavat:
         $selitys_muokattu = Kaavaeditori::muotoile_kaavat($selitys_muokattu);
         $selitys = $selitysotsikko . $kuvahtml_selitys . $selitys_muokattu;
     }
     /* Muotoillaan tiivistelmän merkit ja kaavat: */
     $tiivistelma = muotoile_merkit($kokonaisuus->getTiivis());
     $tiivistelma = Kaavaeditori::muotoile_pikkukaavat($tiivistelma);
     $tiivistelma = Kaavaeditori::muotoile_kaavat($tiivistelma);
     $tiivistelma = $kuvahtml_tiivis . $tiivistelma . "<br />";
     /* Ja sitten vain palaset pakettiin: HUOM! Täällä katsotaan, ettei
      * piilotetun sisältö näy. 
      */
     $piilotushuomautus = "<div class='piilotushuomautus'>" . Tekstit::$ilm_kokon_piilotettu_paitsi_ots . "</div>";
     $yksityisilmoitus = "<div class='yksityisilmoitus'>" . Tekstit::$ilm_kokon_yksityinen . "</div>";
     $vainkoosteilmoitus = "<div class='koosteilmoitus'>" . Tekstit::$ilm_kokon_vain_kooste . "</div>";
     /**
      * Tänne mennään, kun kokonaisuus näytetään,
      * oli se sitten piilossa tahi ei.
      */
     if ($kokonaisuus->getNakyvyys() + 0 === Nakyvyys::$VAIN_KOOSTEESSA || $kohdeoikeudet >= Lisavaltuudet::$SAA_NAHDA_EI_MUOKATA_EI_POISTAA) {
         $normaali_kokonaisuus = $otsikko;
         // Jos kokonaisuus on muilta piilossa, lisätään viesti:
         if ($kokonaisuus->getNakyvyys() + 0 === Nakyvyys::$VAIN_OTSIKKO) {
             $normaali_kokonaisuus .= $piilotushuomautus . $tiivistelma;
         } else {
             if ($kokonaisuus->getNakyvyys() + 0 === Nakyvyys::$YKSITYINEN) {
                 $normaali_kokonaisuus .= $tiivistelma;
             } else {
                 if ($kokonaisuus->getNakyvyys() + 0 === Nakyvyys::$VAIN_KOOSTEESSA) {
                     $normaali_kokonaisuus .= $tiivistelma;
                 } else {
                     $normaali_kokonaisuus .= $tiivistelma;
                 }
             }
         }
         /* $normaali_kokonaisuus .=
            " ".$nayta_selitys_nappi;*/
         /* Lisätään vielä div selitystä varten: */
         if ($selitys_auki && $kokonaisuus->getSelitys() != "") {
             $normaali_kokonaisuus .= "<div class='selitys' id='selitys" . $kokonaisuus->get_id() . "'>" . $selitys . "</div>";
         }
         $normaali_kokonaisuus .= "</div>";
         /* Kokonaisuus loppuu. */
         $palaute = $normaali_kokonaisuus;
     } else {
         if ($kokonaisuus->getNakyvyys() + 0 === Nakyvyys::$VAIN_OTSIKKO) {
             $class_arvo = "elementti_kokon";
             $otsikko = "<div class = " . $class_arvo . " id='elem" . $elementti->get_id() . "'>" . "<h3>" . $kokonaisuus->getOtsikko() . " " . $siirra_ylemmaksi_nappi . $siirra_alemmaksi_nappi . "</h3>";
             $palaute = $otsikko;
             $palaute .= $piilotushuomautus;
             $palaute .= "</div>";
             /* Kokonaisuus loppuu. */
         } else {
             // Kun jonkun toisen yksityinen / vain koosteessa, eikä hallintavaltuuksia:
             $palaute = "";
         }
     }
     return $palaute;
 }
Ejemplo n.º 23
0
 /**
  * Palauttaa elementtilistan yhden kokonaisuuden + näytettävien tehtävien
  * muodostaman html-koodin.
  * 
  * HUOM: hiukan hämäävästi kokonaisuus tekee yhden taulukkorivin ja 
  * kukin tehtävä yhden lisää, eli tämä voi palauttaa useammankin 
  * taulukkorivin html:n.
  * 
  * @param Kokonaisuusolio $kokon
  * @param type $rajataso huomaa &!
  * @param type $piilotuskaynnissa huomaa &!
  * @param boolean $on_kirjautunut false - ei kirjautunut käyttäjä, true -
  * käyttäjä on kirjautunut ja hänellä voi olla enemmän oikeuksia.
  */
 private function luo_elementtilistan_kokonrivi($kokon, &$rajataso, &$piilotus_kaynnissa, $on_kirjautunut)
 {
     $parametriolio = $this->get_parametriolio();
     $tietokantaolio = $this->get_tietokantaolio();
     $tyhja_taul = array();
     $palautus_html = "";
     if ($kokon instanceof Kokonaisuusolio) {
         $id_kokon = $kokon->get_id();
         $teht_naytto_nimi = Parametrit::sessiomuut_nimi_kokontehtnaytto_koostelomake($id_kokon);
         $taso = $kokon->getOtsikkotaso();
         if ($taso > 8) {
             $taso = 8;
             /* Enempää tasoja ei ole tyyleissä */
         }
         // Tarkistetaan tässä, ollaanko tultu pois piilotettavien
         // alilinkkien joukosta
         if ($piilotus_kaynnissa && $kokon->getOtsikkotaso() <= $rajataso) {
             $piilotus_kaynnissa = false;
         }
         // Muotoillaan linkkielementin alkutagi=====================
         // Linkkielementin alkutagin alku:
         $linkki_id = "linkki" . $kokon->get_id();
         $rivin_alku = "<tr class='kooste_elementti'" . "id='" . $linkki_id . "'";
         // Session-muuttuja sanelee näyttämisen.
         // HUOM! Linkki_kiinni/linkki_auki vaikuttaa lapsilinkkeihin, ei
         // varsinaisen linkin näkymiseen! Tämän avulla muistetaan
         // puurakenne.
         // Idea: kokonaisuuslista käydään läpi. Jokaisen kohdalla
         // tarkistetaan onko auki. Jos kiinni, käydään läpi alilinkit
         // ja poistetaan näkyvistä. Samalla tarkistetaan sessio-
         // muuttuja ja asetetaan ei-määritellyt kiinni-oleviksi,
         // jolloin linkistö on avatessa mahdollisimman kiinni.
         $linkkielem_style = " ";
         $muuttujanimi = Parametrit::linkkisessiomuuttujan_nimi($kokon->get_id());
         // Eka kerralla ja ryhmän vaihdon yhteydessä suljetaan
         // kaikki linkit. Poikkeus: kun tullaan linkin kautta,
         // on järkevää avata kyseisen kokonaisuuden aliotsikot.
         // Kokonaisuusryhmän_vaihto on oletusarvoisesti false.
         if (!isset($_SESSION[$muuttujanimi]) || $parametriolio->kokonaisuusryhman_vaihto) {
             $_SESSION[$muuttujanimi] = Kokonaisuusolio::$LINKKI_KIINNI;
             // Käsitellään tässä tulo linkin kautta, jolloin
             // määritellään sessioarvo näytettävän alikoko-
             // suudelle:
             if ($parametriolio->naytto_urlin_mukaan() && $id_kokon == $kokon->getYlakokonaisuuden_id()) {
                 // Linkki kiinni -> näkyy vain yksi taso alemma.
                 // (tämä ei kyllä sitä rajoita, mutta asettaa
                 // plussan oikein)
                 $_SESSION[$muuttujanimi] = Kokonaisuusolio::$LINKKI_KIINNI;
             } else {
                 // Eka taso näytetään aina, mutta muita ei.
                 if ($taso > 1) {
                     $linkkielem_style = " style='display:none;'";
                 }
             }
         } else {
             if ($piilotus_kaynnissa) {
                 $linkkielem_style = " style='display:none;'";
             } else {
                 if (!$piilotus_kaynnissa && $kokon->on_naytettavia_lapsia($parametriolio->get_omaid()) && $_SESSION[$muuttujanimi] == Kokonaisuusolio::$LINKKI_KIINNI) {
                     $piilotus_kaynnissa = true;
                     // Rajataso muutetaan tämän tasoksi, jolloin
                     // tiedetään, milloin tullaan ylemmäksi taas.
                     $rajataso = $kokon->getOtsikkotaso();
                 } else {
                     //Ellei lapsia tai linkki auki -> näytetään seuraava
                     // Ei lisätä tyyliä
                 }
             }
         }
         // Linkkielementin alkutagin loppuosa:
         $rivin_alku .= $linkkielem_style . ">";
         //==========================================================
         // Plus lisätään, jos kokonaisuudella on jälkeläisiä ja
         // linkki on kiinni.
         if ($kokon->on_naytettavia_lapsia($parametriolio->get_omaid()) && $_SESSION[$muuttujanimi] == Kokonaisuusolio::$LINKKI_KIINNI) {
             $plus = "+ ";
         } else {
             if ($kokon->on_naytettavia_lapsia($parametriolio->get_omaid()) && $_SESSION[$muuttujanimi] == Kokonaisuusolio::$LINKKI_AUKI) {
                 $plus = "− ";
             } else {
                 $plus = "";
             }
         }
         $etumerkin_html = "<td class='linkin_etumerkki'" . "id='etumerkki" . $kokon->get_id() . "'" . "onmouseover='hiiri_paalla(this)'" . "onmouseout='hiiri_pois_paalta(this)'" . "onclick='vaihda_etumerkki(this.id," . $kokon->get_id() . ",\"koostelomake\")'>{$plus}</td>";
         $valruutusolu = $this->luo_elementtilistan_valintaruutusolu($kokon, true);
         // Preview button:
         $value = $this->luo_valittulistan_valintaruudun_value($kokon);
         $preview_button = $this->koostenakymat->create_button_show_preview($value);
         $preview_button_cell = Html::luo_tablesolu($preview_button, $tyhja_taul);
         //=============== Lisätään tehtävien näyttöpainike, jos
         // niitä kokonaisuudella on: ===========================
         // Ensin haetaan tehtävät, joita tarvitaan mahdollisesti
         // myöhemmin (vain tehtävät, joihin oikeudet):
         $tehtavat = Tehtava::hae_tehtavat_koostelomake($kokon->get_id(), $tietokantaolio, $this->get_parametriolio()->get_omaid());
         // Tarkistetaan, ovatko tehtävät jo koosteessa ja lisätään vastaava
         // muuttujan arvo (jos kysymys muokkauksesta):
         $nyk_kooste = $this->get_olio();
         if ($nyk_kooste instanceof Kooste) {
             $elementit = $nyk_kooste->hae_elementit();
             $this->merkitse_valitut($tehtavat, $elementit);
             $kooste_id = $nyk_kooste->get_id();
         } else {
             $kooste_id = Kooste::$MUUTTUJAA_EI_MAARITELTY;
         }
         $teht_lkm = sizeof($tehtavat);
         $nappi_id = "tehtavanappi_" . $kokon->get_id();
         if ($teht_lkm > 0) {
             if (isset($_SESSION[$teht_naytto_nimi]) && $_SESSION[$teht_naytto_nimi] == Kokonaisuusolio::$TEHT_NAYTA) {
                 // Tehtävät näkyvissä, joten mahdollistetaan piilotus:
                 $show = false;
             } else {
                 // Tehtävät piilossa, joten mahdollistetaan näyttö:
                 $show = true;
             }
             $tehtnappi = $this->koostenakymat->create_button_showhide_problems_in_summaryform($show, $kooste_id, $kokon->get_id(), $nappi_id);
         } else {
             $tehtnappi = "";
         }
         // Luodaan solu kuitenkin aina:
         $tehtnappisolu = Html::luo_tablesolu($tehtnappi, array());
         //===================== Rivin lopputagi ================
         $rivin_loppu = "</tr>";
         // Otsikkonumeroita ei näytetä tietyn tason jälkeen:
         if ($taso > Kokonaisuusolio::$max_otsikkonron_nayttotaso) {
             $otsikkonro = "";
         } else {
             $otsikkonro = $kokon->getOtsikkomerkinta() . " ";
         }
         $ruudun_id = $this->luo_elementtilistan_valintaruudun_id($kokon);
         /* Otsikon klikkaaminen paivittää valittujen listan. */
         $elem_otsikko = $this->luo_elementtilistan_otsikkosolu($ruudun_id, $otsikkonro, "", $taso, $kokon->getOtsikko(), $kokon->get_id());
         // Julkiset näytetään ilman mukinoita:
         if ($kokon->getNakyvyys() + 0 === Nakyvyys::$JULKINEN) {
             $palautus_html .= $rivin_alku . $etumerkin_html . $elem_otsikko . $valruutusolu . $preview_button_cell . $tehtnappisolu . $rivin_loppu;
         } else {
             if ($on_kirjautunut) {
                 // Jos näkyvyys ei ole julkinen, tarkistetaan olion
                 // kohdeoikeudet. Tätä ei tehdä julkisille, jottei
                 // hidasta menoa liikaa:
                 /*======================== käyttäjän oikeudet ====*/
                 $kohdeoikeudet = Henkilo::hae_kayttajan_kohdeoikeudet($kokon->getHenkiloId(), $this->get_parametriolio()->get_omaid(), Oliotyyppi::$KOKONAISUUS, $kokon->get_id(), $tietokantaolio);
                 /*===============================================*/
                 // Jos on vähintään muokkausoikeudet, näytetään
                 // linkki sopivasti muotoiltuna:
                 if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) {
                     if ($kokon->getNakyvyys() + 0 === Nakyvyys::$YKSITYINEN) {
                         $class_arvo = "yksityinen";
                     } else {
                         if ($kokon->getNakyvyys() + 0 === Nakyvyys::$VAIN_KOOSTEESSA) {
                             $class_arvo = "vain_koosteessa";
                         } else {
                             if ($kokon->getNakyvyys() + 0 === Nakyvyys::$VAIN_OTSIKKO) {
                                 $class_arvo = "piilotettu";
                             } else {
                                 $class_arvo = "outo";
                             }
                         }
                     }
                     $elem_otsikko = $this->luo_elementtilistan_otsikkosolu($ruudun_id, $otsikkonro, $class_arvo, $taso, $kokon->getOtsikko(), $kokon->get_id());
                     $palautus_html .= $rivin_alku;
                     $palautus_html .= $etumerkin_html;
                     $palautus_html .= $elem_otsikko;
                     $palautus_html .= $valruutusolu;
                     $palautus_html .= $preview_button_cell;
                     $palautus_html .= $tehtnappisolu;
                     $palautus_html .= $rivin_loppu;
                 }
             } else {
                 // Ei näytetä linkkiä!
             }
         }
         // Täällä on aika tarkistaa, näytetäänkö kokonaisuuden
         // tehtävät täällä ja myönteisessä tapauksessa näytetään.
         if (isset($_SESSION[$teht_naytto_nimi]) && $_SESSION[$teht_naytto_nimi] == Kokonaisuusolio::$TEHT_NAYTA) {
             foreach ($tehtavat as $teht) {
                 $palautus_html .= $this->luo_elemlistan_tehtavarivi($teht, true);
             }
         } else {
             // Varmistetaan arvo:
             $_SESSION[$teht_naytto_nimi] = Kokonaisuusolio::$TEHT_PIILOSSA;
         }
     }
     return $palautus_html;
 }
Ejemplo n.º 24
0
/**
 * Toteuttaa kuvan poistovahvistuksen näyttämisen. Mukaan haetaan ja näytetään
 * poistettava kuva.
 *
 * @param Parametrit $parametriolio
 * @return Palaute $palauteolio
 */
function toteuta_nayta_poistovahvistus($parametriolio)
{
    $id_kokon = $parametriolio->id_kokon;
    $id_teht = $parametriolio->id_teht;
    $kohde = $parametriolio->kohde_kuva;
    $kohde_id = $parametriolio->id_kohde_kuva;
    $kuva_id = $parametriolio->id_kuva;
    $tietokantaolio = $parametriolio->get_tietokantaolio();
    $html = "";
    /* Palautettava koodi */
    $palauteolio = new Palaute();
    $ilmoitus = "";
    /******************** Painikkeet *****************************/
    $peru_nappi = "";
    $poistovahvistus_nappi = "";
    /* Uuden kuvan lisäyspainike tehtävään*/
    $onsubmit_funktionimi = "nayta_kuvan_poistovahvistus";
    $onsubmit_parametrit = array($kohde, $kuva_id);
    /* Kuvan id*/
    /* Muotoillaan muuttujan name-arvo kohteen mukaan: */
    $id_name = "";
    if ($kohde == Kuvat::$kohde_kokonaisuus_tiivistelma || $kohde == Kuvat::$kohde_kokonaisuus_selitys) {
        $id_name = "id_kokon";
    } else {
        if ($kohde == Kuvat::$kohde_tehtava) {
            $id_name = "id_teht";
        } else {
            if ($kohde == Kuvat::$kohde_ratkaisu) {
                $id_name = "id_ratk";
            } else {
                $id_name = "id_tuntematon";
            }
        }
    }
    $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "&id_kuva=" . $kuva_id . "&id_kokon=" . $id_kokon . "&id_teht=" . $id_teht . "&" . $id_name . "=" . $kohde_id . "&kohde_kuva=" . $kohde);
    $input_maaritteet = array('name' => Toimintonimet::$kuvatoiminto, 'value' => Painikkeet::$PERU_POISTO_KUVA_VALUE);
    try {
        $peru_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
    } catch (Exception $poikkeus) {
        $ilmoitus = "Virhe poiston perumisnapin luomisessa: " . $poikkeus->getMessage();
    }
    /* Poiston vahvistusnappi menee melkein samoilla muuttujilla: */
    $input_maaritteet = array('name' => Toimintonimet::$kuvatoiminto, 'value' => Painikkeet::$POISTOVAHVISTUS_KUVA_VALUE);
    try {
        $poistovahvistus_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
    } catch (Exception $poikkeus) {
        $ilmoitus .= "Virhe poistonapin luomisessa: " . $poikkeus->getMessage();
    }
    /******************** Painikkeet *****************************/
    /* Haetaan poistettava kuva: */
    $taulunimi = "kuvat";
    $sarakenimi = "id";
    $hakuarvo = $kuva_id;
    $hakutulosolio = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
    if ($hakutulosolio == Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
        $ilmoitus .= "<br/>" . Tekstit::$ilm_kuva_poisto_kuvaa_ei_loytynyt;
        $html .= Tekstit::$ilm_kuva_poisto_kuvaa_ei_loytynyt;
        $html .= "<br/>" . $peru_nappi;
    } else {
        $kuva = new Kuva($hakutulosolio, $tietokantaolio);
        $html .= "<h2>" . Tekstit::$ilm_kuva_poistovahvistus . "</h2>";
        $html .= $kuva->nayta_pelkka_kuva(Kuvat::$latauskansion_osoite);
        $html .= $poistovahvistus_nappi . $peru_nappi;
    }
    $palauteolio->set_sisalto($html);
    $palauteolio->set_ilmoitus($ilmoitus);
    return $palauteolio;
}
Ejemplo n.º 25
0
 $value = Painikkeet::$KIRJAUDU_ULOS_VALUE;
 $ulosnappi1 = luo_uloskirjauspainike($id, $name, $value);
 $ulosnappi2 = luo_uloskirjauspainike($id2, $name, $value);
 $sisaltoteksti = "";
 // Nayttaa kuvahakumoodisaato jutun:
 $nayta_kuvahakumoodisaato = false;
 // Käyttäjälle tuleva huomautusviesti:
 $ilmoitus = "";
 $linkkipalkkiteksti = "";
 $viestitieto = "";
 $muokkauslaatikko = "";
 // Luodaan uusi palauteolio:************************************************
 $palauteolio = new Palaute();
 // Haetaan parametrit yhteen olioon:
 $kokoelmanimi = Kuva::$KUVAT_ALBUMIT;
 $parametriolio = new Parametrit($kokoelmanimi, $omaid, $tietokantaolio);
 /**************************************************************************/
 // Tarkastetaan käyttäjän ikä:
 $alaikainen = true;
 if (!on_alaikainen_tai_elakkeella($omaid, $tietokantaolio)) {
     $alaikainen = false;
 }
 // Muut vaihtoehdot:
 switch ($toiminta) {
     /*case "Luo pikkukuvat":
       $ilmoitus = luo_pikkukuvat_muutos_maalis2011($id_alb, $tietokantaolio);
       $sisaltoteksti = hae_albumit($katso_alb, $poista_alb,
                                   $uusi_kuva,
                                   $omaid, $tietokantaolio, $valtuudet,
                                   $uusi_kuva,
                                   $takaisin_albumilistaan_alb);