/** * Palauttaa koosteen elementtiryhmälomakkeen koodin. Jos $elementtiryhma- * parametri löytyy tietokannasta, on kysymys vanhan muokkaamisesta, muuten * uuden koosteen luomisesta. * @param Kooste $kooste Kooste-luokan olio, jonka elementeistä tehdään ryhmää. * @param Elementtiryhma $elementtiryhma Elementtiryhma-luokan olio. * @param Parametrit $parametrit Parametrit-luokan olio. * @param array $elementit Koosteen sellaiset elementit, joihin käyttäjällä * on vähintään katseluoikeus. */ public function nayta_elemryhmalomake($kooste, $elementtiryhma, $parametrit, $elementit) { $sisalto = ""; $elemryhma_kooste_id = ""; $elemryhma_tunnus = ""; $elemryhma_nimi = ""; $elemryhma_selitys = ""; $elemryhma_id = ""; // Sisältää linkit ryhmän vanhoihin elementteihin (ennen nykyisiä muutoksia). $vanhat_elementtilinkit = array(); $tekstikentan_lev = 55; $tekstiruudun_lev = 57; $uuden_luominen = true; $empty_array = array(); // Asetetaan mahdolliset vanhat arvot kohdilleen: if ($elementtiryhma instanceof Elementtiryhma && $elementtiryhma->olio_loytyi_tietokannasta) { $uuden_luominen = false; // Perustiedot: $elemryhma_kooste_id = $elementtiryhma->get_arvo(Elementtiryhma::$sarakenimi_kooste_id); $elemryhma_tunnus = $elementtiryhma->get_arvo(Elementtiryhma::$sarakenimi_tunnus); // Alla ovat sen takia, ettei ala kehittämään mitään ylim. muokatessa. $elemryhma_nimi = htmlspecialchars(stripslashes($elementtiryhma->get_arvo(Elementtiryhma::$sarakenimi_nimi)), ENT_QUOTES, "UTF-8", true); $elemryhma_selitys = htmlspecialchars(stripslashes($elementtiryhma->get_arvo(Elementtiryhma::$sarakenimi_selitys)), ENT_QUOTES, "UTF-8", true); $lomakeotsikko = Html::luo_otsikko(Tekstit::$elemryhma_lomakeotsikko_muokkaus, $empty_array, 1); $elemryhma_id = $elementtiryhma->get_id(); $vanhat_elementtilinkit = $elementtiryhma->hae_linkit(); } else { // Uusi elementtiryhmä $elemryhma_nimi = $parametrit->elemryhma_nimi; $elemryhma_tunnus = $parametrit->elemryhma_tunnus; $elemryhma_kooste_id = $parametrit->elemryhma_kooste_id; $elemryhma_selitys = $parametrit->elemryhma_selitys; $lomakeotsikko = Html::luo_otsikko(Tekstit::$elemryhma_lomakeotsikko_uusi, $empty_array, 1); $elemryhma_id = Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY; // Arvo ei_maaritelty (-2) ei näytä kivalta, joten muutetaan se // tyhjäksi. Huomaa &, ilman sitä ei toimi.. $syotteet = array(&$elemryhma_nimi, &$elemryhma_selitys); for ($i = 0; $i < sizeof($syotteet); $i++) { if ($syotteet[$i] == Kooste::$MUUTTUJAA_EI_MAARITELTY) { $syotteet[$i] = ""; } } } // Luodaan lomakkeen osat rivi kerrallaan (taulukkoasettelu): $nimirivi = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for(Koostenakymat::$elemryhmalomake_nimikenttaid, Tekstit::$elemryhmalomake_nimi . " *: ", $empty_array), $empty_array) . Html::luo_tablesolu(Html::luo_input(array(Attr::name(Koostekontrolleri::$elemryhma_name_nimi), Attr::size($tekstikentan_lev), Attr::max_length(100), Attr::id(Koostenakymat::$elemryhmalomake_nimikenttaid), Attr::value($elemryhma_nimi))), array(Attr::colspan(2))), array(Attr::title(Tekstit::$elemryhmalomake_nimi_title))); // rivi // Tyyppirivi (uusi hieno metodi Asetuspohjan avulla: $tunnukset = new Elemryhmatunnukset(); $select_maaritteet = array(Attr::name(Koostekontrolleri::$elemryhma_name_tunnus)); $option_maaritteet = $empty_array; $oletusvalinta_arvo = $elemryhma_tunnus; $otsikko = ""; // Asetetaan erikseen. $tunnusvalikko = $tunnukset->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $oletusvalinta_arvo, $otsikko); $tunnusrivi = Html::luo_tablerivi(Html::luo_tablesolu(Tekstit::$elemryhmalomake_tunnus . ": ", $empty_array) . Html::luo_tablesolu($tunnusvalikko, array(Attr::colspan(2))), $empty_array); // Selitysrivi: $selitysrivi = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for(Koostenakymat::$elemryhmalomake_selityskenttaid, Tekstit::$elemryhmalomake_selitys . ": ", $empty_array), $empty_array) . Html::luo_tablesolu(Html::luo_textarea($elemryhma_selitys, array(Attr::name(Koostekontrolleri::$elemryhma_name_selitys), Attr::cols($tekstiruudun_lev), Attr::rows(9), Attr::id(Koostenakymat::$elemryhmalomake_selityskenttaid))), array(Attr::colspan(2))), array(Attr::title(Tekstit::$elemryhmalomake_selitys_title))); // rivi // // Elementit, joista voi valita sopivat. Ensin otsikko, sitten loput: $elementtirivit = Html::luo_tablerivi(Html::luo_tablesolu("", $empty_array) . Html::luo_tablesolu(Html::luo_b(Tekstit::$elemryhma_elemvalintaotsikko . ": ", $empty_array), array(Attr::colspan(2))), $empty_array); // Täällä muokkauksen yhteydessä käydään läpi aina vanhat linkit, // jotta osataan entiset valinnat asettaa kohdalleen. foreach ($elementit as $elementti) { if ($elementti instanceof Elementti) { $on_valittu = false; // Onko ennestään ryhmässä vai ei. if (!$uuden_luominen) { foreach ($vanhat_elementtilinkit as $linkki) { if ($linkki->get_arvo(Elementtiryhmalinkki::$sarakenimi_elementti_id) + 0 === $elementti->get_id() + 0) { $on_valittu = true; break; } } } // CheckBox attributes: $maaritteet = array(Attr::id("elem" . $elementti->get_id()), Attr::name(Koostekontrolleri::$elemryhma_name_elementtivalinnat . "[]"), Attr::value($elementti->get_id())); if ($on_valittu) { array_push($maaritteet, Attr::checked()); } // Luodaan rivi jokaista elementtiä kohti: $elementtirivit .= Html::luo_tablerivi(Html::luo_tablesolu("", $empty_array) . Html::luo_tablesolu(Html::luo_label_for("elem" . $elementti->get_id(), $elementti->hae_otsikko() . " ", $empty_array), $empty_array) . Html::luo_tablesolu(Html::luo_checkbox($maaritteet), $empty_array), $empty_array); } } //====================================================================== //====================================================================== // Luodaan vielä tallennuspainike: if ($uuden_luominen) { $painike_value = Painikkeet::$kooste_tallenna_uusi_ryhmittely_value; $painike_title = Painikkeet::$kooste_tallenna_uusi_ryhmittely_title; $form_action = "index.php?" . Koostekontrolleri::$kooste_name_id . "=" . $kooste->get_id(); // Paluupainike: $paluupainike = $this->luo_paluu_koosteeseen_nayttopainike($kooste); } else { $painike_value = Painikkeet::$kooste_tallenna_ryhmittelymuokkaus_value; $painike_title = Painikkeet::$kooste_tallenna_ryhmittelymuokkaus_title; $form_action = "index.php?" . Koostekontrolleri::$kooste_name_id . "=" . $kooste->get_id() . "&" . Koostekontrolleri::$elemryhma_name_id . "=" . $elementtiryhma->get_id(); // Paluupainike: $paluupainike = $this->nayta_painike_paluu_elementtiryhmaan($kooste->get_id(), $elemryhma_id); } $tallennuspainike = Html::luo_input(array(Attr::type("submit"), Attr::value($painike_value), Attr::name(Toimintonimet::$koostetoiminto), Attr::title($painike_title), Attr::classs("btn btn-" . Koostenakymat::$btn_type_summary . " btn-" . Koostenakymat::$btn_size_summary))); $tallennuspainikerivi = Html::luo_tablerivi(Html::luo_tablesolu($tallennuspainike, array(Attr::colspan(3))), $empty_array); // rivi //====================================================================== $taulukko = Html::luo_table($nimirivi . $tunnusrivi . $selitysrivi . $elementtirivit . $tallennuspainikerivi, $empty_array); $sisalto .= $lomakeotsikko . $taulukko; $koodi = Html::luo_form($sisalto, array(Attr::classs("elemryhmalomake"), Attr::action($form_action), Attr::method("post"), Attr::onsubmit("tarkista_arvot_elemryhma", array(Koostenakymat::$elemryhmalomake_nimikenttaid, Tekstit::$elemryhma_virheilm_syotevika)))); return $koodi . $paluupainike; }
/** * Palauttaa form-lomakkeen sisällä olevan input-elementin koodin. Parametrina * annetaan kummankin $maar_array. Jos $maar_array_form-taulukossa on * action-määritteellä arvo "oletus", "default" tai määrite puuttuu, * annetaan arvoksi "{$_SERVER['PHP_SELF']}". * * <p>Nämä pakotetaan joka tapauksessa riippumatta parametreista: * Form method="post" ja input type="submit"</p> * * Helpoimmillaan painikkeen saa siis toimimaan antamalla parametreina yhden * tyhjän taulukon ja toiseen ($maar_array_input) vain value- ja namemääritteet: * array(Maarite::value($painikkeen_nimi), Maarite::name($toimintonimi)) * * @param type $maar_array_form * @param type $maar_array_input * @return type */ public static function luo_forminput_painike($maar_array_form, $maar_array_input) { Attr::lisaa_maarite(Attr::method("post"), $maar_array_form); Attr::lisaa_maarite(Attr::type("submit"), $maar_array_input); // Tarkastellaan action-määritettä: if (Attr::etsi_maarite("action", $maar_array_form) == Attr::$EI_LOYTYNYT || Attr::etsi_maarite("action", $maar_array_form) == "oletus" || Attr::etsi_maarite("action", $maar_array_form) == "default") { Attr::lisaa_maarite(Attr::action("{$_SERVER['PHP_SELF']}"), $maar_array_form); } $sisalto = Html::luo_input($maar_array_input); return Html::luo_elem_2os("form", $sisalto, $maar_array_form); }
/** * Palauttaa koodi, joka luo lomakkeen, jonka avulla voi muokata omaa * salasanaa ja muita tietoja. * * @param Parametrit $parametriolio * @param type $uusi jos true, niin kyseessä uuden henkilön luominen. * @return type */ function nayta_henkilotietolomake(&$parametriolio, $uusi) { /*$puh = $parametriolio->puhelin; $os = $parametriolio->osoite; $asuinmaa = $parametriolio->asuinmaa; $kieli = $parametriolio->kieli_henkilo;*/ $tahti_molemmissa = "*"; $tahti_vain_uudessa = ""; $otsikko = Html::luo_b(Kayttajatekstit::henkilolomakeotsikko_muokkaus(), array()); $tallennuspainike = Html::luo_input(array(Attr::type("submit"), Attr::name(Toimintonimet::$henkilotietotoiminto), Attr::value(Kayttajatekstit::$nappi_tallenna_tietomuutokset_value), Attr::title(Kayttajatekstit::$nappi_tallenna_tietomuutokset_title), Attr::classs("rinnakkain"))); if ($uusi) { $etun = $parametriolio->etun; $sukun = $parametriolio->sukun; $lempin = $parametriolio->lempin; $komm = $parametriolio->komm; $uusktunnus = $parametriolio->uusktunnus; $eosoite = $parametriolio->eosoite; $name = Toimintonimet::$henkilotietotoiminto; $tahti_vain_uudessa = "*"; $tallennuspainike = Html::luo_input(array(Attr::type("submit"), Attr::name(Toimintonimet::$henkilotietotoiminto), Attr::value(Kayttajatekstit::$nappi_henkilo_tallenna_uusi_value), Attr::title(Kayttajatekstit::$nappi_henkilo_tallenna_uusi_title), Attr::classs("rinnakkain"))); $otsikko = Kayttajatekstit::henkilolomakeotsikko_uusi(); } else { // Haetaan tiedot tietokannasta: $user = new Henkilo($parametriolio->get_omaid(), $parametriolio->get_tietokantaolio()); if ($user->olio_loytyi_tietokannasta) { $etun = $user->get_arvo(Henkilo::$sarakenimi_etunimi); $sukun = $user->get_arvo(Henkilo::$sarakenimi_sukunimi); $lempin = $user->get_arvo(Henkilo::$sarakenimi_lempinimi); $komm = $user->get_arvo(Henkilo::$sarakenimi_kommentti); $uusktunnus = $parametriolio->uusktunnus; $eosoite = $user->get_arvo(Henkilo::$sarakenimi_eosoite); $name = Toimintonimet::$henkilotietotoiminto; } else { $this->lisaa_virheilmoitus(Tekstit::$virheilm_henkiloa_ei_loytynyt); } } $otsikko .= Html::luo_p(Kayttajatekstit::henkilolomake_nakyvyysselitys(), array(Attr::style("font-size: 80%"))); $mj = $otsikko; // Ilmoitukset: $mj .= Html::luo_div($parametriolio->ilmoitus_kokon, array(Attr::id(Kayttajanakymat::$id_henkilotietolomakeilmoitukset), Attr::classs("korostus"))); $mj .= Html::luo_table(Html::luo_tablerivi(Html::luo_tablesolu("*" . Kayttajatekstit::$lomakekentta_etunimi, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("text"), Attr::name(Kayttajakontrolleri::$name_etunimi), Attr::value($etun), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu("*" . Kayttajatekstit::$lomakekentta_sukunimi, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("text"), Attr::name(Kayttajakontrolleri::$name_sukunimi), Attr::value($sukun), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu(Kayttajatekstit::$lomakekentta_lempinimi, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("text"), Attr::name(Kayttajakontrolleri::$name_lempinimi), Attr::value($lempin), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu(Kayttajatekstit::$lomakekentta_kuvaus_itsesta, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("text"), Attr::name(Kayttajakontrolleri::$name_kommentti), Attr::value($komm), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu("*" . Kayttajatekstit::$lomakekentta_email, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("text"), Attr::name(Kayttajakontrolleri::$name_eosoite), Attr::value($eosoite), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu($tahti_vain_uudessa . Kayttajatekstit::$lomakekentta_kayttajatunnus, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("text"), Attr::name(Kayttajakontrolleri::$name_uusikayttajatunnus), Attr::value(""), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu($tahti_vain_uudessa . Kayttajatekstit::$lomakekentta_salasana, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("password"), Attr::name(Kayttajakontrolleri::$name_uusisalasana), Attr::value(""), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu($tahti_vain_uudessa . Kayttajatekstit::$lomakekentta_salasana_vahvistus, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("password"), Attr::name(Kayttajakontrolleri::$name_salasanavahvistus), Attr::value(""), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu("", array()) . Html::luo_tablesolu($tallennuspainike . Html::luo_input(array(Attr::type("submit"), Attr::name(Toimintonimet::$henkilotietotoiminto), Attr::value(Kayttajatekstit::$nappi_poistu_tiedoista_value), Attr::title(Kayttajatekstit::$nappi_poistu_tiedoista_title), Attr::classs("rinnakkain"))), array()), array()), array(Attr::summary("Muokkaustiedot"), Attr::align("center"))); $lomake = Html::luo_form($mj, array(Attr::action("index.php"), Attr::method("post"), Attr::classs("tietolomake_rajaton"))); return $lomake; }