/** * Returns the HTML for the courseInfo form. Makes it possible to either * create a new form or to edit an old one. * * @param type $lang_id * @param Kurssitieto $courseInfo Kurssitieto object. * @return type */ public function show_courseInfo_form($lang_id, &$courseInfo) { // Default values (new object): $new = true; $description = ""; $teacher_name = ""; $course_code = ""; $visibility_value = Nakyvyys::$JULKINEN; // Old object to be modified: if ($courseInfo->olio_loytyi_tietokannasta) { $new = false; // Htmlspecialchars: Management of special signs etc. $description = htmlspecialchars($courseInfo->get_arvo(Kurssitieto::$sarakenimi_kuvaus), ENT_QUOTES, "UTF-8", true); $teacher_name = htmlspecialchars($courseInfo->get_arvo(Kurssitieto::$sarakenimi_opettaja_nimi), ENT_QUOTES, "UTF-8", true); $course_code = htmlspecialchars($courseInfo->get_arvo(Kurssitieto::$sarakenimi_tunniste), ENT_QUOTES, "UTF-8", true); $visibility_value = $courseInfo->get_arvo(Kurssitieto::$sarakenimi_nakyvyys); } // Visibility choises: ==================================================== $default = $visibility_value; $visibility_object = new Perusnakyvyys(); $select_attr_array = array(Attr::name(Palautuskontrolleri::$kurssitieto_name_nakyvyys), Attr::title(Palautustekstit::visibility($lang_id)), Attr::classs("form-control"), Attr::id("course_visibility")); $option_attr_array = array(); $visibility_dropdown_elem = $visibility_object->luo_pudotusvalikko($select_attr_array, $option_attr_array, $default, ""); //====================================================================== $save_button = $this->create_button_save_edit_courseInfo($lang_id); $info = Palautustekstit::courseInfo_edit_form_instruction($lang_id); if ($new) { $save_button = $this->create_button_save_new_courseInfo($lang_id); $info = Palautustekstit::courseInfo_new_form_instruction($lang_id); } $html = Html::luo_otsikko($info, array(), 2) . Html::form(array(Attr::classs("form-horizontal")), Html::div(array(Attr::classs("form-group")), Html::luo_label_for("course_code_text_field", Palautustekstit::course_code($lang_id), array(Attr::classs("control-label col-sm-2"))) . Html::div(array(Attr::classs("col-sm-10")), Html::luo_input(array(Attr::classs("form-control"), Attr::id("course_code_text_field"), Attr::type("text"), Attr::value($course_code), Attr::name(Palautuskontrolleri::$kurssitieto_name_tunniste))))) . Html::div(array(Attr::classs("form-group")), Html::luo_label_for("course_desc_text_area", Palautustekstit::description($lang_id), array(Attr::classs("control-label col-sm-2"))) . Html::div(array(Attr::classs("col-sm-10")), Html::luo_textarea($description, array(Attr::classs("form-control"), Attr::id("course_desc_text_area"), Attr::type("text"), Attr::rows(5), Attr::name(Palautuskontrolleri::$kurssitieto_name_kuvaus))))) . Html::div(array(Attr::classs("form-group")), Html::luo_label_for("course_teacher_name_text_field", Palautustekstit::teacher_name($lang_id), array(Attr::classs("control-label col-sm-2"))) . Html::div(array(Attr::classs("col-sm-10")), Html::luo_input(array(Attr::classs("form-control"), Attr::id("course_teacher_name_text_field"), Attr::type("text"), Attr::value($teacher_name), Attr::name(Palautuskontrolleri::$kurssitieto_name_opettaja_nimi))))) . Html::div(array(Attr::classs("form-group")), Html::luo_label_for("course_visibility", Palautustekstit::visibility($lang_id), array(Attr::classs("control-label col-sm-2"))) . Html::div(array(Attr::classs("col-sm-10")), $visibility_dropdown_elem)) . Html::div(array(Attr::classs("form-group")), Html::div(array(Attr::classs("col-sm-2")), "") . Html::div(array(Attr::classs("col-sm-10")), $save_button . $this->create_button_back_to_teacher_view($lang_id)))); return $html; }
/** * Palauttaa koostelomakkeen koodin. Jos $kooste-parametri on * Kooste-luokan alkio, on kysymys vanhan muokkaamisesta, muuten * uuden koosteen luomisesta. * @param type $kooste * @param Parametrit $parametrit * @param string $elementit Mahdolliset elementit tai niiden otsikot * @param string $valitut Valittujen olioiden tiedot html-koodina. */ public function nayta_lomake($kooste, $parametrit, $elementit, $valitut) { $sisalto = ""; $nimi = ""; $selitys = ""; $osaset = ""; $tekstikentan_lev = 55; $tekstiruudun_lev = 57; $uuden_luominen = true; // Asetetaan mahdolliset vanhat arvot kohdilleen: if ($kooste instanceof Kooste && $kooste->olio_loytyi_tietokannasta) { $uuden_luominen = false; // Perustiedot: $kooste_taso = $kooste->get_arvo(Kooste::$sarakenimi_taso); $kooste_oppiaine = $kooste->get_arvo(Kooste::$sarakenimi_oppiaine); $kooste_kieli = $kooste->get_arvo(Kooste::$sarakenimi_kieli); // Valittavien oletusvalinnat: $valittavat_taso = $kooste_taso; $valittavat_oppiaine = $kooste_oppiaine; $valittavat_kieli = $kooste_kieli; $koostetyyppi = $kooste->get_arvo(Kooste::$sarakenimi_tyyppi); $nakyvyys = $kooste->get_arvo(Kooste::$sarakenimi_nakyvyys); $lomakeotsikko = Html::luo_otsikko(Tekstit::$kooste_lomakeotsikko_muokkaus, array(), 1); // Alla ovat tärkeitä, jotta esim. JS-koodi toimii, eikä // ala kehittämään mitään ylimääräistä muokatessa. $nimi = htmlspecialchars(stripslashes($kooste->get_arvo(Kooste::$sarakenimi_nimi)), ENT_QUOTES, "UTF-8", true); $kooste_id = $kooste->get_id(); // Aattelin, että jos on tyhjä ... pitäisi tarkistaa, meneekö näin. if ($selitys === Kooste::$MUUTTUJAA_EI_MAARITELTY) { $selitys = ""; } else { $selitys = htmlspecialchars(stripslashes($kooste->get_arvo(Kooste::$sarakenimi_selitys)), ENT_QUOTES, "UTF-8", true); } $koosteotsikko = htmlspecialchars(stripslashes($kooste->get_arvo(Kooste::$sarakenimi_otsikko)), ENT_QUOTES, "UTF-8", true); $organisaatiotunnus = htmlspecialchars(stripslashes($kooste->get_arvo(Kooste::$sarakenimi_organisaatio)), ENT_QUOTES, "UTF-8", true); } else { // Uusi kooste $kooste_taso = $parametrit->taso_kokon; $kooste_oppiaine = $parametrit->oppiaine_kokon; $kooste_kieli = $parametrit->kieli_id; $valittavat_taso = $parametrit->taso_kokon; $valittavat_oppiaine = $parametrit->oppiaine_kokon; $valittavat_kieli = $parametrit->kieli_id; $koostetyyppi = $parametrit->kooste_tyyppi; $nakyvyys = $parametrit->kooste_nakyvyys; // Uusi kooste: if ($nakyvyys === Kooste::$MUUTTUJAA_EI_MAARITELTY) { $nakyvyys = Nakyvyys::$YKSITYINEN; } $lomakeotsikko = Html::luo_otsikko(Tekstit::$kooste_lomakeotsikko_uusi, array(), 1); $nimi = $parametrit->kooste_nimi; $selitys = $parametrit->kooste_selitys; $koosteotsikko = $parametrit->kooste_otsikko; $organisaatiotunnus = $parametrit->kooste_org; $kooste_id = Kooste::$MUUTTUJAA_EI_MAARITELTY; // Arvo ei_maaritelty (-2) ei näytä kivalta, joten muutetaan se // tyhjäksi. Huomaa &, ilman sitä ei toimi.. $syotteet = array(&$nimi, &$selitys, &$koosteotsikko, &$organisaatiotunnus); 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::$koostelomake_nimikenttaid, Tekstit::$kooste_lomake_nimi . " *: ", array()), array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::name(Koostekontrolleri::$kooste_name_nimi), Attr::size($tekstikentan_lev), Attr::max_length(100), Attr::id(Koostenakymat::$koostelomake_nimikenttaid), Attr::value($nimi))), array()), array(Attr::title(Tekstit::$kooste_lomake_nimi_title))); // rivi // Tyyppirivi (uusi hieno metodi Asetuspohjan avulla: $koostetyypit = new Koostetyypit(); $select_maaritteet = array(Attr::name(Koostekontrolleri::$kooste_name_tyyppi)); $option_maaritteet = array(); $oletusvalinta_arvo = $koostetyyppi; $otsikko = ""; // Asetetaan erikseen. $koostevalikko = $koostetyypit->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $oletusvalinta_arvo, $otsikko); // Luodaan näkyvyysvalikko mukaan samalle riville: $nakyvyydet = new Perusnakyvyys(); $select_maaritteet_nak = array(Attr::name(Koostekontrolleri::$kooste_name_nakyvyys)); $option_maaritteet_nak = array(); $otsikko_nak = Tekstit::$nakyvyys_valikko_otsikko; $nakyvyysvalikko = $nakyvyydet->luo_pudotusvalikko($select_maaritteet_nak, $option_maaritteet_nak, $nakyvyys, $otsikko_nak); $tyyppirivi = Html::luo_tablerivi(Html::luo_tablesolu(Tekstit::$kooste_lomake_tyyppi . ": ", array()) . Html::luo_tablesolu($koostevalikko . " " . $nakyvyysvalikko, array()), array()); // Perustietorivi eli oppiaine, taso ja kieli: $valikko = $this->kokonaisuusnakymat->nayta_tasovalikko($kooste_taso) . " "; $valikko .= $this->kokonaisuusnakymat->nayta_oppiainevalikko($kooste_oppiaine) . " "; //$valikko .= $this->kokonaisuusnakymat->nayta_kielivalikko( // $parametrit->kieli_id); $valikko .= ucfirst(Tekstit::$language) . ": " . Html::luo_b(Kielet::hae_kielen_nimi($kooste_kieli), array()); $perustietorivi = Html::luo_tablerivi(Html::luo_tablesolu(Tekstit::$kooste_lomake_perustiedot . ": ", array()) . Html::luo_tablesolu($valikko, array()), array()); // Organisaatiotunnusrivi: $organisaatiorivi = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for(Koostenakymat::$koostelomake_organkenttaid, Tekstit::$kooste_lomake_organisaatio . ": ", array(Attr::title(Tekstit::$kooste_lomake_organisaatio_title))), array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::name(Koostekontrolleri::$kooste_name_organ_code), Attr::size($tekstikentan_lev), Attr::max_length(20), Attr::id(Koostenakymat::$koostelomake_organkenttaid), Attr::value($organisaatiotunnus))), array()), array()); // rivi // Tulostettava otsikko -rivi: $otsikkorivi = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for(Koostenakymat::$koostelomake_tulost_ots_kenttaid, Tekstit::$kooste_lomake_otsikko . ": ", array()), array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::name(Koostekontrolleri::$kooste_name_otsikko), Attr::size($tekstikentan_lev), Attr::max_length(200), Attr::id(Koostenakymat::$koostelomake_tulost_ots_kenttaid), Attr::value($koosteotsikko))), array()), array(Attr::title(Tekstit::$kooste_lomake_otsikko_title))); // rivi // Selitysrivi: $selitysrivi = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for(Koostenakymat::$koostelomake_selityskenttaid, Tekstit::$kooste_lomake_selitys . ": ", array()), array()) . Html::luo_tablesolu(Html::luo_textarea($selitys, array(Attr::name(Koostekontrolleri::$kooste_name_selitys), Attr::cols($tekstiruudun_lev), Attr::rows(9), Attr::id(Koostenakymat::$koostelomake_selityskenttaid))), array()), array(Attr::title(Tekstit::$kooste_lomake_selitys_title))); // rivi // // Ohje elementtien hakuun (väliteksti): $valiotsikko = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_b(Tekstit::$kooste_lomake_valiots_elementit, array()), array(Attr::colspan(2))), array()); // rivi // Perusvalikot taso, oppiaine ja kieli elementtien etsintään: $tasotiedot = new Koulutasot(); $oppiainetiedot = new Oppiaineet(); $kielitiedot = new Kielet(); // Lähetetään nämä, niin ei tartte js:ssä arvailla: $koostelomakevalinnat_oppiaine_name = Koostekontrolleri::$koostelom_elemval_oppiaine_name; $koostelomakevalinnat_kieli_name = Koostekontrolleri::$koostelom_elemval_kieli_name; $koostelomakevalinnat_taso_name = Koostekontrolleri::$koostelom_elemval_taso_name; // Osa arvoista on valikoille yhteiset, osa ei: $select_maaritteet_taso = array(Attr::onchange("hae_elementit", array(Koostenakymat::$koostelomake_tasovalikkoid, Koostenakymat::$koostelomake_oppiainevalikkoid, Koostenakymat::$koostelomake_kielivalikkoid, Koostekontrolleri::$kooste_name_id, $koostelomakevalinnat_kieli_name, $koostelomakevalinnat_oppiaine_name, $koostelomakevalinnat_taso_name, $kooste_id)), Attr::id(Koostenakymat::$koostelomake_tasovalikkoid)); $select_maaritteet_oppiaine = array(Attr::onchange("hae_elementit", array(Koostenakymat::$koostelomake_tasovalikkoid, Koostenakymat::$koostelomake_oppiainevalikkoid, Koostenakymat::$koostelomake_kielivalikkoid, Koostekontrolleri::$kooste_name_id, $koostelomakevalinnat_kieli_name, $koostelomakevalinnat_oppiaine_name, $koostelomakevalinnat_taso_name, $kooste_id)), Attr::id(Koostenakymat::$koostelomake_oppiainevalikkoid)); $select_maaritteet_kieli = array(Attr::onchange("hae_elementit", array(Koostenakymat::$koostelomake_tasovalikkoid, Koostenakymat::$koostelomake_oppiainevalikkoid, Koostenakymat::$koostelomake_kielivalikkoid, Koostekontrolleri::$kooste_name_id, $koostelomakevalinnat_kieli_name, $koostelomakevalinnat_oppiaine_name, $koostelomakevalinnat_taso_name, $kooste_id)), Attr::id(Koostenakymat::$koostelomake_kielivalikkoid)); $option_maaritteet = array(); $otsikko_tasot = Tekstit::$kokonlomake_koulutaso; $otsikko_aineet = Tekstit::$kokonlomake_oppiaine; $otsikko_kielet = Tekstit::$kielivalikko_otsikko; $tasovalikko = $tasotiedot->luo_pudotusvalikko($select_maaritteet_taso, $option_maaritteet, $valittavat_taso, $otsikko_tasot); $ainevalikko = $oppiainetiedot->luo_pudotusvalikko($select_maaritteet_oppiaine, $option_maaritteet, $valittavat_oppiaine, $otsikko_aineet); $kielivalikko = $kielitiedot->luo_pudotusvalikko($select_maaritteet_kieli, $option_maaritteet, $valittavat_kieli, $otsikko_kielet); $valikko = $tasovalikko . " " . $ainevalikko . " " . $kielivalikko; $valikkorivi = Html::luo_tablerivi(Html::luo_tablesolu($valikko, array(Attr::colspan(3))), array()); // Huom: asetetaan valittavien taso, kieli ja oppiaine sessiotietoihin, // jotta ne muistetaan, ovat määriteltujä ja niihin päästään käsiksi // myöhemminkin: $sessiomuuttujanimi_taso = Parametrit::sessiomuuttujanimi_koostelomake_valittavat_taso(); $sessiomuuttujanimi_kieli = Parametrit::sessiomuuttujanimi_koostelomake_valittavat_kieli(); $sessiomuuttujanimi_oppiaine = Parametrit::sessiomuuttujanimi_koostelomake_valittavat_oppiaine(); $_SESSION[$sessiomuuttujanimi_taso] = $valittavat_taso; $_SESSION[$sessiomuuttujanimi_kieli] = $valittavat_kieli; $_SESSION[$sessiomuuttujanimi_oppiaine] = $valittavat_oppiaine; //====================================================================== // Näytetään elementtilista ja mahdollisesti valitut elementit: $tyhja_taul = array(); /*$elem = Html::luo_tablerivi( Html::luo_tablesolu( // solu 1 Html::luo_table( // Taulu solun 1 sisään Html::luo_tablerivi( Html::luo_tablesolu_otsikko( Tekstit::$kooste_lomake_valittavat_elementit, $tyhja_taul ). Html::luo_tablesolu_otsikko( Tekstit::$kooste_lomake_valitut_elementit, $tyhja_taul ), $tyhja_taul ). Html::luo_tablerivi( Html::luo_tablesolu($elementit, $tyhja_taul). Html::luo_tablesolu( $valitut_koodi, array( Maarite::id( Koostenakymat::$koostelomake_valitut_elem_id) )), $tyhja_taul // rivi ), $tyhja_taul // table inner ), array(Maarite::colspan(3)) // solu 1 ), array() // rivi ); */ $elem = Html::luo_tablerivi(Html::luo_tablesolu_otsikko(Tekstit::$kooste_lomake_valittavat_elementit, array(Attr::colspan(2))), $tyhja_taul) . Html::luo_tablerivi(Html::luo_tablesolu($elementit, array(Attr::colspan(2))), array()); //====================================================================== // Luodaan vielä tallennuspainike: if ($uuden_luominen) { $painike_value = Painikkeet::$kooste_uuden_tallennus_value; $painike_title = Painikkeet::$kooste_uuden_tallennus_title; $form_action = "index.php"; } else { $painike_value = Painikkeet::$kooste_muokkaustallennus_value; $painike_title = Painikkeet::$kooste_muokkaustallennus_title; $form_action = "index.php?" . Koostekontrolleri::$kooste_name_id . "=" . $kooste->get_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))); if ($uuden_luominen) { $paluupainike = ""; } else { $paluupainike = $this->nayta_painike_paluu_koosteeseen($kooste->get_id(), Elementti::$MUUTTUJAA_EI_MAARITELTY); } $tallennuspainikerivi = Html::luo_tablerivi(Html::luo_tablesolu($tallennuspainike . " " . $paluupainike, array(Attr::colspan(3))), array()); // rivi //====================================================================== $taulukko = Html::luo_table($nimirivi . $tyyppirivi . $perustietorivi . $organisaatiorivi . $otsikkorivi . $selitysrivi . $tallennuspainikerivi . $valikkorivi . $elem, array()); // Tehdään vielä vähän isommaksi, jotta valitut saadaan näkymään // oikealla kuten oikeassa palkissa (oikea palkki on hankala, koska // lomakkeen jakaminen sinne ei oikein onnistunut). $maar_array = array(); $isotaulukko = Html::luo_table(Html::luo_tablerivi(Html::luo_tablesolu($taulukko, array()) . Html::luo_tablesolu($valitut, array(Attr::style("vertical-align: text-top;"))), $maar_array), array()); $sisalto .= $lomakeotsikko . $isotaulukko; $koodi = Html::luo_form($sisalto, array(Attr::classs("koostelomake"), Attr::action($form_action), Attr::method("post"), Attr::onsubmit("tarkista_arvot_kooste", array(Koostenakymat::$koostelomake_nimikenttaid, Tekstit::$kooste_virheilm_syotevika)))); return $koodi; }
public function __construct() { parent::__construct(); $nimi_versio2 = ""; // ei tarpeen täällä. $asetukset = $this->get_asetukset(); array_push($asetukset, new Asetus(Tekstit::$NAKYVYYS_VAIN_OTSIKKO_kuvaus, $nimi_versio2, Nakyvyys::$VAIN_OTSIKKO, Tekstit::$NAKYVYYS_VAIN_OTSIKKO_kuvaus_title)); array_push($asetukset, new Asetus(Tekstit::$NAKYVYYS_VAIN_KOOSTEESSA_kuvaus, $nimi_versio2, Nakyvyys::$VAIN_KOOSTEESSA, Tekstit::$NAKYVYYS_VAIN_KOOSTEESSA_kuvaus_title)); $this->set_asetukset($asetukset); }