/** * Palauttaa ratkaisun html-koodin. Se, onko käyttäjällä oikeus nähdä * ratkaisua, tutkitaan kontrollerissa. * * Ratkaisu * * @param Ratkaisu $ratkaisu * @param array $painikkeet * @return string */ function luo_koostenakyma($ratkaisu, $painikkeet) { if ($ratkaisu instanceof Ratkaisu) { $id_teht = $ratkaisu->getTeht_id(); $palaute = ""; /* Muotoillaan ratkaisun merkit ja kaavat: */ $ratk = muotoile_merkit($ratkaisu->getRatkaisu()); $ratk = Kaavaeditori::muotoile_pikkukaavat($ratk); $ratk = Kaavaeditori::muotoile_kaavat($ratk); /* Sama otsikolle: */ $otsikko = muotoile_merkit($ratkaisu->getVastaus()); $otsikko = Kaavaeditori::muotoile_pikkukaavat($otsikko); $otsikko = Kaavaeditori::muotoile_kaavat($otsikko); $kuvat = $ratkaisu->hae_kuvat_koostenakymaan(); //Kuvat ja tehtävät taulukkoon: $sisalto = $kuvat . $ratk; $painikekoodi = ""; if (is_array($painikkeet)) { foreach ($painikkeet as $painike) { $painikekoodi .= $painike . " "; } } $otsikkotaso = 3; $otsikko = Html::luo_otsikko($ratkaisu->getOtsikkomerkinta() . ": " . $otsikko . " " . $painikekoodi . " " . $ratkaisu->getNakyvyysmerkki(), array(), $otsikkotaso); $pal = $otsikko; $pal .= " " . $sisalto . "<br />"; $palaute = $otsikko . " " . $sisalto; /*$palaute = Html::luo_div( $pal, array(Maarite::classs("elemtehtavan_ratkaisut"), Maarite::id("ratkaisut_teht".$id_teht)));*/ } else { $palaute = "tulosta_ratkaisu-metodin ratkaisu-parametri ei ole" . " Ratkaisu-luokan olie!"; } return $palaute; }
/** * 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 parametrina annetun tehtävän tulostukseen optimoidun * html-koodin. * * @param Elementti $elementti * @param Tehtava $tehtava * @param int $omaid Käyttäjän id * @param array $painikkeet * @return string */ function luo_koostenakyma_tulostus($elementti, $tehtava, $painikkeet) { $palaute = ""; if (!$tehtava instanceof Tehtava && $elementti instanceof Elementti) { $palaute = "Jokin parametri metodissa 'luo_koostenakyma' ei ole ok!"; } else { /* Muotoillaan tehtävän merkit ja kaavat: */ $tehtavateksti = muotoile_merkit($tehtava->getTehtavananto()); $tehtavateksti = Kaavaeditori::muotoile_pikkukaavat($tehtavateksti); $tehtavateksti = Kaavaeditori::muotoile_kaavat($tehtavateksti); /* Muotoillaan otsikon merkit ja kaavat: */ $otsikko = muotoile_merkit($tehtava->getOtsikko()); $otsikko = Kaavaeditori::muotoile_pikkukaavat($otsikko); $otsikko = Kaavaeditori::muotoile_kaavat($otsikko); $kuvat = $tehtava->hae_kuvat_koostenakymaan(); $sisalto = $kuvat . $tehtavateksti; $otsikko = "<div class = 'elementti_teht' " . "id='elem" . $elementti->get_id() . "'>" . "<h3>" . $tehtava->getOtsikkomerkinta() . ": " . $otsikko . "</h3>"; $palaute .= $otsikko; $palaute .= $sisalto; // Tehtävä ja kuvat if (is_array($painikkeet)) { foreach ($painikkeet as $painike) { $palaute .= $painike . " "; } } $palaute .= "</div>"; } return $palaute; }