/**
  * Toteuttaa nimenmukaisen toiminnon.
  * @return Palauteolio $palauteolio
  */
 public function toteuta_poista_PK()
 {
     $uusi = true;
     // false aiheutti vaikeasti huomattavan virheen. Ei
     // ollut tallennuskelpoinen..
     if ($this->nyk_pikakommentti->on_tallennuskelpoinen($uusi)) {
         $palaute = $this->nyk_pikakommentti->poista();
         if ($palaute == Pikakommentti::$OPERAATIO_ONNISTUI) {
             $ilmoitus = Pikakommenttitekstit::$ilmoitus_pikakommentin_poisto_ok;
         } else {
             $ilmoitus = Pikakommenttitekstit::$virheilmoitus_pikakommentin_poisto_eiok;
         }
     } else {
         $ilmoitus = $this->nyk_pikakommentti->tulosta_virheilmoitukset();
     }
     $this->palauteolio->set_ilmoitus($ilmoitus);
     return $this->palauteolio;
 }
예제 #2
0
 /**
  * Toteuttaa nimenmukaisen toiminnon.
  * @return Palauteolio $palauteolio
  */
 public function toteuta_poista_lajiluokka()
 {
     $poistettava = new Lajiluokka($this->tietokantaolio, $this->parametriolio->id_lj);
     if ($poistettava instanceof Lajiluokka) {
         if ($poistettava->olio_loytyi_tietokannasta) {
             $palaute = $poistettava->poista();
             if ($palaute === Lajiluokka::$OPERAATIO_ONNISTUI) {
                 $ilmoitus = Bongaustekstit::$lajiluokan_poisto_ok;
                 $this->palauteolio->set_operaatio_onnistui(true);
             } else {
                 $ilmoitus = Bongaustekstit::$lajiluokka_virheilmoitus_poisto_eiok . " " . $palaute;
                 $this->palauteolio->set_operaatio_onnistui(false);
             }
         } else {
             $ilmoitus = Bongaustekstit::$lajiluokka_virheilmoitus_poisto_eiok . " " . $poistettava->tulosta_virheilmoitukset();
             $this->palauteolio->set_operaatio_onnistui(false);
         }
     } else {
         $ilmoitus = Bongaustekstit::$lajiluokka_virheilmoitus_poisto_eiok_lajiluokkaa_ei_loyt;
         $this->palauteolio->set_operaatio_onnistui(false);
     }
     $this->palauteolio->set_ilmoitus($ilmoitus);
     return $this->palauteolio;
 }
예제 #3
0
/**
 * Toteuttaa kuvan poistovahvistuksen näyttämisen. Mukaan haetaan ja näytetään
 * poistettava kuva.
 *
 * @param Parametrit $parametriolio
 * @return Palaute $palauteolio
 */
