/** * Palauttaa koosteessa näytettävän kokonaisuuden html-koodin. Ellei * käyttäjällä oikeuksia nähda kokonaisuutta, palauttaa tyhjän merkkijonon. * * @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($elementti, $kokonaisuus, $parametriolio, $selitys_auki, $kohdeoikeudet, $elemryhma) { $omaid = $parametriolio->get_omaid(); $tietokantaolio = $parametriolio->get_tietokantaolio(); // Tehtävien lisäys annetaan tämän perusteella; $kayttajan_valtuudet = $parametriolio->get_valtuudet(); $palaute = ""; $selitys = ""; $nayta_selitys_nappi = ""; /* Näyttää selityksen. */ $uusi_teht_nappi = ""; $muokkausnappi = ""; // Tästä päästään muokkaamaan kohdekokonaisuutta. $remove_elem_button = ""; // Elementin poisto koosteesta. $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); } // Kun käyttäjällä on vähintään muokkausoikeudet kokonaisuuteen: if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) { // Muokkaus- ja poistonapit lukitsemattomalle tai omalle. if (!$this->lukitus_estaa_muokkauksen($kokonaisuus, $omaid)) { // Muokkauspainike: $muokkausnappi = $this->luo_muokkauspainike($kokonaisuus, $elementti, $elemryhma); } } // Tehtävien lisääminen sopivasti oikeutetuille. Huom: tehtävien // lisäysoikeus ei riitä, koska täällä tehtävien lisääminen muokkaa // koostetta! if ($kayttajan_valtuudet >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) { $uusi_teht_nappi = $this->luo_uusi_teht_painike($kokonaisuus, $elementti, $elemryhma); } // TEhtävien lisäyspainikekoodi loppuu. // Poistopainike sopivasti oikeutetuille. if ($kayttajan_valtuudet >= Lisavaltuudet::$SAA_MUOKATA_JA_POISTAA) { $remove_elem_button = Koostenakymat::create_button_remove_elem_from_summary($elementti->get_id()); } // Poistopainikekoodi 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() . " " . $kokonaisuus->getOtsikkomerkintaSuffix() . $muokkausnappi . $uusi_teht_nappi . $remove_elem_button . "</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 .= $yksityisilmoitus . $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; }
/** * Hakee ja palauttaa koosteen sisällön elementeistä (html-koodi). * * Täällä ei tarkistella käyttöoikeuksia, koska ne tarkistettu aiemmin. * * @param type $elementit_ok * @param type $viittausoliot_ok * @param Parametrit $paramolio Parametrit-luokan olio * @param int $kohdeoikeudet Oikeudet koosteeseen. * @param Ratkaisukontrolleri $ratkaisukontrolleri */ private function hae_elementtien_sisalto($elementit_ok, $viittausoliot_ok, $paramolio, $kohdeoikeudet, $ratkaisukontrolleri) { $tietokantaolio = $this->get_tietokantaolio(); // Katsotaan, ollaanko tulossa elementtiryhmästä: $elemryhma = Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY; if ($paramolio->elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) { $elemryhma_kandi = new Elementtiryhma($paramolio->elemryhma_id, $tietokantaolio); if ($elemryhma_kandi->olio_loytyi_tietokannasta) { $elemryhma = $elemryhma_kandi; } } $elem_html = ""; for ($i = 0; $i < sizeof($elementit_ok); $i++) { $elementti = $elementit_ok[$i]; $viittausolio = $viittausoliot_ok[$i]; //$selitys_auki = true; $selitys_auki = false; // käyttöoikeudet tarkistetaan myös Kokonaisuusnakymat- // luokan metodissa. Mutta ei sillä väliä täällä niin. if ($viittausolio instanceof Kokonaisuusolio) { $elem_html .= $this->get_kokonaisuusnakymat()->luo_koostenakyma($elementti, $viittausolio, $paramolio, $selitys_auki, $kohdeoikeudet, $elemryhma); } else { if ($viittausolio instanceof Tehtava) { $id_teht = $viittausolio->getId(); // Haetaan tehtävän ratkaisut: $ratkaisut = $ratkaisukontrolleri->hae_ratkaisut($id_teht); $this->merkitse_ratkaisujen_otsikkonumerot($ratkaisut, $viittausolio); // Ratkaisunäyttöpainike yms. jos tarve: $painikkeet = array(); if (!empty($ratkaisut)) { array_push($painikkeet, $this->koostenakymat->luo_koostetehtavan_ratkaisunayttopainikkeet($id_teht)); } // Jos riittävät valtuudet, lisätään muokkauspainike: if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) { array_push($painikkeet, $this->tehtavanakymat->luo_muokkauspainike($viittausolio, $elementti)); array_push($painikkeet, $this->tehtavanakymat->luo_ratkaisun_lisayspainike($viittausolio, $elementti, $elemryhma)); if ($viittausolio->getNakyvyys() + 0 === Nakyvyys::$JULKINEN) { $viittausolio->setNakyvyysmerkkiPublic(); } else { $viittausolio->setNakyvyysmerkkiPrivate(); } } // Poistopainike sopivasti oikeutetuille. if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_JA_POISTAA) { $remove_elem_button = Koostenakymat::create_button_remove_elem_from_summary($elementti->get_id()); array_push($painikkeet, $remove_elem_button); } // Poistopainikekoodi loppuu. $elem_html .= $this->get_tehtavanakymat()->luo_koostenakyma($elementti, $viittausolio, $painikkeet); // Liitetään tehtävän ratkaisut mukaan: $elem_html .= $this->luo_tehtavan_ratkaisut_koodi($ratkaisut, false, $paramolio->get_omaid(), $elementti); } } } return $elem_html; }