/** * 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; }
/** * 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; }
/** * @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; }
/** * Palauttaa koostelomakkeen koodin. Jos $kooste-parametri on * Kooste-luokan alkio, on kysymys vanhan muokkaamisesta, muuten * uuden koosteen luomisesta. * @param type $kooste * @param Parametrit $parametrit * @param string $elementit Mahdolliset elementit tai niiden otsikot * @param string $valitut Valittujen olioiden tiedot html-koodina. */ public function nayta_lomake($kooste, $parametrit, $elementit, $valitut) { $sisalto = ""; $nimi = ""; $selitys = ""; $osaset = ""; $tekstikentan_lev = 55; $tekstiruudun_lev = 57; $uuden_luominen = true; // Asetetaan mahdolliset vanhat arvot kohdilleen: if ($kooste instanceof Kooste && $kooste->olio_loytyi_tietokannasta) { $uuden_luominen = false; // Perustiedot: $kooste_taso = $kooste->get_arvo(Kooste::$sarakenimi_taso); $kooste_oppiaine = $kooste->get_arvo(Kooste::$sarakenimi_oppiaine); $kooste_kieli = $kooste->get_arvo(Kooste::$sarakenimi_kieli); // Valittavien oletusvalinnat: $valittavat_taso = $kooste_taso; $valittavat_oppiaine = $kooste_oppiaine; $valittavat_kieli = $kooste_kieli; $koostetyyppi = $kooste->get_arvo(Kooste::$sarakenimi_tyyppi); $nakyvyys = $kooste->get_arvo(Kooste::$sarakenimi_nakyvyys); $lomakeotsikko = Html::luo_otsikko(Tekstit::$kooste_lomakeotsikko_muokkaus, array(), 1); // Alla ovat tärkeitä, jotta esim. JS-koodi toimii, eikä // ala kehittämään mitään ylimääräistä muokatessa. $nimi = htmlspecialchars(stripslashes($kooste->get_arvo(Kooste::$sarakenimi_nimi)), ENT_QUOTES, "UTF-8", true); $kooste_id = $kooste->get_id(); // Aattelin, että jos on tyhjä ... pitäisi tarkistaa, meneekö näin. if ($selitys === Kooste::$MUUTTUJAA_EI_MAARITELTY) { $selitys = ""; } else { $selitys = htmlspecialchars(stripslashes($kooste->get_arvo(Kooste::$sarakenimi_selitys)), ENT_QUOTES, "UTF-8", true); } $koosteotsikko = htmlspecialchars(stripslashes($kooste->get_arvo(Kooste::$sarakenimi_otsikko)), ENT_QUOTES, "UTF-8", true); $organisaatiotunnus = htmlspecialchars(stripslashes($kooste->get_arvo(Kooste::$sarakenimi_organisaatio)), ENT_QUOTES, "UTF-8", true); } else { // Uusi kooste $kooste_taso = $parametrit->taso_kokon; $kooste_oppiaine = $parametrit->oppiaine_kokon; $kooste_kieli = $parametrit->kieli_id; $valittavat_taso = $parametrit->taso_kokon; $valittavat_oppiaine = $parametrit->oppiaine_kokon; $valittavat_kieli = $parametrit->kieli_id; $koostetyyppi = $parametrit->kooste_tyyppi; $nakyvyys = $parametrit->kooste_nakyvyys; // Uusi kooste: if ($nakyvyys === Kooste::$MUUTTUJAA_EI_MAARITELTY) { $nakyvyys = Nakyvyys::$YKSITYINEN; } $lomakeotsikko = Html::luo_otsikko(Tekstit::$kooste_lomakeotsikko_uusi, array(), 1); $nimi = $parametrit->kooste_nimi; $selitys = $parametrit->kooste_selitys; $koosteotsikko = $parametrit->kooste_otsikko; $organisaatiotunnus = $parametrit->kooste_org; $kooste_id = Kooste::$MUUTTUJAA_EI_MAARITELTY; // Arvo ei_maaritelty (-2) ei näytä kivalta, joten muutetaan se // tyhjäksi. Huomaa &, ilman sitä ei toimi.. $syotteet = array(&$nimi, &$selitys, &$koosteotsikko, &$organisaatiotunnus); for ($i = 0; $i < sizeof($syotteet); $i++) { if ($syotteet[$i] == Kooste::$MUUTTUJAA_EI_MAARITELTY) { $syotteet[$i] = ""; } } } // Luodaan lomakkeen osat rivi kerrallaan (taulukkoasettelu): $nimirivi = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for(Koostenakymat::$koostelomake_nimikenttaid, Tekstit::$kooste_lomake_nimi . " *: ", array()), array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::name(Koostekontrolleri::$kooste_name_nimi), Attr::size($tekstikentan_lev), Attr::max_length(100), Attr::id(Koostenakymat::$koostelomake_nimikenttaid), Attr::value($nimi))), array()), array(Attr::title(Tekstit::$kooste_lomake_nimi_title))); // rivi // Tyyppirivi (uusi hieno metodi Asetuspohjan avulla: $koostetyypit = new Koostetyypit(); $select_maaritteet = array(Attr::name(Koostekontrolleri::$kooste_name_tyyppi)); $option_maaritteet = array(); $oletusvalinta_arvo = $koostetyyppi; $otsikko = ""; // Asetetaan erikseen. $koostevalikko = $koostetyypit->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $oletusvalinta_arvo, $otsikko); // Luodaan näkyvyysvalikko mukaan samalle riville: $nakyvyydet = new Perusnakyvyys(); $select_maaritteet_nak = array(Attr::name(Koostekontrolleri::$kooste_name_nakyvyys)); $option_maaritteet_nak = array(); $otsikko_nak = Tekstit::$nakyvyys_valikko_otsikko; $nakyvyysvalikko = $nakyvyydet->luo_pudotusvalikko($select_maaritteet_nak, $option_maaritteet_nak, $nakyvyys, $otsikko_nak); $tyyppirivi = Html::luo_tablerivi(Html::luo_tablesolu(Tekstit::$kooste_lomake_tyyppi . ": ", array()) . Html::luo_tablesolu($koostevalikko . " " . $nakyvyysvalikko, array()), array()); // Perustietorivi eli oppiaine, taso ja kieli: $valikko = $this->kokonaisuusnakymat->nayta_tasovalikko($kooste_taso) . " "; $valikko .= $this->kokonaisuusnakymat->nayta_oppiainevalikko($kooste_oppiaine) . " "; //$valikko .= $this->kokonaisuusnakymat->nayta_kielivalikko( // $parametrit->kieli_id); $valikko .= ucfirst(Tekstit::$language) . ": " . Html::luo_b(Kielet::hae_kielen_nimi($kooste_kieli), array()); $perustietorivi = Html::luo_tablerivi(Html::luo_tablesolu(Tekstit::$kooste_lomake_perustiedot . ": ", array()) . Html::luo_tablesolu($valikko, array()), array()); // Organisaatiotunnusrivi: $organisaatiorivi = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for(Koostenakymat::$koostelomake_organkenttaid, Tekstit::$kooste_lomake_organisaatio . ": ", array(Attr::title(Tekstit::$kooste_lomake_organisaatio_title))), array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::name(Koostekontrolleri::$kooste_name_organ_code), Attr::size($tekstikentan_lev), Attr::max_length(20), Attr::id(Koostenakymat::$koostelomake_organkenttaid), Attr::value($organisaatiotunnus))), array()), array()); // rivi // Tulostettava otsikko -rivi: $otsikkorivi = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for(Koostenakymat::$koostelomake_tulost_ots_kenttaid, Tekstit::$kooste_lomake_otsikko . ": ", array()), array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::name(Koostekontrolleri::$kooste_name_otsikko), Attr::size($tekstikentan_lev), Attr::max_length(200), Attr::id(Koostenakymat::$koostelomake_tulost_ots_kenttaid), Attr::value($koosteotsikko))), array()), array(Attr::title(Tekstit::$kooste_lomake_otsikko_title))); // rivi // Selitysrivi: $selitysrivi = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for(Koostenakymat::$koostelomake_selityskenttaid, Tekstit::$kooste_lomake_selitys . ": ", array()), array()) . Html::luo_tablesolu(Html::luo_textarea($selitys, array(Attr::name(Koostekontrolleri::$kooste_name_selitys), Attr::cols($tekstiruudun_lev), Attr::rows(9), Attr::id(Koostenakymat::$koostelomake_selityskenttaid))), array()), array(Attr::title(Tekstit::$kooste_lomake_selitys_title))); // rivi // // Ohje elementtien hakuun (väliteksti): $valiotsikko = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_b(Tekstit::$kooste_lomake_valiots_elementit, array()), array(Attr::colspan(2))), array()); // rivi // Perusvalikot taso, oppiaine ja kieli elementtien etsintään: $tasotiedot = new Koulutasot(); $oppiainetiedot = new Oppiaineet(); $kielitiedot = new Kielet(); // Lähetetään nämä, niin ei tartte js:ssä arvailla: $koostelomakevalinnat_oppiaine_name = Koostekontrolleri::$koostelom_elemval_oppiaine_name; $koostelomakevalinnat_kieli_name = Koostekontrolleri::$koostelom_elemval_kieli_name; $koostelomakevalinnat_taso_name = Koostekontrolleri::$koostelom_elemval_taso_name; // Osa arvoista on valikoille yhteiset, osa ei: $select_maaritteet_taso = array(Attr::onchange("hae_elementit", array(Koostenakymat::$koostelomake_tasovalikkoid, Koostenakymat::$koostelomake_oppiainevalikkoid, Koostenakymat::$koostelomake_kielivalikkoid, Koostekontrolleri::$kooste_name_id, $koostelomakevalinnat_kieli_name, $koostelomakevalinnat_oppiaine_name, $koostelomakevalinnat_taso_name, $kooste_id)), Attr::id(Koostenakymat::$koostelomake_tasovalikkoid)); $select_maaritteet_oppiaine = array(Attr::onchange("hae_elementit", array(Koostenakymat::$koostelomake_tasovalikkoid, Koostenakymat::$koostelomake_oppiainevalikkoid, Koostenakymat::$koostelomake_kielivalikkoid, Koostekontrolleri::$kooste_name_id, $koostelomakevalinnat_kieli_name, $koostelomakevalinnat_oppiaine_name, $koostelomakevalinnat_taso_name, $kooste_id)), Attr::id(Koostenakymat::$koostelomake_oppiainevalikkoid)); $select_maaritteet_kieli = array(Attr::onchange("hae_elementit", array(Koostenakymat::$koostelomake_tasovalikkoid, Koostenakymat::$koostelomake_oppiainevalikkoid, Koostenakymat::$koostelomake_kielivalikkoid, Koostekontrolleri::$kooste_name_id, $koostelomakevalinnat_kieli_name, $koostelomakevalinnat_oppiaine_name, $koostelomakevalinnat_taso_name, $kooste_id)), Attr::id(Koostenakymat::$koostelomake_kielivalikkoid)); $option_maaritteet = array(); $otsikko_tasot = Tekstit::$kokonlomake_koulutaso; $otsikko_aineet = Tekstit::$kokonlomake_oppiaine; $otsikko_kielet = Tekstit::$kielivalikko_otsikko; $tasovalikko = $tasotiedot->luo_pudotusvalikko($select_maaritteet_taso, $option_maaritteet, $valittavat_taso, $otsikko_tasot); $ainevalikko = $oppiainetiedot->luo_pudotusvalikko($select_maaritteet_oppiaine, $option_maaritteet, $valittavat_oppiaine, $otsikko_aineet); $kielivalikko = $kielitiedot->luo_pudotusvalikko($select_maaritteet_kieli, $option_maaritteet, $valittavat_kieli, $otsikko_kielet); $valikko = $tasovalikko . " " . $ainevalikko . " " . $kielivalikko; $valikkorivi = Html::luo_tablerivi(Html::luo_tablesolu($valikko, array(Attr::colspan(3))), array()); // Huom: asetetaan valittavien taso, kieli ja oppiaine sessiotietoihin, // jotta ne muistetaan, ovat määriteltujä ja niihin päästään käsiksi // myöhemminkin: $sessiomuuttujanimi_taso = Parametrit::sessiomuuttujanimi_koostelomake_valittavat_taso(); $sessiomuuttujanimi_kieli = Parametrit::sessiomuuttujanimi_koostelomake_valittavat_kieli(); $sessiomuuttujanimi_oppiaine = Parametrit::sessiomuuttujanimi_koostelomake_valittavat_oppiaine(); $_SESSION[$sessiomuuttujanimi_taso] = $valittavat_taso; $_SESSION[$sessiomuuttujanimi_kieli] = $valittavat_kieli; $_SESSION[$sessiomuuttujanimi_oppiaine] = $valittavat_oppiaine; //====================================================================== // Näytetään elementtilista ja mahdollisesti valitut elementit: $tyhja_taul = array(); /*$elem = Html::luo_tablerivi( Html::luo_tablesolu( // solu 1 Html::luo_table( // Taulu solun 1 sisään Html::luo_tablerivi( Html::luo_tablesolu_otsikko( Tekstit::$kooste_lomake_valittavat_elementit, $tyhja_taul ). Html::luo_tablesolu_otsikko( Tekstit::$kooste_lomake_valitut_elementit, $tyhja_taul ), $tyhja_taul ). Html::luo_tablerivi( Html::luo_tablesolu($elementit, $tyhja_taul). Html::luo_tablesolu( $valitut_koodi, array( Maarite::id( Koostenakymat::$koostelomake_valitut_elem_id) )), $tyhja_taul // rivi ), $tyhja_taul // table inner ), array(Maarite::colspan(3)) // solu 1 ), array() // rivi ); */ $elem = Html::luo_tablerivi(Html::luo_tablesolu_otsikko(Tekstit::$kooste_lomake_valittavat_elementit, array(Attr::colspan(2))), $tyhja_taul) . Html::luo_tablerivi(Html::luo_tablesolu($elementit, array(Attr::colspan(2))), array()); //====================================================================== // Luodaan vielä tallennuspainike: if ($uuden_luominen) { $painike_value = Painikkeet::$kooste_uuden_tallennus_value; $painike_title = Painikkeet::$kooste_uuden_tallennus_title; $form_action = "index.php"; } else { $painike_value = Painikkeet::$kooste_muokkaustallennus_value; $painike_title = Painikkeet::$kooste_muokkaustallennus_title; $form_action = "index.php?" . Koostekontrolleri::$kooste_name_id . "=" . $kooste->get_id(); } $tallennuspainike = Html::luo_input(array(Attr::type("submit"), Attr::value($painike_value), Attr::name(Toimintonimet::$koostetoiminto), Attr::title($painike_title), Attr::classs("btn btn-" . Koostenakymat::$btn_type_summary . " btn-" . Koostenakymat::$btn_size_summary))); if ($uuden_luominen) { $paluupainike = ""; } else { $paluupainike = $this->nayta_painike_paluu_koosteeseen($kooste->get_id(), Elementti::$MUUTTUJAA_EI_MAARITELTY); } $tallennuspainikerivi = Html::luo_tablerivi(Html::luo_tablesolu($tallennuspainike . " " . $paluupainike, array(Attr::colspan(3))), array()); // rivi //====================================================================== $taulukko = Html::luo_table($nimirivi . $tyyppirivi . $perustietorivi . $organisaatiorivi . $otsikkorivi . $selitysrivi . $tallennuspainikerivi . $valikkorivi . $elem, array()); // Tehdään vielä vähän isommaksi, jotta valitut saadaan näkymään // oikealla kuten oikeassa palkissa (oikea palkki on hankala, koska // lomakkeen jakaminen sinne ei oikein onnistunut). $maar_array = array(); $isotaulukko = Html::luo_table(Html::luo_tablerivi(Html::luo_tablesolu($taulukko, array()) . Html::luo_tablesolu($valitut, array(Attr::style("vertical-align: text-top;"))), $maar_array), array()); $sisalto .= $lomakeotsikko . $isotaulukko; $koodi = Html::luo_form($sisalto, array(Attr::classs("koostelomake"), Attr::action($form_action), Attr::method("post"), Attr::onsubmit("tarkista_arvot_kooste", array(Koostenakymat::$koostelomake_nimikenttaid, Tekstit::$kooste_virheilm_syotevika)))); return $koodi; }
/** * Palauttaa 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; }
/** * 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; }
/** * 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; }
/** * 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; }
<?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();
/** * @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; }
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 ==================================*/ }
/** * 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ä! (" . $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; }
// 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:
/** * 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; }
<?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';
/** * 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; }
<?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)) {
/** * 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; }
/** * 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ää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ää linkkiä ei tallennettu, " . " koska valintoja ei havaittu!"; } else { $palaute = "Virhe! Vain " . $onnistumiset_lkm . " linkkiä " . "tallennettiin! Piti tallentaa " . $linkitettavat_lkm . " kpl."; } } } return $palaute; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
$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);