예제 #1
0
 /**
  * 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;
 }
예제 #2
0
    /**
     * @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;
        }
    }
예제 #3
0
 /**
  * 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;
 }
예제 #4
0
 /**
  * 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;
 }
예제 #5
0
 /**
  * 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;
 }
예제 #6
0
 /**
  * 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;
 }
예제 #7
0
 /**
  * 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;
 }