function toteuta_nayta_poistovahvistus($parametriolio)
{
    $id_kokon = $parametriolio->id_kokon;
    $id_teht = $parametriolio->id_teht;
    $kohde = $parametriolio->kohde_kuva;
    $kohde_id = $parametriolio->id_kohde_kuva;
    $kuva_id = $parametriolio->id_kuva;
    $tietokantaolio = $parametriolio->get_tietokantaolio();
    $html = "";
    /* Palautettava koodi */
    $palauteolio = new Palaute();
    $ilmoitus = "";
    /******************** Painikkeet *****************************/
    $peru_nappi = "";
    $poistovahvistus_nappi = "";
    /* Uuden kuvan lisäyspainike tehtävään*/
    $onsubmit_funktionimi = "nayta_kuvan_poistovahvistus";
    $onsubmit_parametrit = array($kohde, $kuva_id);
    /* Kuvan id*/
    /* Muotoillaan muuttujan name-arvo kohteen mukaan: */
    $id_name = "";
    if ($kohde == Kuvat::$kohde_kokonaisuus_tiivistelma || $kohde == Kuvat::$kohde_kokonaisuus_selitys) {
        $id_name = "id_kokon";
    } else {
        if ($kohde == Kuvat::$kohde_tehtava) {
            $id_name = "id_teht";
        } else {
            if ($kohde == Kuvat::$kohde_ratkaisu) {
                $id_name = "id_ratk";
            } else {
                $id_name = "id_tuntematon";
            }
        }
    }
    $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "&id_kuva=" . $kuva_id . "&id_kokon=" . $id_kokon . "&id_teht=" . $id_teht . "&" . $id_name . "=" . $kohde_id . "&kohde_kuva=" . $kohde);
    $input_maaritteet = array('name' => Toimintonimet::$kuvatoiminto, 'value' => Painikkeet::$PERU_POISTO_KUVA_VALUE);
    try {
        $peru_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
    } catch (Exception $poikkeus) {
        $ilmoitus = "Virhe poiston perumisnapin luomisessa: " . $poikkeus->getMessage();
    }
    /* Poiston vahvistusnappi menee melkein samoilla muuttujilla: */
    $input_maaritteet = array('name' => Toimintonimet::$kuvatoiminto, 'value' => Painikkeet::$POISTOVAHVISTUS_KUVA_VALUE);
    try {
        $poistovahvistus_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
    } catch (Exception $poikkeus) {
        $ilmoitus .= "Virhe poistonapin luomisessa: " . $poikkeus->getMessage();
    }
    /******************** Painikkeet *****************************/
    /* Haetaan poistettava kuva: */
    $taulunimi = "kuvat";
    $sarakenimi = "id";
    $hakuarvo = $kuva_id;
    $hakutulosolio = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
    if ($hakutulosolio == Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
        $ilmoitus .= "<br/>" . Tekstit::$ilm_kuva_poisto_kuvaa_ei_loytynyt;
        $html .= Tekstit::$ilm_kuva_poisto_kuvaa_ei_loytynyt;
        $html .= "<br/>" . $peru_nappi;
    } else {
        $kuva = new Kuva($hakutulosolio, $tietokantaolio);
        $html .= "<h2>" . Tekstit::$ilm_kuva_poistovahvistus . "</h2>";
        $html .= $kuva->nayta_pelkka_kuva(Kuvat::$latauskansion_osoite);
        $html .= $poistovahvistus_nappi . $peru_nappi;
    }
    $palauteolio->set_sisalto($html);
    $palauteolio->set_ilmoitus($ilmoitus);
    return $palauteolio;
}
/**
 * Toteuttaa :
 * @param Parametrit $parametriolio
 * @return Palaute $palauteolio
 */
function toteuta_($parametriolio)
{
    $palauteolio = new Palaute();
    $palauteolio->set_valikkonaytto(false);
    $palauteolio->set_sisalto($sisalto);
    $palauteolio->set_ilmoitus($ilmoitus);
    return $palauteolio;
}
예제 #5
0
 /**
  * Toteuttaa bongauskuva-albumeiden näyttämisen.
  * @param Parametrit $parametriolio
  * @return Palaute $palauteolio
  */
 static function toteuta_bongausalbumeiden_naytto($parametriolio)
 {
     $palauteolio = new Palaute();
     $sisalto = bongaus_hae_albumit($parametriolio->omaid, $parametriolio->tietokantaolio);
     $palauteolio->set_sisalto($sisalto);
     $palauteolio->set_ilmoitus("");
     return $palauteolio;
 }
