/** * Palauttaa kokonaisuuden html-koodin. * * Huomaa, että täällä käsitellään aika paljon turvallisuusarkoja aiheita, * kuten esimerkiksi kokonaisuuden lukitus. Ois parempi ehkä sellaisen * olla aiemmin, mutta en vielä ole jaksanut muuttaa.. * * @param Parametrit $parametriolio * @param Kokonaisuusolio $kokonaisuus * @param <type> $selitys_auki jos true, niin selitys näytetään, muuten ei. * @param type $id_prev Edellisen kokonaisuuden id. * @param type $id_next Seuraavan kokonaisuuden id. * @return string|\<type> */ function tulosta_kokonaisuus($kokonaisuus, $parametriolio, $selitys_auki, $id_prev, $id_next) { $btn_type = Kokonaisuusnakymat::$btn_type_article; $btn_size = Kokonaisuusnakymat::$btn_size_article; $omaid = $parametriolio->get_omaid() + 0; $tietokantaolio = $parametriolio->get_tietokantaolio(); $kayttajan_valtuudet = $parametriolio->get_valtuudet(); // Luodaan tämä tehtävien lkm:n hakua varten. Vähän raskasta, mutta olkoon. $tehtavakontrolleri = new Tehtavakontrolleri($tietokantaolio, $parametriolio); $palaute = ""; $selitys = ""; $poistonappi = ""; $muokkausnappi = ""; $tehtavanappi = ""; /* Tehtävien näyttö */ $uusi_teht_nappi = ""; /* Tästä luodaan uusi tehtävä. */ $nayta_selitys_nappi = ""; /* Näyttää selityksen. */ $siirra_ylemmaksi_nappi = ""; $siirra_alemmaksi_nappi = ""; $jaa_oikeuksia_nappi = ""; $nayta_jarj_luku = ""; $korjausnappi = ""; // Tämän avulla järjestysluvun voi korjata $nakyvyysmuutosnappi = ""; $nayta_ed_nappi = $this->create_button_show_prev($id_prev); $nayta_seur_nappi = $this->create_button_show_next($id_next); /*======================== käyttäjän oikeudet ========================*/ $kohdeoikeudet = Henkilo::hae_kayttajan_kohdeoikeudet($kokonaisuus->getHenkiloId(), $omaid, Oliotyyppi::$KOKONAISUUS, $kokonaisuus->get_id(), $tietokantaolio); /*====================================================================*/ // Koodia voivat kaikki vilkaista, ellei ole piilotettu: if ($kohdeoikeudet >= Lisavaltuudet::$SAA_NAHDA_EI_MUOKATA_EI_POISTAA || $kokonaisuus->getNakyvyys() + 0 === Nakyvyys::$JULKINEN) { $nayta_koodi_nappi = Html::luo_button(Painikkeet::$NAYTA_KOODI_value, array(Attr::title(Painikkeet::$NAYTA_KOODI_title), Attr::onclick("hae_koodi", array($kokonaisuus->get_id(), Oliotyyppi::$KOKONAISUUS)), Attr::classs("btn btn-" . $btn_type . " btn-" . $btn_size . " article"))); } else { $nayta_koodi_nappi = ""; } /* Kuvan lisäyspainikkeet: */ $uusi_kuva_tiivis = ""; $uusi_kuva_seli = ""; // 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, 'class' => "btn btn-" . $btn_type . " btn-" . $btn_size . " article"); } else { $title = Painikkeet::$NAYTA_SELITYS_title; $onsubmit_funktionimi = "nayta_selitys"; $input_maaritteet = array('name' => Toimintonimet::$kokonaisuustoiminto, 'value' => Painikkeet::$NAYTA_SELITYS_value, 'title' => $title, 'class' => "btn btn-" . $btn_type . " btn-" . $btn_size . " article"); } $nayta_selitys_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } // Haetaan kokonaisuuden tehtävien lkm: $teht_lkm = sizeof($tehtavakontrolleri->hae_tehtavat()); // Tehtävät näkyvät kaikille, jos niitä on: if ($teht_lkm > 0) { $onsubmit_funktionimi = "nayta_tehtavat"; $onsubmit_parametrit = array($kokonaisuus->get_id()); /* Tämän avulla löytyvät */ $form_maaritteet = array('method' => 'post', 'class' => 'article', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon=" . $kokonaisuus->get_id() . "&" . Oliotyyppi::$naytettava_name . "=" . Palaute::$NAYTETTAVA_OLIOTYYPPI_TEHTAVA); $title = Painikkeet::$tehtava_nayta_tehtavat_title . " (" . $teht_lkm . ")"; $input_maaritteet = array('name' => Toimintonimet::$tehtavatoiminto, 'value' => Painikkeet::$tehtava_nayta_tehtavat_value, 'title' => $title, 'class' => "btn btn-" . $btn_type . " btn-" . $btn_size); $tehtavanappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } /** * Muokkaus ja poisto tietysti kunkulle ja kokonaisuuden tekijälle. * Vain heille on myös luvallista jakaa lisäoikeuksia olioon. <p>Jos kokonaisuus lukittu toisen toimesta, ei sitä voida poistaa eikä muokata. Uusia tehtäviä voi kuitenkin lisätä, koska siinä mahdollinen samanaikaisuus ei haittaa.</p> <p>Uusia tehtäviä voi lisätä valtuusarvot >= "tehtävien_lisäys".</p> Kokonaisuuksien poisto sallitaan turvallisuussyistä vain lapsettomille kokonaisuuksille. */ if ($kohdeoikeudet == Lisavaltuudet::$KAIKKI_OIKEUDET) { // Oikeuksien eli lisävaltuuksien jakopainike:====================== $action_os = "oLetUs"; // Testaan samalla kirjainkoon vaikutusta. $action_kyselymuuttujat = array("id_kokon", "oppiaine_kokon", "kieli_id", Kayttajakontrolleri::$lv_name_kohdeolio_id, Kayttajakontrolleri::$lv_name_kohdeoliotyyppi, Kayttajakontrolleri::$lv_name_omistaja_id); $action_kyselyarvot = array($kokonaisuus->get_id(), $kokonaisuus->getOppiaine(), $kokonaisuus->getKieli(), $kokonaisuus->get_id(), Oliotyyppi::$KOKONAISUUS, $kokonaisuus->getHenkiloId()); $jaa_oikeuksia_nappi = Kayttajanakymat::luo_jaa_lisaoikeuksia_painike($action_os, $action_kyselymuuttujat, $action_kyselyarvot); //================================================================== } if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) { //====================== LUKITUKSEN HUOMIOINTI ===================== // Muokkaus- ja poistonapit lukitsemattomalle tai omalle. if (!$this->lukitus_estaa_muokkauksen($kokonaisuus, $omaid)) { // Muokkauspainike: $elementti = Elementti::$MUUTTUJAA_EI_MAARITELTY; $elemryhma = Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY; $muokkausnappi = $this->luo_muokkauspainike($kokonaisuus, $elementti, $elemryhma); //============================================================= if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_JA_POISTAA) { // Poisto vain lapsettomille ja tehtävättömille: if ($kokonaisuus->getOn_lapsia() == 0) { $tehtavat = Tehtava::hae_kokonaisuuden_tehtavat($kokonaisuus->get_id(), $parametriolio->get_tietokantaolio()); // Ellei tehtäviä löydy, voidaan poistaa: if (empty($tehtavat)) { // POistopainike: $poistonappi = Html::luo_forminput_painike(array(Attr::classs("article"), Attr::action("{$_SERVER['PHP_SELF']}?id_kokon=" . $kokonaisuus->get_id())), array(Attr::classs("btn btn-" . $btn_type . " btn-" . $btn_size), Attr::name("toiminta"), Attr::value(Painikkeet::$POISTA_KOKON_VALUE))); if ($kokonaisuus->getLukitus() == $omaid) { $poistonappi .= "<span style='color: green; font-weight:bold'>" . Tekstit::$ilm_kokon_omalukitus_paalla . "<br/></span>"; } } } } //============================================================= // Julkista/piilota-painike: if ($kokonaisuus->getNakyvyys() + 0 === Nakyvyys::$JULKINEN) { $value = Painikkeet::$PIILOTA_KOKON_value; $title = Painikkeet::$PIILOTA_KOKON_title; } else { $value = Painikkeet::$JULKISTA_KOKON_value; $title = Painikkeet::$JULKISTA_KOKON_title; } $onsubmit_funktionimi = ""; // Tulevaa varten. $onsubmit_parametrit = ""; // Ei ole vielä. $form_maaritteet = array("class" => "article", "method" => "post", "action" => "{$_SERVER['PHP_SELF']}?id_kokon=" . $kokonaisuus->get_id() . "&oppiaine_kokon=" . $kokonaisuus->getOppiaine() . "&kieli_id=" . $kokonaisuus->getKieli()); $input_maaritteet = array("class" => "btn btn-" . $btn_type . " btn-" . $btn_size, "value" => $value, "title" => $title, "name" => Toimintonimet::$kokonaisuustoiminto); try { $nakyvyysmuutosnappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } catch (Exception $poikkeus) { $nakyvyysmuutosnappi = $poikkeus->getMessage(); } //============================================================= // 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" => "article", "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, "class" => "btn btn-" . $btn_type . " btn-" . $btn_size); 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" => "article", "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, "class" => "btn btn-" . $btn_type . " btn-" . $btn_size); 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(); } } // Tämä liittyy vanhan järjestysnumeron korjaukseen (kun monilla // kokonaisuuksilla oli sama järjestysnumero -1). Nykyään // tekniikka on muuttunut, eikä sitä yleensä tarvita. if ($kokonaisuus->getJarjestysnro() == -1) { $nayta_jarj_luku = " jarjestysnro: " . $kokonaisuus->getJarjestysnro(); $class = "rinnakkain"; $id = ""; $action = "{$_SERVER['PHP_SELF']}?id_kokon=" . $kokonaisuus->get_id() . "&oppiaine_kokon=" . $kokonaisuus->getOppiaine() . "&kieli_id=" . $kokonaisuus->getKieli(); $name = Toimintonimet::$kokonaisuustoiminto; $value = "Korjaa jarjestysnro"; $korjausnappi = Html::luo_painikelomake($class, $id, $action, $name, $value); } /**************************************************************/ } else { if ($kokonaisuus->lukitus != Kokonaisuusolio::$LUKITUS_OFF) { $poistonappi = "<span style='color: red; font-weight:bold'>" . Tekstit::$ilm_kokon_lukitus_paalla . "<br/></span>"; } } /* Uuden kuvan lisäyspainike tiivistelmään*/ $onsubmit_funktionimi = "nayta_kuvalomake"; $onsubmit_parametrit = array($kokonaisuus->get_id()); /* Kokonaisuuden id*/ $form_maaritteet = array('method' => 'post', 'class' => 'article', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon=" . $kokonaisuus->get_id() . "&" . "kohde_kuva=" . Kuvat::$kohde_kokonaisuus_tiivistelma); $input_maaritteet = array('name' => Toimintonimet::$kokonaisuustoiminto, 'value' => Painikkeet::$LISAA_KUVA_TIIVIS_KOKON_VALUE, 'title' => Painikkeet::$LISAA_KUVA_TIIVIS_KOKON_TITLE, "class" => "btn btn-" . $btn_type . " btn-" . $btn_size); try { $uusi_kuva_tiivis = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } catch (Exception $poikkeus) { $palaute .= "Virhe kuvanapin luomisessa: " . $poikkeus->getMessage(); } /* Uuden kuvan lisäyspainike selitykseen:*/ $onsubmit_funktionimi = "nayta_kuvalomake"; $onsubmit_parametrit = array($kokonaisuus->get_id()); /* Kokonaisuuden id*/ $form_maaritteet = array('method' => 'post', 'class' => 'article', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon=" . $kokonaisuus->get_id() . "&" . "kohde_kuva=" . Kuvat::$kohde_kokonaisuus_selitys); $input_maaritteet = array('name' => Toimintonimet::$kokonaisuustoiminto, 'value' => Painikkeet::$LISAA_KUVA_SELITYS_KOKON_VALUE, 'title' => Painikkeet::$LISAA_KUVA_SELITYS_KOKON_TITLE, "class" => "btn btn-" . $btn_type . " btn-" . $btn_size); try { $uusi_kuva_seli = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } catch (Exception $poikkeus) { $palaute .= "Virhe kuvanapin luomisessa: " . $poikkeus->getMessage(); } } // Hallinnan / muokkaaajan / luojan osuus päättyy // Tehtävien lisääminen sopivasti oikeutetuille: if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) { $elementti = Elementti::$MUUTTUJAA_EI_MAARITELTY; $elemryhma = Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY; $uusi_teht_nappi = $this->luo_uusi_teht_painike($kokonaisuus, $elementti, $elemryhma); } // TEhtävien lisäyspainikekoodi loppuu. /* haetaan mahdolliset kuvat */ $kuvahtml_tiivis = $kokonaisuus->hae_kuvat(Kuvat::$kohde_kokonaisuus_tiivistelma, $omaid, $tietokantaolio, false); /* kokolaisuuksien hierarkia: html-otsikkotasot. */ $class_arvo = "kokonaisuus"; $painikkeet_ylla = $nayta_ed_nappi . $siirra_ylemmaksi_nappi . $siirra_alemmaksi_nappi . $tehtavanappi . $uusi_teht_nappi . $muokkausnappi . $korjausnappi . $nakyvyysmuutosnappi . $jaa_oikeuksia_nappi . $nayta_seur_nappi; $painikkeet_alla = $nayta_koodi_nappi . $uusi_kuva_tiivis . $uusi_kuva_seli . $nayta_selitys_nappi . $poistonappi; $otsikko = "<div class = " . $class_arvo . " id=" . $kokonaisuus->get_id() . ">" . "<h" . ($kokonaisuus->getOtsikkotaso() + 1) . ">" . $kokonaisuus->getOtsikkomerkinta() . " " . $kokonaisuus->getOtsikko() . " " . "</h" . ($kokonaisuus->getOtsikkotaso() + 1) . ">"; /* Haetaan vielä tarvittaessa selitys: */ if ($selitys_auki) { /* 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::$JULKINEN || $kokonaisuus->getHenkiloId() == $omaid || $kayttajan_valtuudet + 0 === Valtuudet::$HALLINTA) { $normaali_kokonaisuus = Html::div(array(Attr::classs("kokon_ylanapit")), $painikkeet_ylla) . $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 .= $vainkoosteilmoitus . $tiivistelma; } else { $normaali_kokonaisuus .= $tiivistelma; } } } $normaali_kokonaisuus .= Html::div(array(Attr::classs("kokon_alanapit")), $painikkeet_alla); /* Lisätään vielä div selitystä varten: */ if ($selitys_auki) { $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 = "kokonaisuus"; $otsikko = "<div class = " . $class_arvo . " id=" . $kokonaisuus->get_id() . ">" . "<h" . ($kokonaisuus->getOtsikkotaso() + 1) . ">" . $kokonaisuus->getOtsikkomerkinta() . " " . $kokonaisuus->getOtsikko() . " " . "</h" . ($kokonaisuus->getOtsikkotaso() + 1) . ">"; $palaute = $nayta_ed_nappi . $siirra_ylemmaksi_nappi . $siirra_alemmaksi_nappi . $nayta_koodi_nappi . $nakyvyysmuutosnappi . $nayta_seur_nappi . $otsikko; $palaute .= $piilotushuomautus; $palaute .= "</div>"; /* Kokonaisuus loppuu. */ } else { // Kun jonkun toisen yksityinen / vain koosteessa, eikä hallintavaltuuksia: $palaute = ""; } } return $palaute; }
/** * @param Parametrit $parametriolio * @param Palaute $palauteolio * @return html Palauttaa sivun täydellisen html:n. */ function nayta_etusivu($nayttotapa) { $parametriolio = $this->parametriolio; $palauteolio = $this->palauteolio; $valtuudet = $parametriolio->get_valtuudet(); $url = $palauteolio->get_js_url(); $go_to_url_by_js = $palauteolio->go_to_url_by_js(); $valikko = $palauteolio->get_valikko_html(); $oppiainetiedot = $palauteolio->get_oppiainetiedot(); $ylapalkkipainikkeet = $palauteolio->get_ylapalkkipainikkeet(); $sisalto = $palauteolio->get_sisalto(); $ilmoitus = $palauteolio->get_ilmoitus(); $linkit = $palauteolio->get_linkkihtml(); $aika = Aika::anna_nyk_viikonp_suomeksi() . " " . date("d.m.Y"); $aikailmoitus = "Tänään on " . $aika . " "; $tietomuutospainike = ""; $uusi_kokon_painike = $palauteolio->get_uusi_kokon_painike(); $nayttonappi = Html::luo_button(Painikkeet::$ASETUKSET_YLEINEN_AVAA, array(Attr::id("nayttonappi"), Attr::classs("btn btn-default btn-md"), Attr::onclick("aseta_elementin_nakyvyys", array("asetusnapit", "inline", "piilotusnappi", "nayttonappi")))); $piilotusnappi = Html::luo_button(Painikkeet::$ASETUKSET_YLEINEN_PIILOTA, array(Attr::id("piilotusnappi"), Attr::classs("btn btn-default btn-md"), Attr::style("display: none"), Attr::onclick("aseta_elementin_nakyvyys", array("asetusnapit", "none", "piilotusnappi", "nayttonappi")))); if (empty($valikko)) { $nayttonappi = ""; $piilotusnappi = ""; //$koostepainike = ""; } // Tulostetaan etusivun html-koodi: $otsikkoteksti = Tekstit::$otsikko1_etusivu; //Muotoillaan otsikko sen mukaan, ollaanko kokonaisuudessa vai muualla. // Tosin nyt kyllä ihan samanlainen.. if ($palauteolio->get_naytettava_oliotyyppi() == Palaute::$NAYTETTAVA_OLIOTYYPPI_KOKONAISUUS) { $otsikko = $otsikkoteksti . " " . $oppiainetiedot; } else { $otsikko = $otsikkoteksti . " " . $oppiainetiedot; } // Vain katselu on mahdollista ilman kirjautumista: if ($valtuudet > Valtuudet::$KATSELU) { $kirjautuminen = Html::span(array(Attr::style("font-size:70%")), " " . $_SESSION['tiedot']->etunimi . " ") . Html::luo_forminput_painike(array(Attr::classs("navbar-form inline-block")), array(Attr::classs("btn btn-default btn-md"), Attr::name("toiminta"), Attr::value(Painikkeet::$KIRJAUDU_ULOS_VALUE))); // Ellei näytetä valikoita, pannaan muutkin minimiin: if ($palauteolio->get_valikkonaytto()) { $tietomuutospainike = Html::luo_forminput_painike(array(Attr::classs("navbar-form inline-block")), array(Attr::classs("btn btn-default btn-md"), Attr::name(Toimintonimet::$henkilotietotoiminto), Attr::value(Painikkeet::$nayta_tietomuutoslomake_value))); } } else { $kirjautuminen = Html::a(array(Attr::title(Tekstit::$linkit_tunnistautuminen)), Html::span(array(Attr::classs("glyphicon glyphicon-log-in login-painike")), ""), "tunnistus.php"); } array_push($ylapalkkipainikkeet, $nayttonappi); array_push($ylapalkkipainikkeet, $piilotusnappi); array_push($ylapalkkipainikkeet, Html::li(array(), $kirjautuminen)); // Jos käyttäjällä on riittävät valtuudet, hän saa lisätä henkilöitä ja muuttaa // oikeuksia: HUOM! Tällainen kuuluisi kai loogisesti olemaan index.php:ssa. $erikoistoiminnot = ""; if ($valtuudet == Valtuudet::$HALLINTA && $palauteolio->get_valikkonaytto()) { $erikoistoiminnot = "<form method='post' class='navbar-form inline-block'\n action='{$_SERVER['PHP_SELF']}'>\n <input type='submit' name = 'erikoistoiminta'\n class='btn btn-default'\n value='" . Painikkeet::$lisaa_henkilo_value . "'/></form>"; $erikoistoiminnot .= "<form method='post' class='navbar-form inline-block'\n action='{$_SERVER['PHP_SELF']}'>\n <input type='submit' name = 'erikoistoiminta'\n class='btn btn-default'\n value='" . Painikkeet::$nayta_valtuudet_value . "'/></form>"; } /* Muokataan urliin meno js-koodin avulla, jos sellainen asetettu. * On hidas erityisesti kaavaeditoinnin kanssa, minkä takia ei kovin * suositeltu. Ilmeisesti parempi käyttää #id-juttua urlissa. */ if ($go_to_url_by_js && $url != -1 && !empty($url)) { $url = "#" . $url; $js_koodi = <<<HUU <script type='text/javascript'> window.location='{$url}'; </script> HUU; } else { $js_koodi = ""; } // Muokataan pohjan, sisällön ja linkkipalkin id:t: $palkki_oikea_on = false; $palkki_oikea_id = "palkki_oikea"; $number_of_col = 2; $sidenav_fixed = false; if ($nayttotapa == Html_koodi::$sisaltoelem_fixed) { $pohja_id = "pohja_kiintea"; $sisalto_id = "sisalto_fixed"; $palkki_vasen_id = "palkki_vasen_fixed"; } else { if ($nayttotapa == Html_koodi::$sisaltoelem_levea) { $number_of_col = 1; } else { if ($nayttotapa == Html_koodi::$sisaltoelem_norm_3palkki) { $palkki_oikea_on = true; $number_of_col = 3; } else { if ($nayttotapa == Html_koodi::$sisaltoelem_tulostus) { $pohja_id = "pohja_kiintea"; $sisalto_id = "sisalto"; $palkki_vasen_id = ""; // $palkki_oikea_on = true; } else { if ($nayttotapa == Html_koodi::$sidenav_fixed) { $sidenav_fixed = true; } else { $pohja_id = "pohja_kiintea"; $sisalto_id = "sisalto"; $palkki_vasen_id = "palkki_vasen"; } } } } } // Oikea palkki: $palkki_oikea_html = ""; if ($palkki_oikea_on) { $palkki_oikea_html = "<div id=" . $palkki_oikea_id . ">" . $palauteolio->get_sisalto_palkki_oikea() . "</div>"; } /* * */ if ($nayttotapa != Html_koodi::$sisaltoelem_tulostus) { $links = $uusi_kokon_painike . $linkit; $content = $sisalto . $js_koodi; $header_content = $otsikko; $asetuspainikkeet = $tietomuutospainike . $erikoistoiminnot . " " . $valikko; $etusivu = '<!DOCTYPE html>' . '<html>' . $this->create_head() . '<!--******************* POHJA ******************************--> <body onload="kaynnista_metodit(1)"> ' . get_latex_config() . ' <div id="ilmoitus">' . $ilmoitus . '</div> <!--******************* OTSIKKOPALKKI ***********************--> ' . $this->create_nav($header_content, $ylapalkkipainikkeet, $asetuspainikkeet) . ' <!--********* LINKKIPALKKI, SISÄLTÖ JA OIKEA PALKKI *********--> ' . $this->create_sidenavs_and_content_row($links, $content, $palkki_oikea_html, $number_of_col, $sidenav_fixed) . ' <!--******************* TIEDOT ELI ALAPALKKI ****************--> ' . $this->create_footer($aikailmoitus, $this->create_copyright()) . ' <!--******************* TIEDOT ELI ALAPALKKI LOPPUU *********--> </body> </html>'; return $etusivu; } else { // Jos tulostamassa: $etusivu = '<!DOCTYPE html>' . '<html> <head> <meta content="text/html; charset=UTF-8" http-equiv="content-type"> <title>Opinnot.net - tulostus</title> <link rel="stylesheet" type="text/css" href="tyylit/perusmuotoilut.css" /> <link rel="stylesheet" type="text/css" href="tyylit/tulostusmuotoilut.css" /> <link rel="stylesheet" type="text/css" href="php_yleinen/matematiikka/matematiikkatyylit.css" /> <link rel="stylesheet" type="text/css" href="tyylit/print.css" media="print" /> <script type="text/javascript" src="ajax_ja_js/metodit.js"></script> <script type="text/javascript" src="ajax_ja_js/tekstinmuokkausmetodit.js"></script> <script type="text/javascript" src="ajax_ja_js/ajaxkirjasto.js"></script> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ jax: ["input/TeX", "output/SVG"], TeX: { equationNumbers: { autoNumber: "AMS" } } }); </script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> </script> <style type="text/css"> </style> </head> <!--******************* POHJA *******************************--> <body> ' . get_latex_config() . ' <div id=' . $pohja_id . '> <div id="ilmoitus">' . $ilmoitus . '</div> <!--******************* LINKKIPALKKI ************************--> <div id="tulostusnayttopainikkeet">' . $linkit . '</div> <!--******************* SISäLTö *****************************--> <div id = ' . $sisalto_id . '> ' . $sisalto . ' </div> <!--******************* SISäLTö LOPPUU ***************--> </div> <!--******************* POHJA LOPPUU *****************--> </body> </html>'; return $etusivu; } }
/** * Luo tehtävän painikkeet tarkastaen käyttäjän oikeudet. Palauttaa * painikkeiden html-koodin taulukossa, joka voi olla tyhjä. * * Painikkeet liittyvät ratkaisun muokkaukseen, poistoon, oikeuksien * jakamiseen ja uuden kuvan lisäämiseen, joihin kaikkiin tarvitaan * peruskäyttäjää enemmän valtuuksia. Oikeuksien tarkistus vaatii * sen verran logiikkaa, ettei sitä oikein tunnu sopivalta tehdä * näkymissä. * * @param int $id_teht Sen tehtävän tunniste, jonka painikkeita haetaan. */ function luo_tehtavapainikkeet($id_teht) { $tietokantaolio = $this->get_tietokantaolio(); $omaid = $this->get_kayttaja()->get_id(); $id_kokon = $this->get_parametriolio()->id_kokon; $parametriolio = $this->get_parametriolio(); $painikkeet = array(); $poistonappi = ""; $muokkausnappi = ""; $ratkaisunappi = ""; /* Ratkaisujen näyttö */ $uusi_ratkaisu_nappi = ""; /* Uuden ratkaisun lisääminen */ $uusi_kuva_painike = ""; $jaa_oikeuksia_nappi = ""; $nayta_koodi_nappi = ""; // Haetaan ensin tehtävä: $tehtava = new Tehtava($id_teht, $tietokantaolio); if ($tehtava->olio_loytyi_tietokannasta) { // Lasketaan ratkaisut ja näytetään ratkaisupainike vain, jos // ratkaisuja on olemassa: $ratkaisut = $this->ratkaisukontrolleri->hae_ratkaisut($id_teht); $ratk_lkm = sizeof($ratkaisut); if ($ratk_lkm > 0) { // Ratkaisut näkyvät kaikille: $onsubmit_funktionimi = "hae_ratkaisut"; $onsubmit_parametrit = array($tehtava->getId(), $id_kokon, $omaid); $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_teht=" . $tehtava->getId() . "&id_kokon=" . $id_kokon . "&kohde_kuva=" . Kuvat::$kohde_ratkaisu . "&" . Oliotyyppi::$naytettava_name . "=" . Palaute::$NAYTETTAVA_OLIOTYYPPI_RATKAISU); $input_maaritteet = array('name' => Toimintonimet::$tehtavatoiminto, 'value' => Painikkeet::$ratkaisu_nayta_ratkaisut_value, 'title' => Painikkeet::$ratkaisu_nayta_ratkaisut_title . " (" . $ratk_lkm . ")"); $ratkaisunappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } //================================================================== $kohdeoikeudet = Henkilo::hae_kayttajan_kohdeoikeudet($tehtava->getHenkiloId(), $omaid, Oliotyyppi::$TEHTAVA, $tehtava->getId(), $tietokantaolio); // Muokkaus ja poisto tietysti sopivan korkeille henkilöille. // HUOMAA: jatkossa myös sopivasti muokkaajille! if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_JA_POISTAA) { // POistopainike: $class = "rinnakkain"; $id = ""; $action = "{$_SERVER['PHP_SELF']}" . "?id_teht=" . $tehtava->getId() . "&id_kokon=" . $id_kokon . "&kohde_kuva=" . Kuvat::$kohde_tehtava; $name = Toimintonimet::$tehtavatoiminto; $value = Painikkeet::$tehtava_poista_value; $poistonappi = Html::luo_painikelomake($class, $id, $action, $name, $value); // Oikeuksia saa jakaa vain omistaja ja kunkku. if ($kohdeoikeudet + 0 === Lisavaltuudet::$KAIKKI_OIKEUDET + 0) { // Oikeuksien eli lisävaltuuksien jakopainike:====================== $action_os = "oletus"; $action_kyselymuuttujat = array("id_kokon", "oppiaine_kokon", "kieli_id", Kayttajakontrolleri::$lv_name_kohdeolio_id, Kayttajakontrolleri::$lv_name_kohdeoliotyyppi, Kayttajakontrolleri::$lv_name_omistaja_id); $action_kyselyarvot = array($id_kokon, $parametriolio->oppiaine_kokon, $parametriolio->kieli_id, $tehtava->getId(), Oliotyyppi::$TEHTAVA, $tehtava->getHenkiloId()); $jaa_oikeuksia_nappi = Kayttajanakymat::luo_jaa_lisaoikeuksia_painike($action_os, $action_kyselymuuttujat, $action_kyselyarvot); //================================================================== } } // Muokkaus: if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) { // Muokkauspainike: $class = "muokkauspainike"; $id = ""; /* HUOM! ÄLÄ JÄTÄ TYHJIÄ VÄLEJÄ =-MERKIN YMPÄRILLE! * AIHEUTTIVAT SEN, ETTÄ TEHTÄVÄNANTO EI NÄKYNYT! */ $action = "{$_SERVER['PHP_SELF']}" . "?id_teht=" . $tehtava->getId() . "&id_kokon=" . $id_kokon . "&kohde_kuva=" . Kuvat::$kohde_tehtava; $name = Toimintonimet::$tehtavatoiminto; $value = Painikkeet::$tehtava_muokkaa_value; $muokkausnappi = Html::luo_painikelomake($class, $id, $action, $name, $value); /* Uuden kuvan lisäyspainike tehtävään*/ $onsubmit_funktionimi = "nayta_kuvalomake"; $onsubmit_parametrit = array($tehtava->getId()); $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon=" . $id_kokon . "&id_teht=" . $tehtava->getId() . "&uusi_kuva=true" . "&kohde_kuva=" . Kuvat::$kohde_tehtava); $input_maaritteet = array('name' => Toimintonimet::$tehtavatoiminto, 'value' => Painikkeet::$tehtava_lisaa_kuva_value, 'title' => Painikkeet::$tehtava_lisaa_kuva_title); try { $uusi_kuva_painike = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } catch (Exception $poikkeus) { $palaute .= "Virhe kuvanapin luomisessa: " . $poikkeus->getMessage(); } } // Koodipainike, ellei ole piilotettu: if ($kohdeoikeudet >= Lisavaltuudet::$SAA_NAHDA_EI_MUOKATA_EI_POISTAA || $tehtava->getNakyvyys() + 0 === Nakyvyys::$JULKINEN) { // Koodia voivat kaikki vilkaista, jos vain näkyvissä: $nayta_koodi_nappi = Html::luo_button(Painikkeet::$NAYTA_KOODI_value, array(Attr::title(Painikkeet::$NAYTA_KOODI_title), Attr::onclick("hae_koodi", array($tehtava->get_id(), Oliotyyppi::$TEHTAVA)))); } //============== Ratkaisun lisäyspainike =========================== // Uuden ratkaisun lisäysoikeudet (kohdeoikeudet ei oikein istu tähän): if ($this->get_kayttaja()->get_arvo(Henkilo::$sarakenimi_valtuudet) >= Valtuudet::$TEHTAVA_LISAYS) { // Uusi_ratkaisu_painike: try { $onsubmit_funktionimi = "nayta_ratkaisulomake"; $onsubmit_parametrit = array($tehtava->getId()); /* Tehtävän id */ $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_teht=" . $tehtava->getId() . "&id_kokon=" . $id_kokon . "&uusi=1" . "&kohde_kuva=" . Kuvat::$kohde_ratkaisu); $input_maaritteet = array('name' => Toimintonimet::$tehtavatoiminto, 'value' => Painikkeet::$ratkaisu_uusi_value); $uusi_ratkaisu_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } catch (Exception $poikkeus) { $sisalto .= "Uusi ratkaisu -painike: " . $poikkeus->getMessage(); } } } $ehdokkaat = array($ratkaisunappi, $uusi_ratkaisu_nappi, $muokkausnappi, $nayta_koodi_nappi, $uusi_kuva_painike, $jaa_oikeuksia_nappi, $poistonappi); // Otetaan mukaan ne painikkeet, jotka eivät ole tyhjiä: foreach ($ehdokkaat as $nappi) { if (!empty($nappi)) { array_push($painikkeet, $nappi); } } return $painikkeet; }
/** * Palauttaa button-elementin html-koodauksen. Painike näyttää kaikki * koosteen elementit, joita lupa nähdä. * * Tämä painike hakee ajax-kutsun avulla kaikki elementit, jotta päästään * takaisin normaaliin koostenäyttöön elementtiryhmistä. * * @param type $kooste_id * @return type */ private function luo_koosteen_nayttopainike_ajax($kooste_id) { $teksti = Painikkeet::$kooste_nayta_kaikki_value; $title = Painikkeet::$kooste_nayta_kaikki_title; $painike = Html::luo_button($teksti, array(Attr::title($title), Attr::classs("btn btn-" . Koostenakymat::$btn_type_summary . " btn-" . Koostenakymat::$btn_size_summary . " summary"), Attr::onclick("hae_koosteen_elementit", array($kooste_id, Koostekontrolleri::$kooste_name_id)))); return $painike; }
/** * Palauttaa yhden koostelomakkeessa otsikon "valitut elementit" alla * olevan valinnan html-koodin. Valinnalle annetaan id arvoksi vastaavan * olion id, jonka eteen on lisatty teksti "elemval_kokon_", "elemval_teht_" * tai "elemval_ratk_", jotta oikea olio pystytään löytämään (id:t voivat * olla samoja eri olioilla). * * HUOM! Jos parametri $divi_tagit_mukaan on arvoltaan false, ei * div-tageja liitetä sisällön ympärille. Tätä tarvitaan, kun ajaxin kautta * tuodaan koodia sisään. * * * @param type $oliotyyppi * @param type $id_olio * @param type $divi_tagit_mukaan * @param Tietokantaolio $tietokantaolio * @return type */ public function luo_valitut_elem_divi($oliotyyppi, $id_olio, $divi_tagit_mukaan, $tietokantaolio) { // Every div containing a choice has this same class value: $class_name = "chosen_elements_div"; if ($oliotyyppi + 0 === Oliotyyppi::$KOKONAISUUS) { $olio = new Kokonaisuusolio($id_olio, $tietokantaolio); $otsikko = Tekstit::$Kokonaisuus_short . " " . $olio->getOtsikko(); } else { if ($oliotyyppi + 0 === Oliotyyppi::$TEHTAVA) { $olio = new Tehtava($id_olio, $tietokantaolio); $otsikko = Tekstit::$Tehtava_short . ": " . $olio->getOtsikko(); } else { if ($oliotyyppi + 0 === Oliotyyppi::$RATKAISU) { $olio = new Ratkaisu($id_olio, $tietokantaolio); $otsikko = Tekstit::$Ratkaisu_short . " :" . $olio->getVastaus(); } else { $otsikko = Tekstit::$tuntematon; $olio = null; } } } $valittuelem_id = $this->luo_valitun_elementin_id($olio); $valittuelem_valintaruutu = $this->luo_valittujen_elem_listan_valintaruutu($olio); if ($divi_tagit_mukaan) { $palaute = Html::luo_div($otsikko . $valittuelem_valintaruutu, array(Attr::id($valittuelem_id), Attr::classs($class_name), Attr::onclick("kooste_set_elem_place", array($valittuelem_id)))); } else { $palaute = $otsikko . $valittuelem_valintaruutu; } return $palaute; }
/** * Luo ratkaisun painikkeet tarkastaen käyttäjän oikeudet. * * Huom: Käyttäjän id saadaan osoitteesta $this->get_parametriolio()->get_omaid(). * Tämä on tärkeä tietää, koska sen perusteella annetaan toimenpidevaltuudet! * * Palauttaa painikkeiden html-koodin taulukossa, joka voi olla tyhjä. * * Painikkeet liittyvät ratkaisun muokkaukseen, poistoon, oikeuksien * jakamiseen ja uuden kuvan lisäämiseen, joihin kaikkiin tarvitaan * peruskäyttäjää enemmän valtuuksia. Oikeuksien tarkistus vaatii * sen verran logiikkaa, ettei sitä oikein tunnu sopivalta tehdä * näkymissä. * * @param int $id_ratk Sen ratkaisun tunniste, jonka painikkeita haetaan. */ function luo_ratkaisupainikkeet($id_ratk) { $tietokantaolio = $this->get_tietokantaolio(); $omaid = $this->get_parametriolio()->get_omaid(); $id_kokon = $this->get_parametriolio()->id_kokon; $painikkeet = array(); $poistonappi = "piip"; $muokkausnappi = ""; $uusi_kuva_painike = ""; $jaa_oikeuksia_nappi = ""; $nayta_koodi_nappi = ""; // Haetaan ensin ratkaisu: $ratkaisu = new Ratkaisu($id_ratk, $tietokantaolio); if ($ratkaisu->olio_loytyi_tietokannasta) { //================================================================== $kohdeoikeudet = Henkilo::hae_kayttajan_kohdeoikeudet($ratkaisu->getHenkiloId(), $omaid, Oliotyyppi::$RATKAISU, $ratkaisu->getId(), $tietokantaolio); $this->lisaa_lihava_kommentti("kohdeoikeudet=" . $kohdeoikeudet . ", henkilo_id=" . $ratkaisu->getHenkiloId() . " ja omaid=" . $omaid); // Muokkaus ja poisto tietysti sopivan korkeille henkilöille. // HUOMAA: jatkossa myös sopivasti muokkaajille! if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_JA_POISTAA) { // POistopainike: $class = "rinnakkain"; $id = ""; $action = "{$_SERVER['PHP_SELF']}" . "?id_ratk=" . $ratkaisu->getId() . "&id_teht=" . $ratkaisu->getTeht_id() . "&id_kokon=" . $id_kokon; $name = Toimintonimet::$tehtavatoiminto; $value = Painikkeet::$ratkaisu_poista_value; $poistonappi = Html::luo_painikelomake($class, $id, $action, $name, $value); array_push($painikkeet, $poistonappi); // Oikeuksia saa jakaa vain omistaja ja kunkku. if ($kohdeoikeudet === Lisavaltuudet::$KAIKKI_OIKEUDET) { // Oikeuksien eli lisävaltuuksien jakopainike:====================== $action_os = "oletus"; $action_kyselymuuttujat = array("id_kokon", "oppiaine_kokon", "kieli_id", "id_teht", Kayttajakontrolleri::$lv_name_kohdeolio_id, Kayttajakontrolleri::$lv_name_kohdeoliotyyppi, Kayttajakontrolleri::$lv_name_omistaja_id); $action_kyselyarvot = array($id_kokon, $this->get_parametriolio()->oppiaine_kokon, $this->get_parametriolio()->kieli_id, $ratkaisu->getTeht_id(), $ratkaisu->getId(), Oliotyyppi::$RATKAISU, $ratkaisu->getHenkiloId()); $jaa_oikeuksia_nappi = Kayttajanakymat::luo_jaa_lisaoikeuksia_painike($action_os, $action_kyselymuuttujat, $action_kyselyarvot); array_push($painikkeet, $jaa_oikeuksia_nappi); //================================================================== } } if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) { // TArkistetaan urliin menevät tiedot: //$vastaus_turvallinen = urlencode($this->vastaus); //$ratkaisu_turvallinen = urlencode($this->ratkaisu); // Muokkauspainike: $class = "rinnakkain"; $id = ""; $action = "{$_SERVER['PHP_SELF']}" . "?id_ratk=" . $ratkaisu->getId() . "&id_teht=" . $ratkaisu->getTeht_id() . "&id_kokon=" . $id_kokon; //"&vastaus_ratk=".$vastaus_turvallinen. // "&ratkaisu_ratk=".$ratkaisu_turvallinen; $name = Toimintonimet::$tehtavatoiminto; $value = Painikkeet::$ratkaisu_muokkaa_value; $muokkausnappi = Html::luo_painikelomake($class, $id, $action, $name, $value); array_push($painikkeet, $muokkausnappi); /* Uuden kuvan lisäyspainike ratkaisuun*/ $onsubmit_funktionimi = "nayta_kuvalomake"; $onsubmit_parametrit = array($ratkaisu->getId()); /* Ratkaisun id*/ $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon=" . $id_kokon . "&id_teht=" . $ratkaisu->getTeht_id() . "&id_ratk=" . $ratkaisu->getId() . "&kohde_kuva=" . Kuvat::$kohde_ratkaisu); $input_maaritteet = array('name' => Toimintonimet::$tehtavatoiminto, 'value' => Painikkeet::$ratkaisu_lisaa_kuva_value, 'title' => Painikkeet::$ratkaisu_lisaa_kuva_title); try { $uusi_kuva_painike = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); array_push($painikkeet, $uusi_kuva_painike); } catch (Exception $poikkeus) { $this->lisaa_virheilmoitus(Tekstit::$ratkaisu_virheilm_kuvanapin_luonti_eiok . $poikkeus->getMessage()); } } if ($kohdeoikeudet >= Lisavaltuudet::$SAA_NAHDA_EI_MUOKATA_EI_POISTAA || $ratkaisu->getNakyvyys() + 0 === Nakyvyys::$JULKINEN) { // Koodia voivat kaikki vilkaista, jos vain näkyvissä: $nayta_koodi_nappi = Html::luo_button(Painikkeet::$NAYTA_KOODI_value, array(Attr::title(Painikkeet::$NAYTA_KOODI_title), Attr::onclick("hae_koodi", array($ratkaisu->get_id(), Oliotyyppi::$RATKAISU)))); array_push($painikkeet, $nayta_koodi_nappi); } } else { $this->lisaa_virheilmoitus(Tekstit::$ratkaisu_ilm_ei_loytynyt); } return $painikkeet; }
/** * Palauttaa painikkeiden html-koodin. * @param int $kaavakieli matematiikassa käytettävä syöttökieli. Ks. * vakiot luokan alussa. * @return type */ function luo_painikkeet($tarkennus, $kaavakieli) { /* Lisätään muutama painike tekstin muokkausta varten: */ $lainausmerkki_yks = Tekstityokalupalkki::$tekstimuokkaus_lainausmerkkiVINO_yks; $lainausmerkki_kaks = Tekstityokalupalkki::$tekstimuokkaus_lainausmerkkiVINO_kaks; $kertomerkki = Tekstityokalupalkki::$tekstimuokkaus_kertomerkki; $miinusmerkki = Merkit::$miinusmerkki; $merkkivalikko_perusmerkit = $this->luo_merkkivalikko_jpmath($this->alasvetovalikon_id, $this->elementin_id); $tekstimuokkauspainikkeet = "<div class='tekstimuokkauspalkki' id='tekstimuokkauspalkki'>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"b\",\"\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_lihavointi_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_lihavointi . "</button>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"i\",\"\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_kursivointi_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_kursivointi . "</button>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"span\",\"korostus\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_korostus_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_korostus . "</button>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"u\",\"\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_alleviivaus_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_alleviivaus . "</button>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"sup\",\"\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_ylaindeksi_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_ylaindeksi . "</button>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"sub\",\"\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_alaindeksi_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_alaindeksi . "</button>" . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_xtoiseen, array(Attr::onclick('lisaaMerkki', array($this->elementin_id, "x<sup>2</sup>")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_xtoiseen_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_xkolmanteen, array(Attr::onclick('lisaaMerkki', array($this->elementin_id, "x<sup>3</sup>")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_xkolmanteen_title))) . "<button type='button'" . "onclick='lisaaMerkki(\"" . $this->elementin_id . "\",\"" . $kertomerkki . "\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_kertomerkki_title . "'>" . $kertomerkki . "</button>" . "<button type='button'" . "onclick='lisaaMerkki(\"" . $this->elementin_id . "\",\"" . Merkit::$miinusmerkki . "\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_miinusmerkki_title . "'>" . Merkit::$miinusmerkki . "</button>" . "<button type='button'" . "onclick='lisaaMerkki(\"" . $this->elementin_id . "\",\"" . Merkit::$likiarvo . "\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_likiarvo_title . "'>" . Merkit::$likiarvo . "</button>" . "<button type='button'" . "onclick='lisaaMerkki(\"" . $this->elementin_id . "\",\"" . Merkit::$tuplapystyviiva . "\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_tuplapystyviiva_title . "'>" . Merkit::$tuplapystyviiva . "</button>" . Html::luo_button(Merkit::$pystyviiva, array(Attr::onclick('lisaaMerkki', array($this->elementin_id, Merkit::$pystyviiva)), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_pystyviiva_title))) . "<button type='button'" . "onclick='lisaaSulut(\"" . $this->elementin_id . "\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_sulut_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_sulut . "</button>" . "<button type='button'" . "onclick='lisaaEriMerkkipari(\"" . $this->elementin_id . "\",\"[\",\"]\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_hakasulut_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_hakasulut . "</button>" . "<button type='button'" . "onclick='lisaaEriMerkkipari(\"" . $this->elementin_id . "\",\"{\",\"}\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_aaltosulut_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_aaltosulut . "</button>" . "<button type='button'" . "onclick='lisaaMerkkipari(\"" . $this->elementin_id . "\",\"" . Merkit::$lainausmerkki_yks . "\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_lainausmerkki_yks_title . "'>" . Merkit::$lainausmerkki_yks . "..." . Merkit::$lainausmerkki_yks . "</button>" . "<button type='button'" . "onclick='lisaaMerkkipari(\"" . $this->elementin_id . "\",\"" . $lainausmerkki_kaks . "\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_lainausmerkki_kaks_title . "'>" . Merkit::$lainausmerkki_kaks . "..." . Merkit::$lainausmerkki_kaks . "</button>"; // Merkkivalikko: // Luodaan ensin vientipainike: $painike = $this->luo_merkin_vientipainike($this->alasvetovalikon_id, $this->elementin_id); // Sijoitetaan alasvetovalikko ja sen painike taulukkoon: $tekstimuokkauspainikkeet .= $merkkivalikko_perusmerkit . $painike; //$tekstimuokkauspainikkeet .= "<br />"; $tekstimuokkauspainikkeet .= "<button type='button'" . "onclick='lisaaMerkki(\"" . $this->elementin_id . "\",\"<br />\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_rivinvaihto_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_rivinvaihto . "</button>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"p\",\"\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_kappale_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_kappale . "</button>" . "<button type='button'" . "onclick='lisaaLinkkitagit(\"" . $this->elementin_id . "\",\"\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_linkki_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_linkki . "</button>" . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_div, array(Attr::onclick('lisaaTagit', array($this->elementin_id, "div", "", "", "")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_div_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_span, array(Attr::onclick('lisaaTagit', array($this->elementin_id, "span", "", "", "")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_span_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_taulukko, array(Attr::onclick('lisaaTagit', array($this->elementin_id, "taulukko", "default centered centered_content", "", "")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_taulukko_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_taulukkorivi, array(Attr::onclick('lisaaTagit', array($this->elementin_id, "tr", "", "", "")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_taulukkorivi_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_taulukkosolu_td, array(Attr::onclick('lisaaTagit', array($this->elementin_id, "td", "", "", "")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_taulukkosolu_td_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_taulukkosolu_th, array(Attr::onclick('lisaaTagit', array($this->elementin_id, "th", "", "", "")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_taulukkosolu_th_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_ul, array(Attr::onclick('lisaaTagit', array($this->elementin_id, "ul", "", "", "")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_ul_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_ol, array(Attr::onclick('lisaaTagit', array($this->elementin_id, "ol", "", "", "")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_ol_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_li, array(Attr::onclick('lisaaTagit', array($this->elementin_id, "li", "", "", "")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_li_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_class, array(Attr::onclick('lisaaEriMerkkipari', array($this->elementin_id, "class=\\\"", "\\\"")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_class_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_id, array(Attr::onclick('lisaaEriMerkkipari', array($this->elementin_id, "id=\\\"", "\\\"")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_id_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_nowrap, array(Attr::onclick('lisaaMerkki', array($this->elementin_id, "style=\\\"white-space:nowrap;\\\"")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_nowrap_title))) . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"script\",\"\",\"\",\"text/javascript\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_skripti_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_skripti . "</button>" . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_button_value, array(Attr::onclick('lisaaEriMerkkipari', array($this->elementin_id, $this->luo_button_alkumerkkaus(), $this->muotoile(Tekstityokalupalkki::$tekstimuokkaus_button_loppumerkkaus))), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_button_title))) . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"code\",\"\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_code_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_code . "</button>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"div\",\"koodi\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_koodi_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_koodi . "</button>" . "<button type='button'" . "onclick='muokkaaErikoiset(\"" . $this->elementin_id . "\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_erikoismerkit_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_erikoismerkit . "</button>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"span\",\"suure\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_suure_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_suure . "</button>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"span\",\"yksikko\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_yksikko . "'>" . Tekstityokalupalkki::$tekstimuokkaus_yksikko . "</button>" . "<br/>"; //====================================================================== //==================== KAAVAKAAVAKAAVAKAAVA ============================ //====================================================================== //====================================================================== // Lisätään vielä kaavan lisäämiseen tarvittavat painikkeet, jos // valittu matemaattiset painikkeen: if ($tarkennus == Tekstityokalupalkki::$PERUSPAINIKKEET_JA_MATEMAATTISET) { $tekstimuokkauspainikkeet .= "<div style=" . $this->kaavapainikeryhmatyyli . ">" . $this->luo_kaavapainikkeet($kaavakieli) . "</div>"; // Kaavapainikeryhmän loppu. } //============== Kaavapainikkeet loppu ================================= $tekstimuokkauspainikkeet .= "</div>"; return $tekstimuokkauspainikkeet; }