/** * 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 painikkeen koodin. * @param type $action_os esim. index.php tai "oletus" / "default" * @param type $action_kyselymuuttujat kyselymuuttujien nimet * @param type $action_kyselyarvot */ public static function luo_jaa_lisaoikeuksia_painike($action_os, $action_kyselymuuttujat, $action_kyselyarvot) { $jaa_oikeuksia_nappi = Html::luo_form(Html::luo_input(array(Maarite::type("submit"), Maarite::name(Toimintonimet::$lv_toiminto), Maarite::value(Kayttajatekstit::$lisavaltuudet_painike_nayta_lv_lomake_value), Maarite::title(Kayttajatekstit::$lisavaltuudet_painike_nayta_lv_lomake_title))), array(Maarite::classs("rinnakkain"), Maarite::method("post"), Maarite::action(Maarite::muotoile_action_arvo($action_os, $action_kyselymuuttujat, $action_kyselyarvot)))); return $jaa_oikeuksia_nappi; }
/** * Hakee tietokannasta liikkujien suoritukset liikkujanid:n avulla * ja palauttaa ne tekstinä. * @param Tietokantaolio $tietokantaolio olio, * joka sisältää yhteystiedot tietokantaan. * @param boolean $on_omat kertoo, onko kysymys omista vai jonkun muun * suorituksista. Vain omiin tulee valintamahdollisuus. * @return <type> Palauttaa suoritukset merkkijonona, * jota muokattu html:n avulla. * * Muutos 16.1.2012: Lisätty parametri $omaid. Tarvitaan pikakommenttien näytössä. */ function hae_suoritukset($tietokantaolio, $liikkujanid, $on_omat, $omaid) { $valintaruudunotsikko = ""; //Riippuu parametrin $on_omat arvosta. $suoritushtml = ''; $mj = ''; // Apumuuttuja html-merkkaukselle. // Yksityiset näytetään vain itselle: if ($on_omat) { $hakulause = "SELECT * FROM suoritukset\n WHERE henkilo_id={$liikkujanid}\n ORDER BY jarjestysindeksi DESC"; } else { $hakulause = "SELECT * FROM suoritukset\n WHERE henkilo_id=" . $liikkujanid . " AND (nakyvyys=" . Nakyvyys::$JULKINEN . " OR nakyvyys=" . Nakyvyys::$PUOLIJULKINEN . ")" . " ORDER BY jarjestysindeksi DESC"; } $suoritustaulu = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause); $uusinappikomento = "Uusi oma suoritus"; if (empty($suoritustaulu) && $on_omat) { $suoritushtml = "Yhtään suoritusta ei löytynyt!\n Painikkeesta alla pääset\n lisäämään suorituksia.\n <form method='post' action='muistio.php'>\n <input id='uusi' type='submit' name='toiminta'\n value='{$uusinappikomento}'/></form>"; } else { if (empty($suoritustaulu)) { $suoritushtml = "Yhtään suoritusta ei löytynyt!"; } else { //Kirjoitetaan lajeista aputaulukot, jotta ne osataan kirjoittaa oikein. // lukujen käyttö arvoina voipi olla parempi, mutta menee tuo noinkin). $lajit = Laji::get_lajikuvaukset(); $lajiarvot = Laji::get_lajiarvot(); if ($on_omat) { $valintaruudunotsikko = "<th>Valinta</th>"; // Huom. action-arvo pitää olla noin, koska ajaxin kanssa // php-self ohjasi väärälle sivulle . $mj .= "<form method='post' action='muistio.php'>\n <input id='uusi' type='submit' name='" . Muistiotoimintonimet::$perustoiminto . "' value='{$uusinappikomento}'/>\n <input id='poistonappi' type='submit' name='" . Muistiotoimintonimet::$perustoiminto . "' value='" . Muistiopainikkeet::$poistonappikomento . "'/>\n <input id='muokkausnappi' type='submit' name='" . Muistiotoimintonimet::$perustoiminto . "' value='" . Muistiopainikkeet::$muokkausnappikomento . "'/>\n <input id='tilastonappi' type='submit' name='" . Muistiotoimintonimet::$perustoiminto . "' value='" . Muistiopainikkeet::$tilastokomento . "'/>"; } // Ilmoitetaan nykyisen ja edellisen kuun yhteenlasketut // juoksukilometrit, jos niitä on tullut. $pvm = getdate(); $kuu = $pvm['mon']; $vuosi = $pvm['year']; $juoksuilmoitus = ""; $km_tama_vuosi = nayta_vuoden_juoksukm($omaid, $liikkujanid, $vuosi, $tietokantaolio); if ($km_tama_vuosi == 0) { $juoksuilmoitus = "Hyvältä näyttää!"; } else { /*$km_tamakuu = nayta_juoksukm($liikkujanid, $kuu, $vuosi, $tietokantaolio);*/ $km_tamakuu = hae_kuukauden_km($omaid, $liikkujanid, Laji::$id_juoksu, $kuu, $vuosi, $tietokantaolio); // Piti vähän muuttaa, että vuoden vaihde menee oikein.. if ($kuu == 1) { $viimekuu = 12; $vuosi--; } else { $viimekuu = $kuu - 1; } /*$km_viimekuu = nayta_juoksukm($liikkujanid, $viimekuu, $vuosi, $tietokantaolio);*/ $km_viimekuu = hae_kuukauden_km($omaid, $liikkujanid, Laji::$id_juoksu, $viimekuu, $vuosi, $tietokantaolio); // Sitten muotoillaan ilmoitus eri tapauksissa: if ($km_tamakuu != 0) { if ($km_viimekuu != 0) { $juoksuilmoitus = "Juoksua tässä kuussa " . $km_tamakuu . " km ja viime kuussa\n " . $km_viimekuu . " km. Koko vuoden juoksusaldo on " . $km_tama_vuosi . " km."; } else { $juoksuilmoitus = "Juoksua tässä kuussa " . $km_tamakuu . " km. Koko vuoden saldo on " . $km_tama_vuosi . " km."; } } else { if ($km_viimekuu != 0) { $juoksuilmoitus = "Juoksua tuli viime kuussa\n " . $km_viimekuu . " km. Tänä vuonna on\n tullut " . $km_tama_vuosi . " km."; } else { $juoksuilmoitus = "Tänä vuonna on tullut juoksua\n yhteensä " . $km_tama_vuosi . " km."; } } } //Muotoillaan tiedot kauniisti; $mj .= "<table id = 'tulostaulu'>\n <tr><td id='kuukm' colspan='7'>{$juoksuilmoitus}\n </td></tr>\n <tr>\n <th>Pvm</th>\n <th>Laji</th>\n <th>Kesto</th>\n <th>Matka (km)</th>\n <th>Kuvaus</th>\n {$valintaruudunotsikko}\n <th>Kommentit</th>\n </tr>"; $valintaruutu = ""; //oletuksena tyhjä. $laskuri = 1; // Auttaa joka toisen rivin eri väriseksi. $laji_muokattu = ''; // Tämä saa arvokseen ääkkösellisen lajin. $matka_km = 0; foreach ($suoritustaulu as $nyk_olio) { if ($laskuri % 2 == 0) { $mj .= "<tr class ='parillinen_rivi'>"; } else { $mj .= "<tr>"; } // Asetetaan lajin merkintä kohdalleen (ääkköset mukaan): for ($i = 0; $i < sizeof($lajit); $i++) { if ($nyk_olio->laji == $lajiarvot[$i]) { $laji_muokattu = $lajit[$i]; } } //========================== PIkakommentit ========================= $kommenttien_lkm = 0; $on_uusia_pk = false; // Haetaan pikakommenttien lkm ja tarkastetaan samalla, onko uusia. $hakulause = "SELECT id, tallennushetki_sek, henkilo_id\n FROM pikakommentit\n WHERE kohde_tyyppi =" . Pikakommentti::$KOHDE_LIIKUNTASUORITUS . " AND kohde_id=" . $nyk_olio->id . " ORDER BY tallennushetki_sek DESC"; $osumat_kaikki = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause); //============= SUODATUS ALKU ====================================== $osumat = array(); $suodattimet = Suodatin::hae_suodattimet($omaid, $tietokantaolio); foreach ($osumat_kaikki as $osuma) { $henkilo_id = $osuma->henkilo_id; if (!Suodatin::henkilo_suodatetaan_kevyt($henkilo_id, $omaid, $suodattimet)) { array_push($osumat, $osuma); } } //============= SUODATUS LOPPU ===================================== // Jos viimeistä katseluaikaa ei ole asetettu, asetetaan 0: if (!isset($_SESSION['edellinen_uloskirjausaika_sek'])) { $_SESSION['edellinen_uloskirjausaika_sek'] = 0; } // Korostetaan solu, jos uusin on riittävän uusi eikä oma: if (!empty($osumat)) { $kommenttien_lkm = sizeof($osumat); if ($osumat[0]->tallennushetki_sek > $_SESSION['edellinen_uloskirjausaika_sek'] && $osumat[0]->henkilo_id != $omaid) { $on_uusia_pk = true; } } // Taulukon solun muotoilu: $onmouseover = " onclick='hae_pikakommentit(" . Pikakommentti::$KOHDE_LIIKUNTASUORITUS . "," . $nyk_olio->id . ")'"; $pk_class = ""; if ($on_uusia_pk) { $pk_class = " class='on_uusia'"; } $pikakommenttisolu = "<td" . $pk_class . $onmouseover . ">" . "<span id='id" . $nyk_olio->id . "'>" . $kommenttien_lkm . "</span></td>"; //================================================================== $matka_km = round($nyk_olio->matkametreina / 100) / 10; // Nollaa ei näytetä, ettei masenna: if ($matka_km == 0) { $matka_km = "-"; } else { if ($nyk_olio->nakyvyys == Nakyvyys::$PUOLIJULKINEN) { if ($nyk_olio->henkilo_id != $omaid) { $matka_km = "-"; } else { $matka_km = Html::luo_span($matka_km, array(Maarite::classs("puolijulkinen_km"), Maarite::title("Puolijulkinen!"))); } } } if ($on_omat) { // Valintaruutu sisältää vastaavan tietokantarivin id:n: $maar_array = array(Maarite::name("valinnat[]"), Maarite::value($nyk_olio->id)); $valruutusis = Html::luo_checkbox($maar_array); $valintaruutu = Html::luo_tablesolu($valruutusis, ""); } $kesto = muotoile_suorituksen_kesto($nyk_olio->kestotunnit, $nyk_olio->kestomin, $nyk_olio->kestosek, $nyk_olio->kesto); $pvm = anna_viikonp_suomeksi($nyk_olio->paiva, $nyk_olio->kk, $nyk_olio->vuosi, true) . " " . $nyk_olio->paiva . "." . $nyk_olio->kk . "." . $nyk_olio->vuosi; if ($nyk_olio->nakyvyys == Nakyvyys::$YKSITYINEN) { $pvm = Html::luo_span($pvm, array(Maarite::classs("yksityinen"), Maarite::title("Yksityinen!"))); } $mj .= "<td class='aikasolu'>" . $pvm . "</td>\n <td>{$laji_muokattu}</td>\n <td>{$kesto}</td>\n <td>{$matka_km}</td>\n <td>" . stripslashes($nyk_olio->kuvaus) . "</td>\n {$valintaruutu}\n {$pikakommenttisolu}\n </tr>"; $laskuri++; } $mj .= "</table>"; if ($on_omat) { $mj .= "</form>"; } $suoritushtml = $mj; } } return $suoritushtml; }
/** * Palauttaa kuvalomakkeen, jossa on kuvan tiedot ja tiedot valituista * lajiluokista. * * <p>Riippuvuuksia: </p> */ public function luo_kuvalomake($valitut) { $ylaosa = Kuva::nayta_kuvalomake_ilman_formia($this->parametriolio); $alaosa = $this->luo_havaintotaulukko($valitut, true); $varoitus = Html::luo_div(Bongaustekstit::$ilm_havaintokuvan_lisaaminen_huomautus . ":", array(Maarite::classs(Bongausasetuksia::$havaintotauluotsikko_class))); $lomake = Html::luo_form($ylaosa . $varoitus . $alaosa, array(Maarite::align("left"), Maarite::method("post"), Maarite::id("kuvalomake"), Maarite::action("index.php?"), Maarite::enctype_multipart_form_data())); return $lomake; }