예제 #6
0
 /**
  * Hakee kaikki yhteen kokonaisuuteen liittyvät tehtävät ja palauttaa ne
  * kauniisti html-koodina palauteoliossa.
  *
  * @param Palaute $palauteolio
  */
 function toteuta_nayta_tehtavat(&$palauteolio)
 {
     $parametriolio = $this->get_parametriolio();
     $id_kokon = $parametriolio->id_kokon;
     $omaid = $parametriolio->get_omaid();
     $kayttajan_valtuudet = $parametriolio->get_valtuudet();
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $tehtava_html = "";
     $sisalto = "";
     $palaa_nappi = "";
     /* Paluu kokonaisuuksiin. */
     $uusi_teht_nappi = "";
     // Asetetaan kieli, taso ja oppiaine tehtävän perusteella, kun urlista
     // tullaan:
     if ($palauteolio->naytto_urlin_mukaan()) {
         $parametriolio->set_naytto_urlin_mukaan(true);
         // Isäntäkokonaisuus haetaan tietokannasta, jos teht_id kunnollinen:
         $teht = $this->get_olio();
         if ($teht instanceof Tehtava && $teht->olio_loytyi_tietokannasta) {
             $kokon_id = $teht->getKokon_id();
             $kokon = new Kokonaisuusolio($kokon_id, $tietokantaolio);
             // Jos löytyi, asetetaan kieli, taso ja oppiaine, jottei tarvita
             // urlissa:
             if ($kokon instanceof Kokonaisuusolio && $kokon->olio_loytyi_tietokannasta) {
                 // Asetetaan nämä, voipi olla tarvetta:
                 $parametriolio->id_kokon = $kokon_id;
                 aseta_kieli_taso_ja_oppiaine($kokon->getKieli(), $kokon->getOppiaine(), $kokon->getTaso(), $parametriolio);
                 // Tekstien käännös.
                 Kielet::kaanna($parametriolio->get_kieli_id());
             }
         }
     }
     /* Uusia tehtäviä voivat lisätä (valtuuksiltaan) vähintään muokkaajat.
      * Kannattaa kyllä olla varovainen, jos muuttaa valtuuksia..
      */
     if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) {
         try {
             $onsubmit_funktionimi = "nayta_tehtavalomake";
             $onsubmit_parametrit = array($id_kokon);
             /* */
             $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon=" . $id_kokon . "&" . "uusi=1");
             $input_maaritteet = array('name' => Toimintonimet::$tehtavatoiminto, 'value' => Painikkeet::$tehtava_uusi_value);
             $uusi_teht_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
         } catch (Exception $poikkeus) {
             $sisalto .= "Uusi teht&auml;v&auml; -painike: " . $poikkeus->getMessage();
         }
     }
     try {
         $onsubmit_funktionimi = "nayta_kokonaisuudet";
         $onsubmit_parametrit = "";
         /* Ei parametreja */
         $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon={$id_kokon}");
         $input_maaritteet = array('name' => Toimintonimet::$kokonaisuustoiminto, 'value' => Painikkeet::$palaa_kokonaisuuksiin);
         $palaa_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
     } catch (Exception $poikkeus) {
         $sisalto .= "Palaa-painike: " . $poikkeus->getMessage();
     }
     $sisalto .= $uusi_teht_nappi;
     // Haetaan tehtävät:
     $tehtavat = $this->hae_tehtavat();
     if (empty($tehtavat)) {
         $palauteolio->set_ilmoitus(Tekstit::$tehtava_ilm_ei_loytynyt);
         $palauteolio->set_linkkihtml($palaa_nappi);
     } else {
         $laskuri = 0;
         // Tehtävän nro
         foreach ($tehtavat as $tehtava) {
             if ($tehtava instanceof Tehtava) {
                 $laskuri++;
                 $tehtava->setNro($laskuri);
                 $painikkeet = $this->luo_tehtavapainikkeet($tehtava->getId());
                 // Jos on kirjautunut käyttäjä, näytetään väripallolla, onko
                 // yksityinen vai julkinen:
                 if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) {
                     if ($tehtava->getNakyvyys() + 0 === Nakyvyys::$YKSITYINEN) {
                         $tehtava->setNakyvyysmerkkiPrivate();
                     } else {
                         $tehtava->setNakyvyysmerkkiPublic();
                     }
                 }
                 $sisalto .= $this->tehtavanakymat->tulosta_tehtava($tehtava, $omaid, $painikkeet);
             }
         }
         // Haetaan tehtävälinkit, jos tehtäviä löytynyt. Lisätään
         // myös paluupainike linkkien eteen.
         $linkkihtml = $this->hae_tehtavalinkit($parametriolio);
         if ($linkkihtml === Tekstit::$tehtava_ilm_ei_loytynyt) {
             $palauteolio->set_linkkihtml($palaa_nappi);
         } else {
             $palauteolio->set_linkkihtml($palaa_nappi . $linkkihtml);
         }
     }
     /* Tämä ottaa palauteolion samalla käyttöön */
     $palauteolio->set_sisalto($sisalto);
     // Haetaan kokonaisuuden tiedot:
     $kokon = new Kokonaisuusolio($id_kokon, $tietokantaolio);
     if ($kokon->olio_loytyi_tietokannasta) {
         $kokon_otsikko = $kokon->getOtsikko();
     } else {
         $kokon_otsikko = "?";
     }
     /* Lisätään otsikkotieto: */
     $palauteolio->set_otsikkotarkennus($kokon_otsikko);
     $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_TEHTAVA);
     // Kieli- yms valikot pois näkyvistä:
     $palauteolio->set_valikkonaytto(false);
     // Fixed linkit -näkymä:
     $palauteolio->set_nayttotapa(Html_koodi::$sisaltoelem_fixed);
     return $palauteolio;
 }
 /**
  * Toteuttaa lomakkeen näytön sekä muokkausta että uuden luomista varten.
  * @return Palaute $palauteolio
  */
 function toteuta_nayta_kokonaisuuslomake(&$palauteolio)
 {
     $parametriolio = $this->get_parametriolio();
     $palauteolio = new Palaute();
     $lomakkeen_naytto_ok = false;
     // Näytetäänkö lomaketta vai ei.
     $ilmoitus = "";
     $sisalto = "";
     // Tulossa koosteesta? Tarkistetaan:
     $elem_id = $parametriolio->elementti_id;
     $elem = Elementti::$MUUTTUJAA_EI_MAARITELTY;
     $elem_kandi = new Elementti($elem_id, $this->get_tietokantaolio());
     if ($elem_kandi->olio_loytyi_tietokannasta) {
         $elem = $elem_kandi;
     }
     $elemryhma_id = $parametriolio->elemryhma_id;
     $elemryhma = Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY;
     $elemryhma_kandi = new Elementtiryhma($elemryhma_id, $this->get_tietokantaolio());
     if ($elemryhma_kandi->olio_loytyi_tietokannasta) {
         $elemryhma = $elemryhma_kandi;
     }
     // Tätä tarvitaan, ellei muokkauslomakkeeseen syystä tai toisesta mennä:
     $perunappi = Html::luo_forminput_painike(array(), array(Attr::name(Toimintonimet::$kokonaisuustoiminto), Attr::value(Painikkeet::$PERU_KOKON_MUUTOSTEN_TALLENNUS_VALUE)));
     /* Näytetään lomake, jonka avulla voi luoda uuden kokonaisuuden: */
     $omaid = $parametriolio->get_omaid();
     if ($parametriolio->get_uusi()) {
         $ilmoitus = "";
         $palauteolio->set_valikkonaytto(false);
         $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK);
         $lomakkeen_naytto_ok = true;
     } else {
         // Vanhan muokkaus: tällöin lukitus on tärkeä!
         $id_muokattava = $parametriolio->id_kokon;
         $muokattava = new Kokonaisuusolio($id_muokattava, $this->get_tietokantaolio());
         if ($muokattava->olio_loytyi_tietokannasta) {
             $lukitusarvo = $muokattava->getLukitus();
             //===================== LUKITUS ================================
             // Jos lukitus päällä, ei päästetä muokkaamaan!
             if (is_numeric($lukitusarvo) && $lukitusarvo != Kokonaisuusolio::$LUKITUS_OFF && $lukitusarvo != $omaid) {
                 $ilmoitus = Tekstit::$virheilm_kokonaisuus_lukittu_muokkaus_eiok;
                 $sisalto = Tekstit::$virheilm_kokonaisuus_lukittu_muokkaus_eiok;
                 $sisalto .= $perunappi;
             } else {
                 // Kun ei lukittu vieraalle:
                 // Lukitaan kokonaisuus, ettei kukaan muu pääse samaan aikaan
                 // muokkaamaan samaa kokonaisuutta:
                 $lukon_tila = Kokonaisuusolio::$LUKITUS_ON;
                 $lukitus = $muokattava->aseta_kokonaisuuden_lukitus($omaid, $lukon_tila);
                 /* Ilmoitus, ellei lukitus jostakin syystä onnistunut: */
                 if ($lukitus != Kokonaisuusolio::$OPERAATIO_ONNISTUI) {
                     $ilmoitus = " " . Tekstit::$virheilm_kokonaisuuden_lukitus_eiok;
                     $sisalto = " " . Tekstit::$virheilm_kokonaisuuden_lukitus_eiok . "<br/>" . $muokattava->tulosta_virheilmoitukset() . "<br/> omaid=" . $omaid . ", nyk lukon tila=" . $lukitusarvo . " ja haluttu_lukon_tila=" . $lukon_tila;
                     $sisalto .= "<br/>" . $perunappi;
                 } else {
                     $lomakkeen_naytto_ok = true;
                 }
             }
             $sisalto = $sisalto . "<br/> " . $muokattava->tulosta_kaikki_ilmoitukset() . "<br/>";
         } else {
             // Oliota ei löytynyt tietokannasta:
             $sisalto = Tekstit::$ilm_kokon_ei_loytynyt . $perunappi;
         }
     }
     //======================================================================
     if ($lomakkeen_naytto_ok) {
         $sisalto = $this->kokonaisuusnakymat->nayta_kokonaisuuslomake($parametriolio->id_kokon, $omaid, $parametriolio->uusi, $parametriolio->ilmoitus_kokon, $parametriolio->get_tietokantaolio(), $parametriolio->oppiaine_kokon, $parametriolio->otsikko_kokon, $parametriolio->tiivis_kokon, $parametriolio->selitys_kokon, $parametriolio->taso_kokon, $parametriolio->jarjestysnro_kokon, $parametriolio->laajennetun_id_kokon, $parametriolio->ylakokonaisuuden_id_kokon, $parametriolio->kieli_id, $parametriolio->nakyvyys_kokon, Toimintonimet::$kokonaisuustoiminto, $this, $parametriolio->kaavakieli, $elem, $elemryhma);
     }
     $palauteolio->set_sisalto($sisalto);
     $palauteolio->set_valikkonaytto(false);
     $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK);
     $palauteolio->set_ilmoitus($ilmoitus);
     $palauteolio->set_nayttotapa(Html_koodi::$sisaltoelem_levea);
     return $palauteolio;
 }
