Example #1
0
 /**
  * Palauttaa lukua eli nakyvyysindeksiä vastaavan nakyvyyskuvauksen, tai
  * tekstin "Tuntematon", jos parametri on sopimaton.
  * @param <type> $arvo
  * @return <type>
  */
 public static function hae_nakyvyyden_kuvaus($arvo)
 {
     $nakyvyydet = new Nakyvyys();
     return $nakyvyydet->hae_nimi($arvo);
 }
 /**
  * Palauttaa html-lomakkeen, jonka avulla voidaan tallentaa uuden
  * kokonaisuuden tiedot tietokantaan tai muokata vanhoja. Lomakkeen html-id on
  * 'kokonaisuuslomake'.
  *
  * @param <type> $id_kokon
  * @param <type> $omaid
  * @param <type> $uusi
  * @param <type> $ilmoitus_kokon
  * @param Tietokantaolio $tietokantaolio
  * @param <type> $oppiaine_kokon
  * @param <type> $otsikko_kokon
  * @param <type> $tiivis_kokon
  * @param <type> $selitys_kokon
  * @param <type> $taso_kokon
  * @param <type> $jarjestysnro_kokon
  * @param <type> $laajennetun_id_kokon
  * @param <type> $ylakokonaisuuden_id_kokon
  * @param <type> $kieli_id
  * @param <type> $toiminnan_name_arvo
  * @param Kokonaisuuskontrolleri $kokonaisuuskontrolleri Tämä vähän
  * suurellinen, mutten äkkiä parempaa keinoa keksinyt (15.1.2015)
  * @param int $kaavakieli viittaa käytettävään matematiikan kaavakieleen
  * (28.11.2015)
  * @param Elementti $elementti on Elementti-luokan olio, johon tämä
  * kokonaisuus kuuluu, tai sitten Elementti::$MUUTTUJAA_EI_MAARITELTY,
  * ellei tulla koosteesta.
  * (20.2.2016)
  * @return <type>
  */
 function nayta_kokonaisuuslomake($id_kokon, $omaid, $uusi, $ilmoitus_kokon, $tietokantaolio, &$oppiaine_kokon, &$otsikko_kokon, &$tiivis_kokon, &$selitys_kokon, &$taso_kokon, &$jarjestysnro_kokon, &$laajennetun_id_kokon, &$ylakokonaisuuden_id_kokon, &$kieli_id, &$nakyvyys_kokon, $toiminnan_name_arvo, $kokonaisuuskontrolleri, $kaavakieli, $elementti, $elemryhma)
 {
     $mj = "";
     // Lomakkeen html-koodi.
     $otsikon_maxpituus = 150;
     $submitnappi = "";
     $perunappi = "";
     $uusi_kuva_tiivis = "";
     $uusi_kuva_seli = "";
     $tulo_koosteesta = false;
     // True, if coming from Kooste (Package).
     $kokonaisuus = "";
     // Tämä haetaan tietokannasta.
     /*$uusi_kuva_tiivis = "";
       $uusi_kuva_seli = "";*/
     $submit_kesken_nappi = "<input type='submit'" . "name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$TALLENNA_KESKEN_KOKON_VALUE . "' " . "title='" . Painikkeet::$TALLENNA_KESKEN_KOKON_TITLE . "'/>";
     $esikatselunappi = "<button type='button' " . "onclick='nayta_kokonaisuuden_esikatselu(" . $id_kokon . ")'" . "title='" . Painikkeet::$ESIKATSELU_TITLE . "'/>" . Painikkeet::$ESIKATSELU_VALUE . "</button>";
     $elementtitiedot = "";
     // urliin lisättävät koosteen ja elementin idt
     if ($uusi) {
         $submitnappi = "<input type='submit'\n            name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$TALLENNA_UUSI_KOKON_VALUE . "'/>";
         $perunappi = "<input type='submit'\n                    name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$PERU_UUDEN_KOKON_TALLENNUS_VALUE . "'/>";
     } else {
         // Haetaan ajantasalla olevat tiedot tietokannasta. Aiemmin
         // tiedot tuotiin kiinteästi painikelomakkeeseen, mutta tällöin
         // tämän jälkeen olioon tehdyt muutokset eivät näkyneet, jos
         // alkoi tehdä muutoksia olioon.
         $kokonaisuus = new Kokonaisuusolio($id_kokon, $tietokantaolio);
         if ($kokonaisuus->olio_loytyi_tietokannasta) {
             $oppiaine_kokon = $kokonaisuus->getOppiaine();
             // Alla ovat tärkeitä, jotta esim. JS-koodi toimii, eikä
             // ala kehittämään mitään ylimääräistä muokatessa. Huom:
             // stripslash pilaa latex-koodin, eikä ilm tarpeellinen.
             $otsikko_kokon = htmlspecialchars($kokonaisuus->getOtsikko(), ENT_QUOTES, "UTF-8", true);
             $tiivis_kokon = htmlspecialchars($kokonaisuus->getTiivis(), ENT_QUOTES, "UTF-8", true);
             $selitys_kokon = htmlspecialchars($kokonaisuus->getSelitys(), ENT_QUOTES, "UTF-8", true);
             /*$otsikko_kokon = stripslashes($kokonaisuus->getOtsikko());
               $tiivis_kokon = stripslashes($kokonaisuus->getTiivis());
               $selitys_kokon = stripslashes($kokonaisuus->getSelitys());*/
             $taso_kokon = $kokonaisuus->getTaso();
             $jarjestysnro_kokon = $kokonaisuus->getJarjestysnro();
             $laajennetun_id_kokon = $kokonaisuus->getLaajennetun_id();
             $ylakokonaisuuden_id_kokon = $kokonaisuus->getYlakokonaisuuden_id();
             $nakyvyys_kokon = $kokonaisuus->getNakyvyys();
             $submitnappi = "<input type='submit'" . "name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$TALLENNA_MUOKKAUS_KOKON_VALUE . "'" . "title='" . Painikkeet::$TALLENNA_MUOKKAUS_KOKON_TITLE . "'/>";
             $perunappi = "<input type='submit'\n                    name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$PERU_KOKON_MUUTOSTEN_TALLENNUS_VALUE . "'/>";
             //==============================================================
             // Täällä katsotaan, onko käyttäjä tulossa koosteesta ja
             // mahdollistetaan kätevä paluu takaisin.=======================
             if ($elementti instanceof Elementti) {
                 $kooste_id = $elementti->get_arvo(Elementti::$sarakenimi_kooste_id);
                 $elem_id = $elementti->get_id();
                 //$koostenakymat = new Koostenakymat();
                 //$perunappi = $koostenakymat->
                 //        nayta_inputpainike_paluu_koosteeseen_no_form();
                 $elementtitiedot = "&" . Koostekontrolleri::$kooste_name_id . "=" . $kooste_id . "&" . Koostekontrolleri::$elementti_name_id . "=" . $elem_id;
                 $tulo_koosteesta = true;
             }
             if ($elemryhma instanceof Elementtiryhma) {
                 $elemryhma_id = $elemryhma->get_id();
                 $elementtitiedot .= "&" . Koostekontrolleri::$elemryhma_name_id . "=" . $elemryhma_id . "&";
                 $tulo_koosteesta = true;
             }
             //========= Kuvan lisäyspainikkeet: paluu vanhaan ideaan ===========
             /* Uuden kuvan lisäyspainike tiivistelmään*/
             $uusi_kuva_tiivis = "<input type='submit'" . "name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$LISAA_KUVA_MANUAALI_TIIVIS_KOKON_VALUE . "'" . "title='" . Painikkeet::$LISAA_KUVA_MANUAALI_TIIVIS_KOKON_TITLE . "'/>";
             /* Uuden kuvan lisäyspainike selitykseen:*/
             $uusi_kuva_seli = "<input type='submit'" . "name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$LISAA_KUVA_MANUAALI_SELITYS_KOKON_VALUE . "'" . "title='" . Painikkeet::$LISAA_KUVA_MANUAALI_SELITYS_KOKON_TITLE . "'/>";
             //==================================================================
         } else {
             $this->lisaa_virheilmoitus(Tekstit::$ilm_kokon_ei_loytynyt);
             return $this->tulosta_virheilmoitukset() . $perunappi;
         }
     }
     // End of päivitetään vanhaa.
     // NÄkyvyysvalikko: ====================================================
     $oletusarvo = $nakyvyys_kokon;
     $nakyvyydet = new Nakyvyys();
     $select_maaritteet = array(Attr::name(Kokonaisuuskontrolleri::$kokon_name_nakyvyys), Attr::title(Tekstit::$nakyvyys_valikko_otsikko_title));
     $option_maaritteet = array();
     $nakyvyysvalikko = $nakyvyydet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $oletusarvo, Tekstit::$nakyvyys_valikko_otsikko);
     //======================================================================
     // Ilmoitus otetaan mukaan, jos ei tyhjä:
     if ($ilmoitus_kokon != "") {
         $ilmoitus_kokon = "<span class='kokonaisuuslomakeilmoitus'>" . $ilmoitus_kokon . "</span><br />";
     }
     $oppiainehtml = Tekstit::$oppiainevalikko_otsikko . ": <b>" . Oppiaineet::hae_oppiaineen_nimi($oppiaine_kokon) . "</b>";
     $koulutasohtml = Tekstit::$tasovalikko_otsikko . ": <b>" . Koulutasot::hae_koulutason_nimi($taso_kokon, false) . "</b>";
     // Kielivalintavalikko: VALINTA POISTETTU toimintavaikeuksien takia!
     //$kielivalintahtml = nayta_kielivalikko($kieli_id);
     $kielivalintahtml = Tekstit::$kielivalikko_otsikko . ": <b>" . Kielet::hae_kielen_nimi($kieli_id) . "</b>";
     // Ylempi kokonaisuustaso
     $ylakokonvalikko = $this->nayta_ylakokonaisuusvalikko($id_kokon, $tietokantaolio, $ylakokonaisuuden_id_kokon, $oppiaine_kokon, $kieli_id, $taso_kokon, $uusi, $omaid, $kokonaisuuskontrolleri);
     // Tekstinmuokkaus tiivistelmää varten:
     $muokattavan_elementin_id_tii = "tiivis_tekstiruutu";
     $alasvetovalikon_id = "merkit1_tiivis";
     $tekstityokaluolio = new Tekstityokalupalkki($muokattavan_elementin_id_tii, $alasvetovalikon_id);
     // Nykyään nämä toimii sekä tiivistelmälle että selitykselle.
     // Lomake osaa huomata, kunpaa ollaan muokkaamassa:
     $tekstimuokkauspainikkeet = $tekstityokaluolio->luo_painikkeet(Tekstityokalupalkki::$PERUSPAINIKKEET_JA_MATEMAATTISET, $kaavakieli);
     // Tekstinmuokkaus selitystä varten:
     $muokattavan_elementin_id_sel = "selitys_tekstiruutu";
     // Kaavakielivalikko:==================================================
     $kaavakielet = new Kaavakieli();
     $select_maaritteet = array(Attr::onchange("muuta_kaavakieli", array("this.value", Yleiset_arvot::$kaavakieli_name, $muokattavan_elementin_id_tii, $alasvetovalikon_id)));
     $option_maaritteet = array();
     $kaavakielivalikko = $kaavakielet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $kaavakieli, Tekstit::$kaavakieli_otsikko);
     //=====================================================================
     if ($uusi) {
         // Ellei id-kokon-arvoa määritellä täällä, tulee sessiomuuttujasta vanha.
         $id_kokon = Kokonaisuusolio::$kokon_ei_maaritelty;
     }
     // Vanha ylakokon_id otetaan talteen, jotta lapsiasiat pysyvät
     // oikealla tolalla. Haetaan mahdollisimman tuoreet tiedot.
     $ylakokonaisuuden_id_vanha = $ylakokonaisuuden_id_kokon;
     if ($kokonaisuus instanceof Kokonaisuusolio) {
         $ylakokonaisuuden_id_vanha = $kokonaisuus->getYlakokonaisuuden_id();
     }
     /*lisaaTagit(elementin_id, elementin_tunnus, class_arvo, id_arvo*/
     // Sitten palat yhteen:
     $mj = "<form align='left' method='post' id='kokonaisuuslomake'" . "action='index.php?id_kokon=" . $id_kokon . "&ylakokonaisuuden_id_vanha=" . $ylakokonaisuuden_id_vanha . "&taso_kokon=" . $taso_kokon . "&kieli_id=" . $kieli_id . "&uusi=" . $uusi . $elementtitiedot . "'/>" . $ilmoitus_kokon . "<b>" . Tekstit::$kokonlomake_ohje . "</b>" . $esikatselunappi . "<table summary='uudet_tiedot'>" . "<tr><td>" . Tekstit::$kokonlomake_otsikko . ": </td><td><input type='text'\n            size='55' maxlength='{$otsikon_maxpituus}'" . "name='otsikko_kokon' value='{$otsikko_kokon}'" . "id='otsikkotekstikentta'" . "title='" . Tekstit::$kokonlomake_otsikkotitle . "'/>" . "</tr>" . "<tr><td></td>" . "<td>" . " " . $ylakokonvalikko . " " . $nakyvyysvalikko . "</td>" . "</tr>" . "<tr><td></td><td>" . $kaavakielivalikko . " " . $oppiainehtml . " " . $koulutasohtml . " " . $kielivalintahtml . "</td></tr>" . "<tr><td></td><td colspan='2'>" . $tekstimuokkauspainikkeet . "</td></tr>" . "<tr><td>" . Tekstit::$kokonlomake_tiivis . ":</td>" . "<td colspan='2'><textarea cols='80' rows='18' maxlength = '10000'\n            id='" . $muokattavan_elementin_id_tii . "' name='tiivis_kokon' \n            onfocus='kirjoituskentta_onfocus(\"tiivis_tekstiruutu\")'>" . $tiivis_kokon . "</textarea></td></tr>" . "<tr><td>" . Tekstit::$kokonlomake_selitys . ":</td>" . "<td colspan='2'><textarea cols='80' rows='9' maxlength = '10000'\n            id='" . $muokattavan_elementin_id_sel . "' name='selitys_kokon'\n            onfocus='kirjoituskentta_onfocus(\"selitys_tekstiruutu\")'>" . $selitys_kokon . "</textarea></td></tr>" . "<tr><td></td><td align='left'>" . $submitnappi . $submit_kesken_nappi . $uusi_kuva_tiivis . $uusi_kuva_seli . $perunappi . "</td></tr>" . "</table>" . "</form>";
     return $mj;
 }
