/** * Palauttaa taulukon, jonka avulla henkilöitä voidaan suodattaa tai * suodatuksia poistaa. * * @param Henkilo $omistaja * @param type $kohdehenkilo * @param type $paluupainike * @return type */ public function nayta_suodatinlomake($omistaja, $kohdehenkilot, $paluupainike) { $maar_array = array(); // Kun ei määritteitä tarvita. //====================================================================== // Sitten taulukko kasaan, Rivi 1: $sisalto = Html::luo_tablerivi(Html::luo_tablesolu_otsikko(Kayttajatekstit::$suodattimet_lomaketeksti_otsikko, array(Maarite::colspan(2))), $maar_array); // Rivi 2: $sisalto .= Html::luo_tablerivi(Html::luo_tablesolu_otsikko(Kayttajatekstit::$suodattimet_lomaketeksti_omat_suodattimet, array()) . Html::luo_tablesolu_otsikko(Kayttajatekstit::$suodattimet_lomaketeksti_kohdehenkilo, array()), $maar_array); // Suodatinrivit (käyttäjä itse ei ole mukana): foreach ($kohdehenkilot as $henkilo) { if ($henkilo instanceof Henkilo) { // Katsotaan, onko kohde jo suodatettu: if ($henkilo->getSuodatus_kohde() == Henkilo::$suodatus_ON) { $valittu = Maarite::checked(); } else { $valittu = ""; } // Katsotaan, suodattaako kohde jo käyttäjän: if ($henkilo->getSuodatus_lahde() == Henkilo::$suodatus_ON) { $vari = Html::luo_img(array(Maarite::src("kuvat/ympyra_pun.png"), Maarite::alt("Red circle"), Maarite::title(Kayttajatekstit::$suodattimet_lomaketeksti_punapallo_title))); } else { $vari = Html::luo_img(array(Maarite::src("kuvat/ympyra_vihr.png"), Maarite::alt("Green circle"), Maarite::title(Kayttajatekstit::$suodattimet_lomaketeksti_viherpallo_title))); } $sisalto .= Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_checkbox(array($valittu, Maarite::id("suodatus" . $henkilo->get_id()), Maarite::onclick("suodata", array($omistaja->get_id(), $henkilo->get_id(), Maarite::js_this_juttu("this.piip"))))), array(Maarite::style("text-align:center"))) . Html::luo_tablesolu(Html::luo_span($henkilo->get_arvo(Henkilo::$sarakenimi_etunimi) . " " . $vari, array(Maarite::style("white-space:nowrap"))), array(Maarite::style("text-align:left"))), $maar_array); } } // Lisätään vielä paluupainike: $sisalto .= Html::luo_tablerivi(Html::luo_tablesolu_otsikko($paluupainike, array(Maarite::colspan(2))), $maar_array); $taulukkohtml = Html::luo_table($sisalto, array(Maarite::id("suodatuslomake"))); return $taulukkohtml; }
/** * Palauttaa havaintolomakkeen html-koodina. * * @param <type> $tallennuskommentti kertoo mikä laji tallennettiin viimeksi. * @param bool $onKopio auttaa siihen, että luotuun havaintoon osataan palata * sekä kopioinnin että tavallisen uuden luonnin yhteydessä. * @param Parametrit $parametriolio * @return <type> */ function nayta_havaintolomake_kaikki_lajit(&$parametriolio) { $paiva_hav = $parametriolio->paiva_hav; $kk_hav = $parametriolio->kk_hav; $vuosi_hav = $parametriolio->vuosi_hav; $paikka_hav = $parametriolio->paikka_hav; $kommentti_hav = $parametriolio->kommentti_hav; $tietokantaolio = $parametriolio->get_tietokantaolio(); // $tallennuskommentti kertoo mikä laji tallennettiin viimeksi. $tallennuskommentti = $parametriolio->get_tallennuspalaute(); $submitnappi = ""; $poistunappi = ""; $type = "submit"; $class = "rinnakkain"; $id = ""; $onclick = ""; $name = Bongaustoimintonimet::$havaintotoiminto; $value = Bongauspainikkeet::$PERUMINEN_HAVAINTO_VALUE; $poistunappi = Html::luo_painike_ilman_formia($type, $class, $id, $name, $value, $onclick); $suurin_havaintoid = hae_suurin_id($tietokantaolio, "bhavainnot"); // Seuraava liittyy siihen, että tallennetut näytetään taulukossa: // Luotavan (ekan) id on todennäköisesti yhtä suurempi kuin äsken laskettu: $uuden_id = $suurin_havaintoid + 1; // Otetaan arvo ylös: $parametriolio->set_naytettavan_id_hav($uuden_id); $url_jatke_seur = "?id_hav=" . $uuden_id . "#havainto" . $uuden_id; if ($suurin_havaintoid == -1) { $url_jatke_seur = ""; } $url_id = $url_jatke_seur; // // Submit-painike: $maar_array = array(Maarite::type("submit"), Maarite::classs("rinnakkain"), Maarite::name(Bongaustoimintonimet::$havaintotoiminto), Maarite::value(Bongauspainikkeet::$TALLENNA_MONTA_HAV_KERRALLA_VALUE), Maarite::title(Bongauspainikkeet::$TALLENNA_MONTA_HAV_KERRALLA_TITLE)); $submitnappi = Html::luo_input($maar_array); /*************************************************************************/ $maavalikkohtml = ""; try { $arvot = Maat::hae_maa_arvot(); $nimet = Maat::hae_maakuvaukset(); $name_arvo = Maat::$tietokannan_sarakenimi; $oletusvalinta_arvo = $parametriolio->maa_hav; $otsikko = Maat::$valikko_otsikko; $onchange_metodinimi = "kirjoita_maa"; $onchange_metodiparametrit_array = array(); $maavalikkohtml .= Html::luo_pudotusvalikko_onChange($arvot, $nimet, $name_arvo, $oletusvalinta_arvo, $otsikko, $onchange_metodinimi, $onchange_metodiparametrit_array); } catch (Exception $poikkeus) { $maavalikkohtml = "Virhe maavalikossa! (" . $poikkeus->getMessage() . ")"; } /*************************************************************************/ $naytettava_valinta = $parametriolio->varmuus_hav; $varmuusvalikko = Varmuus::muodosta_valikkohtml(false, $naytettava_valinta); // kommentin muotoilu: if (!empty($tallennuskommentti)) { $tallennuskommentti = $tallennuskommentti . "<br/>"; } //========================================================================= //Muotoillaan lajivalinnat: $lajioliot = Lajiluokka::hae_kaikki_lajiluokat($parametriolio->kieli_id, $parametriolio->ylaluokka_id_lj, $parametriolio->tietokantaolio); $laskuri = 1; $rivin_pituus = 10; // Näin monta rivissä. $rivi = ""; $taulukko = ""; foreach ($lajioliot as $lajiolio) { if ($lajiolio instanceof Lajiluokka) { // Haetaan lajinimi: $kuvaus = $lajiolio->hae_kuvaus($parametriolio->kieli_id); if ($kuvaus === Lajiluokka::$MUUTTUJAA_EI_MAARITELTY) { $kuvaus = $lajiolio->hae_kuvaus(Kielet::$SUOMI); } $lajinimi = $kuvaus->get_nimi(); // Tarkistetaan, onko tämä ollut valittu (esim. muokkaus): $checked = ""; foreach ($parametriolio->lajivalinnat_hav as $valitun_id) { if ($lajiolio->get_id() === $valitun_id) { $checked = "checked"; } } if (empty($checked)) { $solusis = Html::luo_labeled_checkbox($lajinimi, array(Maarite::name(Bongausasetuksia::$monen_lajin_valinta_id_taulukko_name . "[]"), Maarite::value($lajiolio->get_id()))); } else { $solusis = Html::luo_labeled_checkbox($lajinimi, array(Maarite::name(Bongausasetuksia::$monen_lajin_valinta_id_taulukko_name . "[]"), Maarite::value($lajiolio->get_id()), Maarite::checked($checked))); } $rivi .= Html::luo_tablesolu($solusis, array(Maarite::classs("valintasolu"))); // Jos rivi täynnä tai ollaan vikassa lajissa, // suljetaan se ja tyhjennetään rivimuuttuja: if ($laskuri % $rivin_pituus == 0 || $laskuri == sizeof($lajioliot)) { $taulukko .= Html::luo_tablerivi($rivi, array()); $rivi = ""; } $laskuri++; } } $taulukko = Html::luo_table($taulukko, array(Maarite::classs("tietotaulu_ulkorajaton"), Maarite::align("center"))); //======================================================================== // Luodaan form-elementin sisältö: $mj = Html::luo_div(Html::luo_span($tallennuskommentti, array(Maarite::id(Bongausasetuksia::$havaintolomake_tallennustiedote_id))) . Bongaustekstit::$havaintolomake_uusien_tallennus_ohje, array(Maarite::style("font-weight:bold"))) . Html::luo_button(Bongauspainikkeet::$ed_vko, array(Maarite::id("b1"), Maarite::type("button"), Maarite::onclick("nayta_ed_vko", ""))) . Html::luo_button(Bongauspainikkeet::$ed_paiva, array(Maarite::id("b2"), Maarite::type("button"), Maarite::onclick("nayta_ed", ""))) . " *" . Bongaustekstit::$paiva . ": " . Html::luo_input(array(Maarite::type("text"), Maarite::id("paiva"), Maarite::name("paiva_hav"), Maarite::value($paiva_hav), Maarite::size(2), Maarite::max_length(2), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . " *" . Bongaustekstit::$kk . ": " . Html::luo_input(array(Maarite::type("text"), Maarite::id("kk"), Maarite::name("kk_hav"), Maarite::value($kk_hav), Maarite::size(2), Maarite::max_length(2), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . " *" . Bongaustekstit::$vuosi . ": " . Html::luo_input(array(Maarite::type("text"), Maarite::id("vuosi"), Maarite::name("vuosi_hav"), Maarite::value($vuosi_hav), Maarite::size(4), Maarite::max_length(4), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . Html::luo_span("", array(Maarite::id("pvm_naytto"))) . Html::luo_button(Bongauspainikkeet::$seur_paiva, array(Maarite::id("b3"), Maarite::type("button"), Maarite::onclick("nayta_seur", ""))) . Html::luo_button(Bongauspainikkeet::$seur_vko, array(Maarite::id("b4"), Maarite::type("button"), Maarite::onclick("nayta_seur_vko", ""))) . Html::luo_br() . " *" . Bongaustekstit::$paikka . ": " . Html::luo_input(array(Maarite::type("text"), Maarite::name("paikka_hav"), Maarite::value($paikka_hav), Maarite::size(43))) . $maavalikkohtml . Varmuus::$valikko_otsikko . ": " . $varmuusvalikko . Bongaustekstit::$kommentti . ": " . Html::luo_input(array(Maarite::type("text"), Maarite::name("kommentti_hav"), Maarite::value($kommentti_hav), Maarite::size(43))) . $taulukko . $submitnappi . $poistunappi; // Sullotaan sisältö form-tagien sisään: $mj = Html::luo_form($mj, array(Maarite::align("center"), Maarite::method("post"), Maarite::action("index.php" . $url_id), Maarite::id(Bongausasetuksia::$havaintolomake_kaikki_lajit_id))); // Palautetaan lomake ja näytetään js-päivämäärä;. return $mj . Html::luo_script_js("nayta_pvm();"); //return $mj."<script type='text/javascript'>nayta_pvm();</script>"; }
/** * Palauttaa suodatinlomakkeen koodin. Vähän täällä on turhan * paljon logiikkaa mukana, mutta välillä sitä on kyllä vaikea * välttää, tai sitten pitäisi tehdä osittain myös html * valmiiksi muualla. */ public function toteuta_nayta_suodatinlomake() { // Henkilöt: =========================================================== $name_arvo = Kayttajakontrolleri::$suodatin_name_omistaja_id; $taulunimi = Henkilo::$taulunimi; $omistaja = ""; // Täällä on myös omistaja, mutta se poistetaan myöhemmin. $kaikki_henkilot = Henkilo::hae_kaikki_henkilot($this->get_tietokantaolio()); $kohdehenkilot = array(); // Erotetaan omistaja & admin ja kohdehenkilöt: foreach ($kaikki_henkilot as $henkilo) { if ($henkilo instanceof Henkilo) { if ($henkilo->get_id() == $this->get_parametriolio()->omaid) { $omistaja = $henkilo; } else { if ($henkilo->get_arvo(Henkilo::$sarakenimi_valtuudet) == Valtuudet::$HALLINTA) { // Ei tehdä mitään. Hallitsijaa ei voi suodattaa :) } else { array_push($kohdehenkilot, $henkilo); } } } } // Tarkistetaan suodattimet ja lisätään suodatustiedot henkilo-olioihin: foreach ($kohdehenkilot as $henkilo) { if (Suodatin::on_jo_olemassa($omistaja->get_id(), $henkilo->get_id(), $this->get_tietokantaolio())) { $henkilo->setSuodatus_kohde(Henkilo::$suodatus_ON); } // Ja toisin päin: if (Suodatin::on_jo_olemassa($henkilo->get_id(), $omistaja->get_id(), $this->get_tietokantaolio())) { $henkilo->setSuodatus_lahde(Henkilo::$suodatus_ON); } } $paluupainike = Html::luo_button(Kayttajatekstit::$suodattimet_lomaketeksti_painike_takaisin, array(Maarite::onclick("piilota_suodatuslomake", array()))); $this->get_palauteolio()->set_sisalto($this->kayttajanakymat->nayta_suodatinlomake($omistaja, $kohdehenkilot, $paluupainike)); return $this->get_palauteolio(); }
/** * Palauttaa linkit, joista päästään näkemään kaikki havainnot vuosittain. * @param Parametrit $parametriolio */ static function nayta_arkistolinkit() { $nyk_vuosi = anna_nyk_vuoden_nro(); $aloitusvuosi = Bongausasetuksia::$aloitusvuosi; $palaute = Html::luo_a_linkto("", Bongaustekstit::$nayta_uusimmat, array(Maarite::onclick("hae_havainnot", array(Bongausasetuksia::$nayta_oletushavainnot)))); // Muodostetaan linkit, joista lähetetään ajax-kutsu kysely vuoden havainnoista. for ($i = $nyk_vuosi; $i >= $aloitusvuosi; $i--) { $linkkiteksti = $i; $url = ""; // Toimii Ajaxin kautta // Vuosilinkit $palaute .= Html::luo_a_linkto($url, $linkkiteksti, array(Maarite::onclick("hae_havainnot", array($i)))); } return $palaute; }