예제 #8
0
 /**
  * Toteuttaa koosteen elementtiryhmän näyttämisen sekä normaalisti että
  * tulostusnäkymässä. Näkymätyylin päättää parametrina annettavan 
  * palauteolion naytettava_oliotyyppi-muuttujan arvo.
  * 
  * Näytössä noudatetaan koosteen näkyvyyttä, eli jos oikeus on nähdä
  * kooste, voi samalla nähdä elementtiryhmänkin (tai ainakin ne elementit,
  * joihin katseluoikeus vähintään).
  * 
  * HUOM: Elementin näkyvyysasetuksen vaikutusta ei ole otettu täällä huomioon.
  * Se pitää korjata esim. niin, että yksityinen elementti ei näy muille
  * kuin tekijälle. Lisävaltuuksiahan ei koosteelle tai elementille voi
  * antaa (mikä lienee tässä vaiheessa selkeämpää erityisesti elementin
  * kohdalla). Koosteissa lienee järkevämpi kloonata kuin antaa mahdollisuus
  * monen muokata. Voi miettiä toki.
  * 
  * @param Palaute $palauteolio
  */
 public function toteuta_nayta_elementtiryhma(&$palauteolio)
 {
     // Tarkistetaan ja asetetaan naytettävä oliotyyppi:
     if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTE_ELEMRYHMA_TULOSTUS) {
         $tulostusnaytto = true;
     } else {
         $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTE_ELEMRYHMA);
         $tulostusnaytto = false;
     }
     $html = "";
     $nakymapainikkeet = "";
     // tulostusnäkymä ja ratkaisujen näyttö
     $muokkauspainike = "";
     $paluu_koosteeseen_painike = "";
     $muokkauspainikedivi = "";
     $elemryhmapainikkeet = "";
     $linkit = "";
     $painikkeet = "";
     $koostekoodi = "";
     $omaid = $this->get_parametriolio()->get_omaid() + 0;
     $param = $this->get_parametriolio();
     $tietokantaolio = $this->get_tietokantaolio();
     // Haetaan ensin elementtiryhmä ja sen avulla kooste:
     $elemryhma = new Elementtiryhma($param->elemryhma_id, $tietokantaolio);
     $kooste_id = $elemryhma->get_arvo(Elementtiryhma::$sarakenimi_kooste_id);
     $kooste = new Kooste($kooste_id, $tietokantaolio);
     if ($kooste->olio_loytyi_tietokannasta && $elemryhma->olio_loytyi_tietokannasta) {
         $viittausoliot_ok = array();
         $elementit_ok = array();
         // Tarkistetaan, onko käyttäjällä edes oikeuksia nähdä koostetta:
         /*======================== käyttäjän oikeudet ========*/
         $kohdeoikeudet_kooste = $kooste->hae_kayttajan_oikeudet($omaid);
         /*====================================================*/
         // Luodaan muokkauspainikkeet, jos käyttäjällä on muokkausoikeudet:
         if ($kohdeoikeudet_kooste >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) {
             $muokkauspainike = $this->koostenakymat->luo_elemryhman_muokkauspainike($elemryhma);
         }
         // Jos riittävät oikeudet, näytetään ja muuten ei.
         if ($kohdeoikeudet_kooste >= Lisavaltuudet::$SAA_NAHDA_EI_MUOKATA_EI_POISTAA) {
             $nakymapainikkeet = " " . $this->koostenakymat->luo_tulostusnayttopainike($kooste, $elemryhma) . " " . $this->koostenakymat->luo_koosteen_ratkaisunayttopainikkeet("elemtehtavan_ratkaisut");
             $paluu_koosteeseen_painike = " " . $this->koostenakymat->luo_paluu_koosteeseen_nayttopainike($kooste);
             // Luodaan sitten mahdolliset elementtiryhmäpainikkeet
             // toiminnon mukaisin oikeustarkistuksin (koostenäkymissä..):
             // Harkitaan, tarvitaanko!
             /*$elemryhmat = $kooste->hae_elementtiryhmat();
               $elemryhma_current = $elemryhma;
               $elemryhmapainikkeet = $this->koostenakymat->
                   luo_elemryhmapainiketaulukko($elemryhmat,
                                               $elemryhma_current,
                                               $kooste, 
                                               $kohdeoikeudet_kooste);*/
             //=============================================================
             // Kerätään ne elementit ja oliot, jotka näytetään käyttäjälle.
             // Sisältö saadaan metodista "luo_koosteen_elementtiosa".
             $elementit = $elemryhma->hae_elementit();
             $divi_mukaan = true;
             $all_elements = false;
             $html = $this->luo_koosteen_elementtiosa($kooste, $omaid, $elementit, $divi_mukaan, $all_elements, $viittausoliot_ok, $elementit_ok);
             $muokkauspainikedivi = Html::luo_div($muokkauspainike . $paluu_koosteeseen_painike, array(Attr::classs("keskitys"), Attr::id("koostepainikerivi")));
         } else {
             // Ellei oikeuksia koosteen (ei myöskään eryhmän) katselemiseen.
             $html = Html::luo_otsikko(Tekstit::$kooste_ilm_nayttoon_ei_oikeuksia, array(), 4);
         }
         $koostekoodi = $this->koostenakymat->nayta_elementtiryhma($muokkauspainikedivi . $elemryhmapainikkeet . $html, $elemryhma);
         $kooste_id = $kooste->get_id();
         // Nykyinen kooste.
         // Linkit:
         $wrapped = true;
         $linkit = $this->luo_koostelinkit($kooste, $elementit_ok, $viittausoliot_ok, $wrapped);
     } else {
         $palauteolio->set_ilmoitus(Tekstit::$elementtiryhma_ei_loytynyt . " " . Tekstit::$or . " " . Tekstit::$kooste_koostetta_ei_loytynyt);
     }
     $painikkeet = $this->get_koostenakymat()->nayta_painike_paluu_kokonaisuuksiin() . $this->get_koostenakymat()->nayta_painike_paluu_koosteisiin($kooste_id) . $nakymapainikkeet;
     $palauteolio->set_sisalto($koostekoodi);
     $palauteolio->set_linkkihtml($painikkeet . "<br/><br/>" . $linkit);
     /*$palauteolio->set_nayttotapa(Html_koodi::$sisaltoelem_fixed);*/
     $palauteolio->set_nayttotapa(Html_koodi::$sidenav_fixed);
     $palauteolio->set_valikkonaytto(false);
 }