Example #3
0
/**
 * Tämä metodi palauttaa suorituslomakkeen koodin.
 * @param Parametrit $parametriolio
 * @return <type>
 */
function nayta_suorituslomake(&$parametriolio)
{
    $laji = $parametriolio->laji;
    $matkametreina = $parametriolio->matkametreina;
    $paiva = $parametriolio->paiva;
    $kk = $parametriolio->kk;
    $vuosi = $parametriolio->vuosi;
    $kesto = $parametriolio->kesto;
    $kuvaus = $parametriolio->kuvaus;
    $uusi = $parametriolio->uusi_suoritus;
    $lajitarkennus = $parametriolio->lajitarkennus;
    $kestotunnit = $parametriolio->kestotunnit;
    $kestomin = $parametriolio->kestomin;
    $kestosek = $parametriolio->kestosek;
    $paluunakyma = $parametriolio->paluunakyma;
    $nakyvyys = $parametriolio->nakyvyys_suor;
    $tietokantaolio = $parametriolio->tietokantaolio;
    $lajitarkennuselem_id = "lajitarkennus";
    $submitnappi = "";
    if ($uusi) {
        $submitnappi = "</td><td align='left'><input type='submit'\n        name='toiminta'" . "value='Tallenna'/>";
    } else {
        // Haetaan vanhat tiedot:
        $taulunimi = "suoritukset";
        $sarakenimi = "id";
        $hakuarvo = $parametriolio->suoritus_id;
        $vanha_suoritus = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
        if ($vanha_suoritus != Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
            $laji = $vanha_suoritus->laji;
            $matkametreina = $vanha_suoritus->matkametreina;
            $paiva = $vanha_suoritus->paiva;
            $kk = $vanha_suoritus->kk;
            $vuosi = $vanha_suoritus->vuosi;
            $kesto = $vanha_suoritus->kesto;
            $kuvaus = $vanha_suoritus->kuvaus;
            $lajitarkennus = $vanha_suoritus->lajitarkennus;
            $kestotunnit = $vanha_suoritus->kestotunnit;
            $kestomin = $vanha_suoritus->kestomin;
            $kestosek = $vanha_suoritus->kestosek;
            $nakyvyys = $vanha_suoritus->nakyvyys;
        }
        $submitnappi = "</td><td align='left'><input type='submit'\n        name='toiminta'" . "value='Tallenna muutos'/>";
    }
    // Näkyvyysvalintapainikkeet ===============================================
    $valintapainikeMJ = "";
    // $puolijulkinen-vaihtoehto näytetään vain JP:lle (Viivin erikoinen melonta).
    $nayta_puolijulkinen = false;
    if (hae_henkilon_nimi($parametriolio->omaid, true, $tietokantaolio) === "Jukka-Pekka") {
        $nayta_puolijulkinen = true;
    }
    $arvot = Nakyvyys::hae_nakyvyysarvot($nayta_puolijulkinen);
    $kuvaukset = Nakyvyys::hae_nakyvyyskuvaukset($nayta_puolijulkinen);
    $name_arvo = 'nakyvyys_suor';
    $id = "";
    $class = "";
    $oletus = $nakyvyys;
    $otsikko = "";
    $valintapainikeMJ = Html::luo_pudotusvalikko3($arvot, $kuvaukset, $name_arvo, $id, $class, $oletus, $otsikko);
    //==========================================================================
    // Näytetään lajivalikko:
    $arvot = Laji::get_lajiarvot();
    $nimet = Laji::get_lajikuvaukset();
    $name_arvo = "laji";
    $oletusvalinta_arvo = $laji;
    $otsikko = "";
    $onchange_metodinimi = "tarkista_lajitarkennus";
    $onchange_metodiparametrit_array = array("this.options[this.selectedIndex].value", "\"" . Laji::$id_juoksu . "\"", "\"" . $lajitarkennuselem_id . "\"");
    $lajivalikkomerkkaus = Html::luo_pudotusvalikko_onChange($arvot, $nimet, $name_arvo, $oletusvalinta_arvo, $otsikko, $onchange_metodinimi, $onchange_metodiparametrit_array);
    //=========================================================================
    // Näytetään sitten lajitarkennusvalikko:
    $arvot = Lajitarkennukset::hae_lajitarkennusarvot();
    $nimet = Lajitarkennukset::hae_lajitarkennuskuvaukset();
    $name_arvo = "lajitarkennus";
    $oletusvalinta_arvo = $lajitarkennus;
    $otsikko = "";
    $onchange_metodinimi = "aseta_matka";
    $onchange_metodiparametrit_array = array("this.options[this.selectedIndex].value");
    $lajitarkennusvalikko = Html::luo_pudotusvalikko_onChange($arvot, $nimet, $name_arvo, $oletusvalinta_arvo, $otsikko, $onchange_metodinimi, $onchange_metodiparametrit_array);
    // Lajitarkennus näytetään vain, jos laji on juoksu:
    $nayttotyyli = "none";
    if ($laji === Laji::$id_juoksu) {
        $nayttotyyli = "table-row";
    }
    //=========================================================================
    // Ja sitten ajan ohjattu määritys: ensin tunnit:
    $tuntivalikko = "<select name='kestotunnit'/>";
    if (!isset($kestotunnit) || $kestotunnit == "") {
        $kestotunnit = 0;
    }
    for ($i = 0; $i < 25; $i++) {
        if ($i == $kestotunnit) {
            $tuntivalikko .= "<option value='{$i}'selected='selected'>{$i}</option>";
        } else {
            $tuntivalikko .= "<option value='{$i}'>{$i}</option>";
        }
    }
    $tuntivalikko .= "</select>";
    // Ja sitten minuutit:
    $minvalikko = "<select name='kestomin'/>";
    if (!isset($kestomin) || $kestomin == "") {
        $kestomin = 0;
    }
    for ($i = 0; $i < 60; $i++) {
        if ($i == $kestomin) {
            $minvalikko .= "<option value='{$i}'selected='selected'>{$i}</option>";
        } else {
            $minvalikko .= "<option value='{$i}'>{$i}</option>";
        }
    }
    $minvalikko .= "</select>";
    // Ja sitten sekunnit:
    $sekvalikko = "<select name='kestosek'/>";
    if (!isset($kestosek) || $kestosek == "") {
        $kestosek = 0;
    }
    for ($i = 0; $i < 60; $i++) {
        if ($i == $kestosek) {
            $sekvalikko .= "<option value='{$i}'selected='selected'>{$i}</option>";
        } else {
            $sekvalikko .= "<option value='{$i}'>{$i}</option>";
        }
    }
    $sekvalikko .= "</select>";
    // Tekstin muokkauspainikkeet:
    $muokattavan_elementin_id = "kuvauskentta";
    $alasvetovalikon_id = "erikoismerkit";
    $tekstityokaluolio = new Tekstityokalupalkki($muokattavan_elementin_id, $alasvetovalikon_id);
    $tekstimuokkauspainikkeet = $tekstityokaluolio->luo_painikkeet(Tekstityokalupalkki::$PERUSPAINIKKEET);
    $mj = "<p><b>Kirjoita/valitse tiedot ja paina Tallenna-nappia!" . " (T&auml;hdelliset pakollisia.)</b></p>" . "<form align='center' method='post' action='muistio.php?" . URL_muuttujat::$paluunakyma . "=" . $paluunakyma . "&" . URL_muuttujat::$lajitarkennus . "=" . $parametriolio->lajitarkennus . "' " . "id='tietolomake_kapea'>" . "<table summary='uudet_tiedot'>" . "<td></td>\n        <td align='left'><button id='b1' type='button' onclick='nayta_ed_vko()'>\n            Viikko taaksep&auml;in</button>\n            <button id='b2'type='button' onclick='nayta_ed()'>\n            Edellinen p&auml;iv&auml;</button>\n            <button id='b3'type='button'\n            onclick='nayta_seur()'>\n            Seuraava p&auml;iv&auml;\n            </button>\n            <button id='b4' type='button' onclick='nayta_seur_vko()'>\n            Viikko eteenp&auml;in</button></td>" . "<tr>" . "<td align='left'>*P&auml;iv&auml;: </td><td align='left'>\n        <input id='paiva' type='text'\n        name='paiva' value='{$paiva}' size='4' maxlength='2'\n        onchange='nayta_pvm()' onkeyup='nayta_pvm()' />\n        *Kk: <input id='kk' type='text' " . "name='kk' value='{$kk}' size='4' maxlength='2' \n        onchange='nayta_pvm()' onkeyup='nayta_pvm()'/>\n        *Vuosi: <input id='vuosi' type='text' " . "name='vuosi' value='{$vuosi}' size='4' maxlength='4'\n        onchange='nayta_pvm()' onkeyup='nayta_pvm()'/>\n        <span id='pvm_naytto'></span></td>" . "</tr>" . "<tr>" . "<td align='left'>*Laji:</td><td align='left'> {$lajivalikkomerkkaus} </td>" . "</tr>" . "<tr id='" . $lajitarkennuselem_id . "' style='display: {$nayttotyyli}'>" . "<td align='left'>Lajin tarkennus:" . "</td><td align='left'>{$lajitarkennusvalikko}</td>\n        </tr>" . "<tr><td align='left' colspan='3'>{$tekstimuokkauspainikkeet}</td></tr>" . "<tr><td align='left'>Kuvaus:</td>\n        <td align='left'><textarea id='kuvauskentta' cols='60'\n        rows='5'name='kuvaus'>{$kuvaus}" . "</textarea></td></tr>" . "<tr><td align='left'>Kesto: </td><td align='left'>" . $tuntivalikko . "h " . $minvalikko . "min " . $sekvalikko . "sek tai tekstinä:<input type='text' " . "name='kesto' value='{$kesto}'/></td></tr>" . "<tr><td align='left'>Matka (<i>m</i>): </td><td align='left'>\n        <input id='matka' type='text' " . "name='matkametreina' value='{$matkametreina}'/></td></tr>" . "<tr><td align='left'>N&auml;kyvyys: </td><td align='left'>" . $valintapainikeMJ . "</td></tr>" . "<tr><td align='left'>{$submitnappi}\n        <input type='submit' name='toiminta'" . "value='Poistu tallentamatta'/></td></tr>" . "</table>" . "</form>";
    // Palautetaan lomake ja näytetään js-päivämäärä;.
    return $mj . "<script type='text/javascript'>\n                            nayta_pvm();\n                            </script>";
}
Example #4
0
 /**
  * Palauttaa ratkaisulomakkeen html-koodin.
  * @param Parametrit $parametriolio
  * @return string
  */
 function nayta_ratkaisulomake($parametriolio)
 {
     $id_kokon = $parametriolio->id_kokon;
     $id_teht = $parametriolio->id_teht;
     $id_ratk = $parametriolio->id_ratk;
     $omaid = $parametriolio->get_omaid();
     $uusi = $parametriolio->uusi;
     $ilmoitus_ratk = $parametriolio->ilmoitus_ratk;
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $kaavakieli = $parametriolio->kaavakieli;
     $nakyvyys_ratk = $parametriolio->nakyvyys_ratk;
     $mj = "";
     // Lomakkeen html-koodi.
     $tehtavanakymat = new Tehtavanakymat();
     // Tarpeen matkan varrella.
     // TArkistetaan, onko käyttäjä tulossa koosteesta / elementtiryhmästä
     // ja mahdollistetaan paluu:
     $elem_id = $parametriolio->elementti_id;
     $elemryhma_id = $parametriolio->elemryhma_id;
     $koostetieto = "";
     if ($elem_id != Elementti::$MUUTTUJAA_EI_MAARITELTY) {
         $koostetieto = "&" . Koostekontrolleri::$elementti_name_id . "=" . $elem_id;
     }
     if ($elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) {
         $koostetieto .= "&" . Koostekontrolleri::$elemryhma_name_id . "=" . $elemryhma_id;
     }
     /***********************************************************************/
     // Haetaan ensin tehtävä, jotta sen voi nähdä samalla: *****************/
     $tehtava_html = "";
     /* Haetaan tehtävä: */
     $tehtava = new Tehtava($id_teht, $tietokantaolio);
     if (!$tehtava->olio_loytyi_tietokannasta) {
         $tehtava_html = Tekstit::$tehtava_ilm_ei_loytynyt;
     } else {
         $tehtava_html .= $tehtavanakymat->tulosta_tehtava_ilman_painikkeita($omaid, $tehtava);
     }
     /**************************************************************************/
     $esikatselunappi = "<button type='button' " . "onclick='nayta_ratkaisun_esikatselu(" . $id_kokon . "," . $id_teht . "," . $id_ratk . ")'" . "title='" . Painikkeet::$ESIKATSELU_TITLE . "'/>" . Painikkeet::$ESIKATSELU_VALUE . "</button>";
     // Haetaan ajantasalla olevat tiedot tietokannasta. Aiemmin
     // tiedot tuotiin kiinteästi painikelomakkeeseen, mutta tällöin
     // kokorajoitus urlissa aiheutti ongelmia. Muutenkin se on huonompi
     // ja turvattomampi tapa.
     $ratkaisu = new Ratkaisu($id_ratk, $tietokantaolio);
     // Pyritään tekemään niin, että vastauksen ollessa tyhjä ei
     // kirjoitettu vastaus kuitenkaan häviä..
     if ($ratkaisu->olio_loytyi_tietokannasta) {
         if (empty($parametriolio->ratkaisu_ratk)) {
             $vastaus_ratk = $ratkaisu->getVastaus();
             $ratkaisu_ratk = $ratkaisu->getRatkaisu();
         } else {
             $vastaus_ratk = $parametriolio->vastaus_ratk;
             $ratkaisu_ratk = $parametriolio->ratkaisu_ratk;
         }
         $nakyvyys_ratk = $ratkaisu->getNakyvyys();
     } else {
         if (empty($parametriolio->ratkaisu_ratk)) {
             $vastaus_ratk = "";
             $ratkaisu_ratk = $tehtava->getTehtavananto();
         } else {
             // Jos tietoja syötetty (esim. virhesyöte):
             $vastaus_ratk = $parametriolio->vastaus_ratk;
             $ratkaisu_ratk = $parametriolio->ratkaisu_ratk;
         }
     }
     // Siivotaan kenot ja varmistetaan tagien yms oikea näyttötapa:
     $vastaus_ratk = htmlspecialchars($vastaus_ratk, ENT_QUOTES, "UTF-8", true);
     $ratkaisu_ratk = htmlspecialchars($ratkaisu_ratk, ENT_QUOTES, "UTF-8", true);
     // Kaavakielivalikko:==================================================
     $kaavakielet = new Kaavakieli();
     $select_maaritteet = array(Attr::onchange("muuta_kaavakieli", array("this.value", Yleiset_arvot::$kaavakieli_name)));
     $option_maaritteet = array();
     $kaavakielivalikko = $kaavakielet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $kaavakieli, Tekstit::$kaavakieli_otsikko);
     //=====================================================================
     // Näkyvyysvalikko: ===================================================
     $nakyvyydet = new Nakyvyys();
     $select_maaritteet = array(Attr::name(Ratkaisukontrolleri::$ratkaisu_name_nakyvyys));
     $option_maaritteet = array();
     $otsikko = "";
     $nakyvyysvalikko = $nakyvyydet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $nakyvyys_ratk, $otsikko);
     //=====================================================================
     $vastaus_maxpituus = 1000;
     $ratkaisu_maxpituus = 10000;
     $toiminnan_name_arvo = Toimintonimet::$tehtavatoiminto;
     // Ilmoitus otetaan mukaan, jos ei tyhjä:
     if ($ilmoitus_ratk != "") {
         $ilmoitus_ratk = "<div class='lomakeilmoitus'>" . $ilmoitus_ratk . "</div>";
     }
     if ($uusi) {
         $submitnappi = "<input type='submit'\n            name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$ratkaisu_tallenna_uusi_value . "'/>";
         $perunappi = "<input type='submit'\n                    name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$ratkaisu_peru_uuden_tallennus_value . "'" . "title='" . Painikkeet::$ratkaisu_peru_uuden_tallennus_title . "'/>";
     } else {
         $submitnappi = "<input type='submit'\n            name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$ratkaisu_tallenna_muokkaus_value . "'/>";
         $perunappi = "<input type='submit'\n                    name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$ratkaisu_peruminen_value . "'/>";
     }
     $muokattavan_elementin_id = "ratkaisuteksti";
     $alasvetovalikon_id = "merkit1";
     $tekstityokaluolio = new Tekstityokalupalkki($muokattavan_elementin_id, $alasvetovalikon_id);
     $tekstimuokkauspainikkeet = $tekstityokaluolio->luo_painikkeet(Tekstityokalupalkki::$PERUSPAINIKKEET_JA_MATEMAATTISET, $kaavakieli);
     // Kaavakielivalikko:==================================================
     $kaavakielet = new Kaavakieli();
     $select_maaritteet = array(Attr::onchange("muuta_kaavakieli", array("this.value", Yleiset_arvot::$kaavakieli_name, $muokattavan_elementin_id, $alasvetovalikon_id)));
     $option_maaritteet = array();
     $kaavakielivalikko = $kaavakielet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $kaavakieli, Tekstit::$kaavakieli_otsikko);
     //=====================================================================
     //======================================================================
     // Sitten palat yhteen:
     $mj = $tehtava_html . "<form align='left' method='post' id='ratkaisulomake' class='lomake'" . "action='index.php?" . "id_ratk=" . $id_ratk . "&id_teht=" . $id_teht . "&id_kokon=" . $id_kokon . "&uusi=" . $uusi . $koostetieto . "'/>" . $ilmoitus_ratk . "<table summary='uudet_tiedot'>" . "<tr><td colspan=2><b>" . Tekstit::$ratkaisulomake_ohje . " " . $esikatselunappi . "</b></td>" . "</tr>" . "<tr><td>" . Tekstit::$ratkaisulomake_vastaus . ": </td><td><input type='text'\n            size='80' maxlength='{$vastaus_maxpituus}' id='vastausteksti'" . "name='vastaus_ratk' value='{$vastaus_ratk}'\n            title='" . Tekstit::$ratkaisulomake_vastaustitle . "'/></td>" . "</tr>" . "<tr><td>" . Tekstit::$nakyvyys_valikko_otsikko . "</td><td>" . $nakyvyysvalikko . "</td>" . "</tr>" . "<tr><td></td>" . "<td>" . $kaavakielivalikko . "</td>" . "</tr>" . "<tr><td></td><td>" . $tekstimuokkauspainikkeet . "</td></tr>" . "<tr><td>" . Tekstit::$ratkaisulomake_ratkaisu . ":</td>" . "<td colspan='2'><textarea id='ratkaisuteksti' cols='80' rows='20'\n            maxlength = {$ratkaisu_maxpituus}\n            name='ratkaisu_ratk'>{$ratkaisu_ratk}" . "</textarea></td></tr>" . "<tr><td></td><td align='left'>" . $submitnappi . $perunappi . "</td></tr>" . "</table>" . "</form>";
     return $mj;
 }
