/** * Toteuttaa yhden koosteen näyttämisen normaalitavalla. Tulostusnäkymä * on erikseen. * * HUOM: Elementin näkyvyysasetuksen vaikutusta ei ole otettu täällä huomioon. * Se pitää korjata esim. niin, että yksityinen elementti ei näy muille * kuin tekijälle. Lisävaltuuksiahan ei koosteelle tai elementille voi * antaa (mikä lienee tässä vaiheessa selkeämpää erityisesti elementin * kohdalla). Koosteissa lienee järkevämpi kloonata kuin antaa mahdollisuus * monen muokata. Voi miettiä toki. * * @param Palaute $palauteolio */ public function toteuta_nayta(&$palauteolio) { $html = ""; $nakymapainikkeet = ""; // tulostusnäkymä ja ratkaisujen näyttö $muokkauspainike = ""; $muokkauspainikedivi = ""; $elemryhmapainikkeet = ""; $ryhmittelypainike = ""; // Elementtien ryhmittely esim. koealueittain. $kooste = $this->get_olio(); $linkit = ""; $painikkeet = ""; $koostekoodi = ""; $omaid = $this->get_parametriolio()->get_omaid() + 0; $param = $this->get_parametriolio(); $tietokantaolio = $this->get_tietokantaolio(); if ($kooste instanceof Kooste) { $viittausoliot_ok = array(); $elementit_ok = array(); // Tarkistetaan, onko käyttäjällä edes oikeuksia nähdä koostetta: /*======================== käyttäjän oikeudet ========*/ $kohdeoikeudet_kooste = $kooste->hae_kayttajan_oikeudet($omaid); /*====================================================*/ // Luodaan muokkauspainikkeet, jos käyttäjällä on muokkausoikeudet: if ($kohdeoikeudet_kooste >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) { $muokkauspainike = $this->koostenakymat->luo_koosteen_muokkauspainike($kooste); $ryhmittelypainike = $this->koostenakymat->luo_koosteen_ryhmittelypainike($kooste); } // Jos riittävät oikeudet, näytetään ja muuten ei. if ($kohdeoikeudet_kooste >= Lisavaltuudet::$SAA_NAHDA_EI_MUOKATA_EI_POISTAA) { // Check of existing element group id: $elemryhma = Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY; $elemryhma_id = $param->elemryhma_id; if ($elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) { $elemryhma_cand = new Elementtiryhma($elemryhma_id, $tietokantaolio); if ($elemryhma_cand->olio_loytyi_tietokannasta) { $elemryhma = $elemryhma_cand; } } $nakymapainikkeet = " " . $this->koostenakymat->luo_tulostusnayttopainike($kooste, $elemryhma) . " " . $this->koostenakymat->luo_koosteen_ratkaisunayttopainikkeet("elemtehtavan_ratkaisut"); // Luodaan sitten mahdolliset elementtiryhmäpainikkeet // toiminnon mukaisin oikeustarkistuksin (koostenäkymissä..): $elemryhmat = $kooste->hae_elementtiryhmat(); $ajax = false; // Ei ajaxia (linkkiongelma) $elemryhmapainikkeet = $this->koostenakymat->luo_elemryhmapainiketaulukko($elemryhmat, $kooste, $kohdeoikeudet_kooste, $ajax); //============================================================= // Kerätään ne elementit ja oliot, jotka näytetään käyttäjälle. // Sisältö saadaan metodista "luo_koosteen_elementtiosa". $elementit = $kooste->hae_elementit(); $divi_mukaan = true; $all_elements = true; $html = $this->luo_koosteen_elementtiosa($kooste, $omaid, $elementit, $divi_mukaan, $all_elements, $viittausoliot_ok, $elementit_ok); $muokkauspainikedivi = Html::luo_div($muokkauspainike . " " . $ryhmittelypainike, array(Attr::classs("keskitys"), Attr::id("koostepainikerivi"))); } else { // Ellei oikeuksia koosteen katselemiseen. $html = Html::luo_otsikko(Tekstit::$kooste_ilm_nayttoon_ei_oikeuksia, array(), 4); } $koostekoodi = $this->koostenakymat->nayta($muokkauspainikedivi . $elemryhmapainikkeet . $html, $kooste); $kooste_id = $kooste->get_id(); // Nykyinen kooste. // Linkit: $wrapped = true; $linkit = $this->luo_koostelinkit($kooste, $elementit_ok, $viittausoliot_ok, $wrapped); } $kooste_id = Kooste::$MUUTTUJAA_EI_MAARITELTY; $painikkeet = $this->get_koostenakymat()->nayta_painike_paluu_kokonaisuuksiin() . $this->get_koostenakymat()->nayta_painike_paluu_koosteisiin($kooste_id) . $nakymapainikkeet; $palauteolio->set_sisalto($koostekoodi); $palauteolio->set_linkkihtml($painikkeet . "<br/><br/>" . $linkit); $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTE); $palauteolio->set_nayttotapa(Html_koodi::$sidenav_fixed); $palauteolio->set_valikkonaytto(false); }