/** * Toteuttaa koosteryhmittelylomakkeen näyttämisen. Tarkoitus on toteuttaa * lomake, jonka avulla voi luoda uuden tai muokata vanhaa elementtiryhmää. * Elementtiryhmään valitaan halutut elementit koosteen elementeistä, joten * sen kauempaa ei valittavia tarvitse hakea. * * HUOM! Valittaviin elementteihin otettavat elementit tarkistetaan * käyttöoikeuksien näkokulmasta, eikä mukaan oteta sellaisia, joihin * käyttäjällä ei ole vähintään katseluoikeutta. * * @param Palaute $palauteolio */ public function toteuta_nayta_ryhmittelylomake(&$palauteolio) { $parametriolio = $this->get_parametriolio(); $parametriolio->naytettava = Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTERYHMITTELYLOMAKE; $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTERYHMITTELYLOMAKE); $tietokantaolio = $parametriolio->get_tietokantaolio(); $kooste = $this->get_olio(); $tuloste = ""; if ($kooste instanceof Kooste) { // Haetaan mahdollinen vanha (muokattava) elementtiryhmä: $elemryhma_id = $parametriolio->elemryhma_id; $elemryhma = new Elementtiryhma($elemryhma_id, $tietokantaolio); // Huom! Ei mitään tarkistusta, joten pitää alla tarkistaa! $elementit = $kooste->hae_elementit(); // Tehdään taulukko, johon siirretään ne elementit, joihin // vähintään katseluoikeus: $tarkistetut_elementit = array(); $omaid = $parametriolio->get_omaid(); foreach ($elementit as $kandielem) { $kohdeoikeudet = $kandielem->hae_kayttajan_oikeudet_viittausolioon($omaid) + 0; $minimioikeus = Lisavaltuudet::$SAA_NAHDA_EI_MUOKATA_EI_POISTAA; // Jos vähintään näkeminen sallittu: if ($kohdeoikeudet >= $minimioikeus) { array_push($tarkistetut_elementit, $kandielem); } } $tuloste = $this->koostenakymat->nayta_elemryhmalomake($kooste, $elemryhma, $parametriolio, $tarkistetut_elementit); } // Luodaan paluu-painike: $elem_id = Elementti::$MUUTTUJAA_EI_MAARITELTY; // Tarpeeton. $paluupainike_koosteisiin = $this->koostenakymat->nayta_painike_paluu_koosteeseen($kooste->get_id(), $elem_id); // Tämä palauttaa kokonaisuusnäkymään: $paluupainike = $this->paluupainike; $palauteolio->set_sisalto($tuloste); $palauteolio->set_linkkihtml($paluupainike . $paluupainike_koosteisiin); $palauteolio->set_nayta_kiintolinkit(false); $palauteolio->set_valikkonaytto(false); $palauteolio->set_nayttotapa(Html_koodi::$sisaltoelem_levea); }