Example #5
0
 /**
  *
  * @param \Parametrit $parametriolio
  * @return string Palauttaa html-koodin.
  */
 public static function nayta_kuvalomake_ilman_formia($parametriolio)
 {
     $omaid = $parametriolio->omaid;
     $uusi = $parametriolio->uusi_kuva;
     $ilmoitus_kuva = $parametriolio->ilmoitus_kuva;
     $tietokantaolio = $parametriolio->tietokantaolio;
     $kuvaotsikko_kuva = $parametriolio->kuvaotsikko_kuva;
     $kuvaselitys_kuva = $parametriolio->kuvaselitys_kuva;
     $vuosi_kuva = $parametriolio->vuosi_kuva;
     $kk_kuva = $parametriolio->kk_kuva;
     $paiva_kuva = $parametriolio->paiva_kuva;
     $kuvatoimintonimi = $parametriolio->kuvatoimintonimi;
     $nakyvyys_kuva = $parametriolio->nakyvyys_kuva;
     $mj = "";
     // Lomakkeen html-koodi.
     // Ilmoitus otetaan mukaan, jos ei tyhjä:
     if ($ilmoitus_kuva != "") {
         $ilmoitus_kuva = "<span class='lomakeilmoitus'>" . $ilmoitus_kuva . "</span><br />";
     }
     if ($uusi) {
         $submitnappi = "<input type='submit'\n            name='{$kuvatoimintonimi}'" . "value='" . Kuva::$tallenna_uusi_kuva_value . "'/>";
     } else {
         $submitnappi = "<input type='submit'\n            name='{$kuvatoimintonimi}'" . "value='" . Kuva::$tallenna_muokkaus_kuva_value . "'/>";
     }
     $perunappi = "<input type='submit'\n                    name='{$kuvatoimintonimi}'" . "value='" . Kuva::$peruminen_kuva_value . "'/>";
     if ($uusi) {
         $latauskoodi = "<div>" . "<span class='korostus'>" . $ilmoitus_kuva . "</span>" . "Kirjoita tai hae kuvaosoite:<br/>" . "<input type='hidden' name='MAX_FILE_SIZE' \n                            value=" . Kuva::$MAX_FILE_SIZE . " />" . "<input type='file' name='ladattu_kuva' size='80'/>" . "</div>";
     } else {
         $latauskoodi = "<span class='korostus'>" . $ilmoitus_kuva . "</span>";
     }
     // Näkyvyysvalikko: ===================================================
     $nakyvyydet = new Nakyvyys();
     $select_maaritteet = array(Maarite::name("nakyvyys_kuva"));
     $option_maaritteet = array();
     $otsikko = "";
     $nakyvyysvalikko = $nakyvyydet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $nakyvyys_kuva, $otsikko);
     //=====================================================================
     $mj = $latauskoodi . "<b>Kirjoita kuvan tiedot ja tallenna!</b><br/>" . "<table summary='uudet_tiedot'>" . "<tr>" . "<td>Kuvaotsikko: </td><td><input type='text' size='70' maxlength='200'" . "name='kuvaotsikko_kuva' value='{$kuvaotsikko_kuva}' /></td></tr>" . "<tr><td></td>" . "<td align='left'>\n                <button id='b1' type='button' onclick='nayta_ed_vko()'\n                title='Edellinen viikko'>\n                &lt;&lt;\n                </button>\n\n                <button id='b2'type='button' onclick='nayta_ed()'\n                title='Edellinen p&auml;iv&auml;'>\n                &lt;\n                </button>\n\n                <button id='b5' type='button' onclick='nayta_nyk_pvm()'\n                title='N&auml;ytt&auml;&auml; nykyisen" . " p&auml;iv&auml;m&auml;&auml;r&auml;n'>\n                T&auml;m&auml; p&auml;iv&auml;\n                </button>\n\n                <button id='b6' type='button' onclick='tyhjenna_pvm()'\n                title='Tyhjent&auml;&auml; p&auml;iv&auml;m&auml;&auml;r&auml;n'>\n                Tyhjenn&auml;\n                </button>\n\n                <button id='b3'type='button' onclick='nayta_seur()'\n                title='Seuraava p&auml;iv&auml;'>\n                &gt;\n                </button>\n\n                <button id='b4' type='button' onclick='nayta_seur_vko()'\n                title='Seuraava viikko'>\n                &gt;&gt;\n                </button> " . " <span id='pvm_naytto'></span>\n            </td>" . "</tr>" . "<tr><td></td><td>\n            Vuosi (xxxx): <input id='vuosi' type='text'" . "size='4' maxlength='4'" . "name='vuosi_kuva' value='{$vuosi_kuva}' title='Vuosi, jolloin" . "kuva on otettu (voi arvioida tai j&auml;tt&auml;&auml; tyhj&auml;ksi)'" . "onchange='nayta_pvm()' onkeyup='nayta_pvm()'/>\n\n            Kk (1-12): <input id='kk' type='text' size='2' maxlength='2'" . "name='kk_kuva' value='{$kk_kuva}' title='Kuukausi, jolloin" . "kuva on otettu (voi j&auml;tt&auml;&auml; tyhj&auml;ksi)'" . "onchange='nayta_pvm()' onkeyup='nayta_pvm()'/>\n\n            P&auml;iv&auml; (1-31): <input id='paiva' type='text' size='2' maxlength='2'" . "name='paiva_kuva' value='{$paiva_kuva}' title='P&auml;iv&auml;, jolloin" . "kuva on otettu (voi j&auml;tt&auml;&auml; tyhj&auml;ksi)'" . "onchange='nayta_pvm()' onkeyup='nayta_pvm()'/>\n            </td></tr>" . "<tr><td>Kuvaselitys:</td>" . "<td colspan='2'><textarea cols='55' rows='6' maxlength = '1000'\n            name='kuvaselitys_kuva'>{$kuvaselitys_kuva}" . "</textarea></td></tr>" . "<tr><td title='" . Tekstit::$nakyvyys_valikko_otsikko_title . "'>" . Tekstit::$nakyvyys_valikko_otsikko . "</td>" . "<td colspan='2'>" . $nakyvyysvalikko . "</td></tr>" . "<tr><td></td><td align='left'>" . $submitnappi . $perunappi . "</td><td></td></tr>" . "</table>";
     return $mj;
 }
 /**
  * Palauttaa lukua eli oppiaineen indeksiä vastaavan oppiaineen nimen, tai
  * tekstin "Tuntematon", jos parametri on sopimaton.
  * @param <type> $arvo
  * @return <type>
  */
 public static function hae_nakyvyyskuvaus($arvo)
 {
     $kuvaus = "Tuntematon";
     // Jos parametri on ok, haetaan oppiaineen nimi. Jos huomataan
     // jotakin outoa, palautetaan virheviesti.
     if (is_numeric($arvo) && $arvo > -1) {
         try {
             $kuvaukset = Nakyvyys::hae_nakyvyyskuvaukset($nayta_puolijulkinen);
             $kuvaus = $kuvaukset[$arvo];
         } catch (Exception $poikkeus) {
             $kuvaus .= " " . $poikkeus->getMessage();
         }
     }
     return $kuvaus;
 }
Example #7
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;
 }