/** * Palauttaa palauteolion, joka sisältää kuvalomakkeen html:n * @return type */ public function toteuta_nayta_kuvalomake_havaintoihin() { $valitut = $this->valittujen_idt; $omaid = $this->get_parametriolio()->omaid; $palauteolio = $this->get_palauteolio(); //======================== SECURITY ==================================== // Ne muokattavat, jotka täyttävät valtuusehdot: /* @var $muokattavat array */ $muokattavat = $this->poimi_valituista_mahdolliset($valitut); //====================================================================== if (empty($valitut)) { $palauteolio->set_ilmoitus(Bongaustekstit::$ilm_ei_valintoja); $palauteolio->set_operaatio_onnistui(true); $palauteolio->set_sisalto($this->toteuta_nayta()->get_sisalto()); } else { if (empty($muokattavat)) { $palauteolio->set_ilmoitus(Bongaustekstit::$ilm_ei_kelvollisia_valintoja); $palauteolio->set_operaatio_onnistui(true); $palauteolio->set_sisalto($this->toteuta_nayta()->get_sisalto()); } else { $this->get_parametriolio()->kokoelmanimi = Kuva::$KUVAT_BONGAUS; // Haetaan ekan havainnon tiedot kuvaa varten: $hav = $muokattavat[0]; if ($hav instanceof Havainto) { $this->get_parametriolio()->id_hav = $hav->get_id(); $this->get_parametriolio()->kuvaotsikko_kuva = Lajiluokka::hae_lajiluokan_nimi($hav->get_lajiluokka_id(), $this->tietokantaolio(), $this->get_parametriolio()->kieli_id); $this->get_parametriolio()->kuvaselitys_kuva = $hav->get_paikka() . ": " . $hav->get_kommentti(); $this->get_parametriolio()->vuosi_kuva = $hav->get_vuosi(); $this->get_parametriolio()->kk_kuva = $hav->get_kk(); $this->get_parametriolio()->paiva_kuva = $hav->get_paiva(); } $havaintonakymat = new Havaintonakymat($this->get_tietokantaolio(), $this->get_parametriolio()); $palauteolio->set_sisalto($havaintonakymat->luo_kuvalomake($muokattavat)); } } return $palauteolio; }
/** * Palauttaa html:n albumin katselua varten, jossa näkyy kaikki albumin * kuvat pikkukuvina (1-8 rinnakkain).Kuvaa klikkaamalla saa sen näkyviin isona. * * Painike, josta palataan takaisin havaintolistaan. * * @param <type> $omaid * @param <type> $id_lj * @param <type> $tietokantaolio * @param <type> $valtuudet * @param <type> $kuvia_rinnakkain rivillä olevien kuvien lukumäärä * (mitä pienempi sitä isommat kuvat) * @param <type> $ikkunan_leveys * @param <type> $kuvahakumoodi Miten kuvat haetaan: pikkukuvat tietokannasta, * pikkukuvat tiedostosta vaiko isot kuvat tiedostosta (vanha tapa) * @return <type> Palauttaa albumihtml:n */ function bongaus_nayta_albumin_esikatselu($omaid, $id_lj, $tietokantaolio, $valtuudet, $kuvia_rinnakkain, $ikkunan_leveys, $kuvahakumoodi) { // Tarkistetaan kuvamäärän parametrin sopivuus: if (!isset($kuvia_rinnakkain) || !is_numeric($kuvia_rinnakkain) || $kuvia_rinnakkain < 1 || $kuvia_rinnakkain > Kuva::$ESIKATSELUKUVIA_RIVILLA_LKM_MAX) { $kuvia_rinnakkain = 4; } // Pakotetaan nopein. Oli vähän ongelmaa muuten. $kuvahakumoodi = Kuvat::$KUVAHAKUMOODI_pikkukuvat_tiedosto; // Tämä muuttuja kertoo, onko kyseessä lajin vai yläluokan id_lj. Myöhemmin // tarkistetaan asia. $on_ylaluokka = true; // Lasketaan ensin kuvien koot. $kuvateksti = false; // kuvatekstiä ei näytetä. // Bongauksessa on kolme palstaa, joten pitää leveyttä // säätää, jotta kuvat mahtuvat olemaan: $on_kaksipalsta = false; $MAX_LEV_KUVA = laske_kuvan_maksimileveys($kuvia_rinnakkain, $ikkunan_leveys, $kuvateksti, $on_kaksipalsta); $MAX_KORK_KUVA = laske_kuvan_maksimikorkeus($MAX_LEV_KUVA); $mj = ""; //Metodin palauttama merkkijono. // Tätä tarvitaan, jotta koon muutos ikkunan kokoa muutettaessa löytää // oikean albumin ($id_alb ei päivity, jos albumi tuodaan ajaxin kautta). $piilo_id = "<span id ='piilo_id'>" . $id_lj . "</span>"; $kuvan_lisaysnappi = ""; // painike, josta saa näkyviin albumit: $onsubmit_funktionimi = "bongaus_nayta_albumit"; $onsubmit_parametrit = array(); $form_maaritteet = array("method" => "post", "class" => "rinnakkain", "action" => "../bongaus/index.php"); $input_maaritteet = array("name" => Bongaustoimintonimet::$kuvatoiminto, "value" => Bongauspainikkeet::$NAYTA_KUVA_ALBUMIT_VALUE, "title" => Bongauspainikkeet::$NAYTA_KUVA_ALBUMIT_TITLE); $albuminaytto = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); // Nämä painikkeet tulevat aina näkyviin: $takaisin_nappi = "<form method='post' id='takaisin_nappi' " . "action='../bongaus/index.php'>" . "<input type='submit' name='" . Bongaustoimintonimet::$havaintotoiminto . "' value='" . Bongauspainikkeet::$TAKAISIN_HAVAINTOIHIN_VALUE . "'/>" . "</form>"; // Nämä painikkeet tulevat aina näkyviin: $diaesitysnappi = "<button type='button' title='" . Painikkeet::$NAYTA_DIAESITYS_TITLE . "' onClick=" . "'kaynnista_diaesitys(" . $id_lj . ", 1, " . bongaus_hae_albumin_kuvien_lkm($id_lj, $tietokantaolio, $omaid) . ",\"" . Kuva::$KUVAT_BONGAUS . "\")'>" . Painikkeet::$NAYTA_DIAESITYS_VALUE . "</button>"; // Tämä sisältää pikkukuvien kokohallinnan: $esikatselukoko = " Koon säätö: " . "<input type='button' class='button_alas'" . "onclick=\"pienenna_pikkukuvat(" . $id_lj . "," . Kuva::$ESIKATSELUKUVIA_RIVILLA_LKM_MAX . ",'" . Kuva::$KUVAT_BONGAUS . "')\"" . "value='" . Painikkeet::$PIENEMMAT_ESIKATSELUKUVAT_ALB_VALUE . "'/>" . " Kuvia rivillä: <span id='kuvia_rinnakkain'>" . $kuvia_rinnakkain . "</span> " . "<input type='button' class='button_alas'" . "onclick=\"suurenna_pikkukuvat(" . $id_lj . "," . Kuva::$ESIKATSELUKUVIA_RIVILLA_LKM_MAX . ",'" . Kuva::$KUVAT_BONGAUS . "')\"" . "value='" . Painikkeet::$SUUREMMAT_ESIKATSELUKUVAT_ALB_VALUE . "'/>"; // Selvitetään ensin, onko lajiluokka laji vai yläluokka. Tämä ratkaisee // ainakin sen, voiko lisätä uusia kuvia: $lajiluokkaolio = ""; if (isset($id_lj) && $id_lj != "") { $taulunimi = "blajiluokat"; $sarakenimi = "id"; $hakuarvo = $id_lj; $lajiluokkaolio = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo); // Lajilla on aina nollaa suurempi ylaluokka-tunniste: if ($lajiluokkaolio->ylaluokka_id > -1) { $on_ylaluokka = false; } else { $on_ylaluokka = true; } } else { // Muuten lopetetaan tykkänään tähän: return 'Albumia ei määritelty!'; exit; } // Haetaan lajiluokan nimi (suomeksi vain tällä hetkellä): $kielen_nro = Kielet::$SUOMI; $nimi = Lajiluokka::hae_lajiluokan_nimi($id_lj, $tietokantaolio, $kielen_nro); // Kuvia voi lisätä vain lajiin, ei yläluokkaan, jotta laji // saadaan muistiin. if (!$on_ylaluokka) { $kuvan_lisaysnappi = "<form method='post'id='lisaa_kuvia_bong' " . "action='../bongaus/index.php?id_lj={$id_lj}'>" . "<input type='submit' name='" . Bongaustoimintonimet::$kuvatoiminto . "'" . "value='" . Bongauspainikkeet::$UUSI_KUVA_VALUE . "'/>" . "</form>"; } $kuva_alt = ""; // Html-img-elementin alt-määritteen arvo. $aika = ""; // Kuvan ottoaika // Haetaan kaikki albumin kuvat (sopivalla where-ehdolla): $where_ehto = "blajiluokat.id = {$id_lj}"; if ($on_ylaluokka) { $where_ehto = "blajiluokat.ylaluokka_id = {$id_lj}"; } // Haetaan albumin kuvien tiedot: $hakulause = "SELECT DISTINCT kuvat.id AS kuva_id, tiedostonimi, tiedostokoko,\n leveys, korkeus, src, kuvaotsikko, kuvaselitys\n FROM kuvat\n JOIN bkuvalinkit AS linkit\n ON kuvat.id = linkit.kuva_id\n JOIN blajiluokat\n ON blajiluokat.id = linkit.lajiluokka_id\n WHERE {$where_ehto}\n AND (kuvat.nakyvyys = " . Nakyvyys_kuva::$JULKINEN . "\n OR kuvat.henkilo_id = " . $omaid . ")\n ORDER BY linkit.jarjestysluku DESC"; $osumat = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause); $lkm = sizeof($osumat); $kuvamj = "<table id='esikatselukuvat'><tr>"; if ($lkm > 0) { $laskuri = 0; // Laskee kuvien määrän. foreach ($osumat as $kuvatiedot) { $laskuri++; $kuva_alt = $kuvatiedot->tiedostonimi . " (" . round($kuvatiedot->tiedostokoko / 1000) . " kt)"; // Muokataan kuvan koko sopivaksi eli pienennetään, jos leveys on yli // $MAX_LEV_KUVA. Leveyden ja korkeuden suhde säilytetään. $lev = $kuvatiedot->leveys; $kork = $kuvatiedot->korkeus; $nayttolev = $kuvatiedot->leveys; $nayttokork = $kuvatiedot->korkeus; // Kuvan suurin mitta tulee siis samaksi. Leveä kuva on yhtä leveä // kuin korkea kuva on korkea. if ($kork != 0 && $lev != 0) { $suhde = $kork / $lev; // Vaakasuora kuva: if ($suhde < 1 && $lev > $MAX_LEV_KUVA) { $nayttolev = $MAX_LEV_KUVA; $nayttokork = round($MAX_LEV_KUVA * $suhde); } // Pystysuora kuva: if ($suhde >= 1 && $kork > $MAX_KORK_KUVA) { $nayttokork = $MAX_KORK_KUVA; $nayttolev = round($MAX_KORK_KUVA / $suhde); } } // Otetaan pienin mahdollinen kuva tietokannasta tai ellei // siellä ole tarpeeksi isoa, niin tiedostosta sitten: $kuva_id = $kuvatiedot->kuva_id; $maxmitta = max(array($nayttokork, $nayttolev)); // Haku tietokannasta: if ($kuvahakumoodi == Kuvat::$KUVAHAKUMOODI_pikkukuvat_tietokanta) { if ($maxmitta <= Kuva::$TIETOKANTAKUVA_PIENI_MITTA) { $src = "'kuvatus.php?kuva_id=" . $kuva_id . "&koko=pieni'"; } else { if ($maxmitta <= Kuva::$TIETOKANTAKUVA_ISO_MITTA) { $src = "'kuvatus.php?kuva_id=" . $kuva_id . "&koko=iso'"; } else { $src = "'" . $kuvatiedot->src . "'"; } } } else { if ($kuvahakumoodi == Kuvat::$KUVAHAKUMOODI_pikkukuvat_tiedosto) { if ($maxmitta <= Kuva::$TIETOKANTAKUVA_PIENI_MITTA) { $osoite_mini1 = Kuva::$kansion_os_bongauskuvat_pikkukuvat . "/" . Kuva::$pikkukuva1_nimen_osa . $kuvatiedot->tiedostonimi; $src = "'" . $osoite_mini1 . "'"; } else { if ($maxmitta <= Kuva::$TIETOKANTAKUVA_ISO_MITTA) { $osoite_mini2 = Kuva::$kansion_os_bongauskuvat_pikkukuvat . "/" . Kuva::$pikkukuva2_nimen_osa . $kuvatiedot->tiedostonimi; $src = "'" . $osoite_mini2 . "'"; } else { if ($maxmitta <= Kuva::$TIETOKANTAKUVA_ISO2_MITTA) { $osoite_mini3 = Kuva::$kansion_os_bongauskuvat_pikkukuvat . "/" . Kuva::$pikkukuva3_nimen_osa . $kuvatiedot->tiedostonimi; $src = "'" . $osoite_mini3 . "'"; } else { $src = "'" . $kuvatiedot->src . "'"; } } } } else { $src = "'" . $kuvatiedot->src . "'"; } } // Kuvaa klikkaamalla saadaan se isoksi: $klikkaus = "onclick=\"hae_kuva_ja_tiedot('" . $id_lj . "','" . $kuva_id . "','" . Kuva::$KUVAT_BONGAUS . "')\""; $kuvamj .= "<td class='kuva'>" . "<img src=" . $src . " " . $klikkaus . "width='" . $nayttolev . "' height='" . $nayttokork . "' " . "alt='" . $kuva_alt . "' title='" . $kuvatiedot->kuvaotsikko . " " . $kuvatiedot->kuvaselitys . "'/>" . "</td>"; // Rivinvaihto aina sopivaan paikkaan: if ($laskuri % $kuvia_rinnakkain == 0) { $kuvamj .= "</tr><tr>"; } } $kuvamj .= "</tr></table>"; } else { $kuvamj = "<h3/>Kansiossa ei ole kuvia!</h3>"; } $mj = "<div id='albumi'>" . "<h2>Bongauskuvia: " . $nimi . " (" . $piilo_id . $lkm . " kuvaa)</h2>"; $mj .= "<div id='nappirivi'>" . $albuminaytto . $takaisin_nappi . $kuvan_lisaysnappi . $esikatselukoko . $diaesitysnappi . "</div>"; $mj .= "<div id='kuvaruutu'>" . $kuvamj . "</div>"; $mj .= "</div>"; //Albumin loppu. return $mj; }