예제 #9
0
 if ($tehtavatoiminto == Painikkeet::$tehtava_poista_kuva_value) {
     $palauteolio = new Palaute();
     $palauteolio->set_ilmoitus(Tekstit::$ilm_toimintoa_ei_toteutettu);
 } else {
     if ($tehtavatoiminto == Painikkeet::$tehtava_peru_uuden_tallennus_value) {
         $tehtavakontrolleri->toteuta_uuden_tehtavan_peruutus($palauteolio);
     } else {
         if ($tehtavatoiminto == Painikkeet::$tehtava_peruminen_value) {
             $tehtavakontrolleri->toteuta_peru_tehtavan_muokkaus($palauteolio);
         } else {
             if ($tehtavatoiminto == Painikkeet::$tehtava_peru_poisto_value) {
                 $tehtavakontrolleri->toteuta_peru_tehtavan_poisto($palauteolio);
             } else {
                 if ($tehtavatoiminto == Painikkeet::$tehtava_muokkaa_kuva_value) {
                     $palauteolio = new Palaute();
                     $palauteolio->set_ilmoitus(Tekstit::$ilm_toimintoa_ei_toteutettu);
                 } else {
                     if ($tehtavatoiminto == Painikkeet::$tehtava_lisaa_kuva_value) {
                         $palauteolio = toteuta_nayta_kuvalomake($parametriolio);
                     } else {
                         if ($tehtavatoiminto == Painikkeet::$palaa_tehtaviin_value) {
                             $tehtavakontrolleri->toteuta_nayta_tehtavat($palauteolio);
                         } else {
                             if ($tehtavatoiminto == Painikkeet::$ratkaisu_nayta_ratkaisut_value) {
                                 $ratkaisukontrolleri->toteuta_nayta($palauteolio);
                             } else {
                                 if ($tehtavatoiminto == Painikkeet::$ratkaisu_uusi_value) {
                                     $ratkaisukontrolleri->toteuta_ratkaisulomakkeen_naytto($palauteolio);
                                 } else {
                                     if ($tehtavatoiminto == Painikkeet::$ratkaisu_muokkaa_value) {
                                         $ratkaisukontrolleri->toteuta_ratkaisulomakkeen_naytto($palauteolio);
예제 #10
0
 /**
  * Hakee kaikki yhteen tehtävään liittyvät ratkaisut ja palauttaa ne
  * kauniisti html-koodina palauteoliossa.
  *
  * @param Palaute $palauteolio
  */
 function toteuta_nayta(&$palauteolio)
 {
     $parametriolio = $this->get_parametriolio();
     $id_kokon = $parametriolio->id_kokon;
     $id_teht = $parametriolio->id_teht;
     $omaid = $parametriolio->get_omaid();
     $kayttajan_valtuudet = $parametriolio->get_valtuudet();
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $kuvakansion_os = Kuvat::$latauskansion_osoite;
     $paluunappi = "";
     /* Palauttaa käyttäjän tehtävänäkymään. */
     $ratkaisu_html = "";
     $uusi_ratkaisu_nappi = "";
     /*  */
     $tehtavanakymat = new Tehtavanakymat();
     /***************************************************************************/
     // Haetaan ensin tehtävä, jotta sen voi nähdä samalla: ********************/
     $tehtava_html = "";
     $teht = new Tehtava($id_teht, $tietokantaolio);
     if (!$teht->olio_loytyi_tietokannasta) {
         $tehtava_html = Tekstit::$tehtava_ilm_ei_loytynyt;
     } else {
         $tehtava_html .= $tehtavanakymat->tulosta_tehtava_ilman_painikkeita($omaid, $teht);
     }
     /**************************************************************************/
     // Asetetaan kieli, taso ja oppiaine kokonaisuuden perusteella, kun urlista
     // tullaan. Ratkaisun avulla löydetään tehtävä ja sen avulla kokonaisuus:
     if ($palauteolio->naytto_urlin_mukaan()) {
         $parametriolio->set_naytto_urlin_mukaan(true);
         // Isäntäkokonaisuus haetaan tietokannasta, jos ratk_id kunnollinen:
         $ratk = $this->get_olio();
         if ($ratk instanceof Ratkaisu && $ratk->olio_loytyi_tietokannasta) {
             $teht_id = $ratk->getTeht_id();
             $teht = new Tehtava($teht_id, $tietokantaolio);
             if ($teht->olio_loytyi_tietokannasta) {
                 $kokon_id = $teht->getKokon_id();
             }
             // Lopulta päästään käsiksi kokonaisuuteen:
             $kokon = new Kokonaisuusolio($kokon_id, $tietokantaolio);
             // Jos löytyi, asetetaan kieli, taso ja oppiaine, jottei tarvita
             // urlissa:
             if ($kokon instanceof Kokonaisuusolio && $kokon->olio_loytyi_tietokannasta) {
                 // Asetetaan nämä, voipi olla tarvetta:
                 $parametriolio->id_kokon = $kokon_id;
                 $parametriolio->id_teht = $teht_id;
                 aseta_kieli_taso_ja_oppiaine($kokon->getKieli(), $kokon->getOppiaine(), $kokon->getTaso(), $parametriolio);
                 // Tekstien käännös.
                 Kielet::kaanna($parametriolio->get_kieli_id());
             }
         }
     }
     //=====================================================================
     try {
         $paluunappi = $this->tehtavanakymat->button_gobackto_all_exercises($id_teht);
     } catch (Exception $poikkeus) {
         $tehtava_html .= "Palaa-painike: " . $poikkeus->getMessage();
     }
     // Uusia ratkaisuja saavat tehdä ne, jotka lisätä tehtäviäkin:
     if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) {
         // Uusi_ratkaisu_painike:
         $onsubmit_funktionimi = "nayta_ratkaisulomake";
         $onsubmit_parametrit = array($id_teht);
         /* Tehtävän id */
         $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_teht=" . $id_teht . "&id_kokon=" . $id_kokon . "&uusi=1");
         $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);
     }
     $ratkaisu_html .= $paluunappi . $tehtava_html;
     $ratkaisu_html .= "<h3>" . Tekstit::$ratkaisu_ratkaisut_valiotsikko . "</h3>";
     $ratkaisu_html .= $uusi_ratkaisu_nappi;
     $ratkaisut = $this->hae_ratkaisut($id_teht);
     if (empty($ratkaisut)) {
         $palauteolio->set_ilmoitus(Tekstit::$ratkaisu_ilm_ei_loytynyt);
     } else {
         foreach ($ratkaisut as $ratkaisu) {
             if ($ratkaisu instanceof Ratkaisu) {
                 // Jos on kirjautunut käyttäjä, näytetään väripallolla, onko
                 // yksityinen vai julkinen:
                 if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) {
                     if ($ratkaisu->getNakyvyys() + 0 === Nakyvyys::$YKSITYINEN) {
                         $ratkaisu->setNakyvyysmerkkiPrivate();
                     } else {
                         $ratkaisu->setNakyvyysmerkkiPublic();
                     }
                 }
                 $painikkeet = $this->luo_ratkaisupainikkeet($ratkaisu->getId());
                 $ratkaisu_html .= $this->ratkaisunakymat->tulosta_ratkaisu($id_kokon, $ratkaisu, $omaid, $painikkeet);
             } else {
                 $this->lisaa_virheilmoitus(Tekstit::$ratkaisu_ilm_ei_loytynyt);
             }
         }
     }
     /* Tämä ottaa palauteolion samalla käyttöön */
     $palauteolio->set_sisalto($ratkaisu_html);
     $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_RATKAISU);
     // Kieli- yms valikot pois näkyvistä:
     $palauteolio->set_valikkonaytto(false);
     return $palauteolio;
 }
/**
 *
 * @param Parametrit $parametriolio
 * @return Palaute $palauteolio
 */
function toteuta_salasanan_vaihto($parametriolio)
{
    $palauteolio = new Palaute();
    $uussalasana = $parametriolio->uussalasana;
    $salavahvistus = $parametriolio->salavahvistus;
    $tietokantaolio = $parametriolio->tietokantaolio;
    $henkilo_id = $parametriolio->henkilo_id;
    $poistu_valtuuksista = Painikkeet::$poistu_valtuuksista;
    $muuta_valtuuksia_value = Painikkeet::$muuta_valtuuksia;
    $muuta_salasana_value = Painikkeet::$muuta_sanasana_value;
    $kelpoisuus = tarkista_uusi_salasana($uussalasana, $salavahvistus);
    if ($kelpoisuus == Yleisarvoja::$tarkistetut_tiedot_ok) {
        $uussalasana = md5($uussalasana);
        $tallennus = tallenna_salasanamuutos($parametriolio->henkilo_id, $uussalasana, $tietokantaolio);
        if ($tallennus == Tietokantaolio::$HAKU_ONNISTUI) {
            //paivita_sessiohenkilotiedot($omaid, $tietokantaolio);
            $ilmoitus = Tekstit::$kuningastoiminnot_salasana_vaihdettu;
            $sisaltoteksti = nayta_valtuuslomake($tietokantaolio, $muuta_valtuuksia_value, $muuta_salasana_value, $poistu_valtuuksista);
        } else {
            // Jos tallennus epäonnistui:
            $ilmoitus = "Tietojen l&auml;hetys ei onnistunut tai " . "kirjoitit vanhan salasanan!\n                    Yrit&auml; uudestaan!";
            $sisaltoteksti = nayta_salasanalomake($henkilo_id, $ilmoitus);
        }
    } else {
        //Jos tiedoissa jokin virhe:
        $ilmoitus = $kelpoisuus;
        //Virheilmoitus
        $sisaltoteksti = nayta_salasanalomake($henkilo_id, $ilmoitus);
    }
    $palauteolio->set_ilmoitus($ilmoitus);
    $palauteolio->set_sisalto($sisaltoteksti);
    return $palauteolio;
}