/** * Toteuttaa yhden koosteen tai elementtiryhmän näyttämisen tulostusmuodossa. * @param Palaute $palauteolio */ public function toteuta_nayta_tulostus(&$palauteolio) { $html = ""; $nayta_elementtiryhma = false; $elementtiryhma = Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY; $param = $this->get_parametriolio(); $tietokantaolio = $this->get_tietokantaolio(); // Tämä toimii jos joko id_kooste tai id_elemryhma on määritelty // parametreissa. $kooste = $this->get_olio(); // Haetaan mahdollinen elementtiryhmä: if ($param->elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) { $elemryhma_id = $param->elemryhma_id; $elementtiryhma_cand = new Elementtiryhma($elemryhma_id, $tietokantaolio); if ($elementtiryhma_cand->olio_loytyi_tietokannasta) { $nayta_elementtiryhma = true; $elementtiryhma = $elementtiryhma_cand; } } $omaid = $this->get_parametriolio()->get_omaid() + 0; // Ratkaisukontrollerissa on valmiina ratkaisujen näyttöoikeusseulonta. $ratkaisukontrolleri = new Ratkaisukontrolleri($this->get_tietokantaolio(), $this->get_parametriolio()); $tehtavalaskuri = 0; $elemryhmapainikkeet = ""; if ($kooste instanceof Kooste) { // Tarkistetaan, onko käyttäjällä edes oikeuksia nähdä koostetta: /*======================== käyttäjän oikeudet ========*/ $kohdeoikeudet_kooste = $kooste->hae_kayttajan_oikeudet($omaid); /*====================================================*/ // Jos riittävät oikeudet, näytetään ja muuten ei. if ($kohdeoikeudet_kooste >= Lisavaltuudet::$SAA_NAHDA_EI_MUOKATA_EI_POISTAA) { if ($nayta_elementtiryhma) { $elementit = $elementtiryhma->hae_elementit(); } else { $elementit = $kooste->hae_elementit(); } // Laskurit otsikkonumerointia varten: $laskuri_kokon = 0; $laskuri_teht = 0; $laskuri_ratk = 0; foreach ($elementit as $elementti) { if ($elementti instanceof Elementti) { // Kerätään tähän yhden elementin koodi: $elem_html = ""; $viittausolio = $elementti->hae_viittausolio(); $kohdeoikeudet = $elementti->hae_kayttajan_oikeudet_viittausolioon($omaid) + 0; $minimioikeus = Lisavaltuudet::$SAA_NAHDA_EI_MUOKATA_EI_POISTAA; // Jos vähintään näkeminen sallittu: if ($kohdeoikeudet >= $minimioikeus) { if ($viittausolio instanceof Kokonaisuusolio) { $laskuri_kokon++; $viittausolio->setOtsikkomerkinta($laskuri_kokon . ": "); // Selitys_auki pitää asettaa elementin // tallennettavaksi ominaisuudeksi tms, jotta // sitä voi säätää. Nyt vain ei näytetä. //$selitys_auki = true; $selitys_auki = false; $elem_html .= $this->get_kokonaisuusnakymat()->luo_koostenakyma_tulostus($elementti, $viittausolio, $this->get_parametriolio(), $selitys_auki, $kohdeoikeudet); } else { if ($viittausolio instanceof Tehtava) { $laskuri_teht++; $id_teht = $viittausolio->getId(); $viittausolio->setOtsikkomerkinta(Tekstit::$Tehtava . " " . $laskuri_teht); $painikkeet = ""; $elem_html .= $this->get_tehtavanakymat()->luo_koostenakyma_tulostus($elementti, $viittausolio, $painikkeet); // Haetaan tehtävän ratkaisut ja liitetään // tehtävään mukaan: $ratkaisut = $ratkaisukontrolleri->hae_ratkaisut($id_teht); $this->merkitse_ratkaisujen_otsikkonumerot($ratkaisut, $viittausolio); $elem_html .= $this->luo_tehtavan_ratkaisut_koodi($ratkaisut, true, $omaid, $elementti); } else { // Viittausoliossa jotakin kummaa. } } $html .= Html::luo_div($elem_html, array(Attr::classs("kooste_elementti_tulostus"))); } } } $koostekoodi = $this->koostenakymat->nayta_tulostusnakyma(Html::luo_div($html, array(Attr::id(Koostenakymat::$kooste_elementti_id))), $kooste, $elementtiryhma); } else { // Ellei oikeuksia koosteen katselemiseen. $koostekoodi = Html::luo_otsikko(Tekstit::$kooste_ilm_nayttoon_ei_oikeuksia, array(), 4); } } $kooste_id = $kooste->get_id(); // Nykyinen kooste. $painikkeet = $this->get_koostenakymat()->luo_paluu_tulostusnaytosta_painike($kooste, $elementtiryhma) . $this->get_koostenakymat()->luo_koosteen_ratkaisunayttopainikkeet("elemtehtavan_ratkaisut_tulostus") . $elemryhmapainikkeet; $palauteolio->set_sisalto($koostekoodi); $palauteolio->set_linkkihtml($painikkeet); $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTE_TULOSTUS); $palauteolio->set_nayttotapa(Html_koodi::$sisaltoelem_tulostus); }