public function run() { $faker = Faker::create(); foreach (Attr::get() as $attr) { foreach (range(1, $faker->numberBetween(1, 10)) as $index) { $part = new Part(['name' => $faker->domainWord]); $part = $attr->parts()->save($part); } } }
/** * 属性内容 * * @return [type] [description] */ public function actionAttr2content() { $catalog = intval($this->_gets->getPost('catalog')); $attrModel = Attr::model()->findAll(array('condition' => 'scope=:scope AND catalog_id=:catalogId', 'params' => array('scope' => 'post', 'catalogId' => $catalog))); if ($attrModel) { $var['state'] = 'success'; $var['message'] = '找到属性'; $var['text'] = $this->renderPartial('/_include/attr2content', array('attrModel' => $attrModel), true); } else { $var['state'] = 'error'; $var['message'] = '没有属性'; } exit(CJSON::encode($var)); }
public function actionDeleteattr($id) { $gr = Attr::model()->findByPk($id); if (!empty($gr)) { /* $attr_vals = AttrVal::model()->findAll(array('condition'=>'attr_id=:attr_id','params'=>array(':attr_id'=>$id))); foreach($attr_vals as $attr_val) { $attr_val->delete(); }*/ try { $gr->delete(); } catch (CDbException $e) { $this->redirect($this->createUrl('install/index', array('msg' => $e->getMessage(), 'msgtype' => 'error'))); } $this->redirect($this->createUrl('install/index', array('msg' => '[!] Атрибут успешно удален', 'msgtype' => 'success'))); } else { $this->redirect($this->createUrl('install/index', array('msg' => '[!] Ошибка: нет такого атрибута', 'msgtype' => 'error'))); } }
/** * Search goods */ public function actionSearch() { if (!isset($_POST['feature'])) { echo 'Категория пуста'; return; } //print_r($_POST); $catId = $_POST['category_id']; if (isset($_POST['brand'])) { foreach ($_POST['brand'] as $key => $value) { $brands[] = $key; } } $price = $_POST['price']; $res = array(); $first_step = true; foreach ($_POST['feature'] as $featureId => $feature) { if (!empty($feature) || $feature == '0') { $attr = Attr::model()->cache(3600)->findByPk($featureId); if ($attr->type == '2' && $feature == '2') { continue; } if ($attr->type == '3' && empty($feature['min']) && empty($feature['max'])) { continue; } $criteria = new CDbCriteria(); $criteria->compare('category_id', $catId, false); if (!empty($brands)) { $criteria->compare('brand_id', $brands, false); } if (!empty($price) && !empty($price['min'])) { $criteria->condition .= ' AND price >= ' . $price["min"]; } if (!empty($price) && !empty($price['max'])) { $criteria->condition .= ' AND price <= ' . $price["max"]; } $criteria->join = 'left join good_attr_val v ON v.good_id=t.id'; if ($attr->type == '1') { $values = array(); foreach ($feature as $key => $value) { if ($value == '1') { $values[] = $key; } } $criteria->compare('v.attr_value_id', $values); } if ($attr->type == '2') { $criteria->condition .= ' AND v.value=' . $feature . ' and v.attr_id=' . $attr->id; } if ($attr->type == '3') { if (!empty($feature['min']) && !empty($feature['max'])) { $criteria->condition .= ' AND v.value>=' . $feature['min'] . ' AND v.value<=' . $feature['max'] . ' AND v.attr_id =' . $attr->id; } elseif (!empty($feature['min']) && empty($feature['max'])) { $criteria->condition .= ' AND v.value>=' . $feature['min'] . ' AND v.attr_id =' . $attr->id; } elseif (empty($feature['min']) && !empty($feature['max'])) { $criteria->condition .= ' AND v.value<=' . $feature['max'] . ' AND v.attr_id =' . $attr->id; } } $goods = Good::model()->with(array('goodImages'))->findAll($criteria); $good_ids = array(); foreach ($goods as $good) { $good_ids[] = $good->id; } //echo 'id=' . $featureId . '<br>'; if (empty($res) && $first_step) { //print_r($good_ids);echo '<br>'; $res = $good_ids; if (empty($res) && !$first_step) { echo 'Ничего не найдено по этим критериям'; return; } $first_step = FALSE; continue; } if (empty($good_ids)) { echo 'Ничего не найдено по этим критериям'; return; } foreach ($res as $good_id) { if (!in_array($good_id, $good_ids)) { unset($res[array_search($good_id, $res)]); } } } } if ($first_step) { $criteria = new CDbCriteria(); $criteria->compare('category_id', $catId, false); if (!empty($brands)) { $criteria->compare('brand_id', $brands, false); } if (!empty($price) && !empty($price['min'])) { $criteria->condition .= ' AND price >= ' . $price["min"]; } if (!empty($price) && !empty($price['max'])) { $criteria->condition .= ' AND price <= ' . $price["max"]; } if (!empty($_POST['order'])) { $criteria->order = $_POST['order'] . ' '; } $count = Good::model()->count($criteria); $pages = new CPagination($count); $pages->pageSize = 10; $pages->setCurrentPage($_POST['page']); $pages->applyLimit($criteria); $goods = Good::model()->with(array('goodImages'))->findAll($criteria); } else { if (count($res) == 0) { echo 'Ничего не найдено по этим критериям'; return; } $new_res = array(); foreach ($res as $value) { $new_res[] = $value; } $count = count($new_res); $criteria = new CDbCriteria(); $pages = new CPagination($count); $pages->pageSize = 10; $pages->setCurrentPage($_POST['page']); $pages->applyLimit($criteria); $criteria->compare('id', $new_res); if (!empty($_POST['order'])) { $criteria->order = $_POST['order'] . ' '; } $goods = Good::model()->with(array('goodImages'))->findAll($criteria); } $this->renderPartial('search-result', array('goods' => $goods, 'pages' => $pages, 'count' => $count)); }
public function actionGroupAttributes() { if (isset($_POST['group_id']) && !empty($_POST['group_id'])) { $attributes = Attr::model()->findAll(array('condition' => 'attr_group_id=' . $_POST['group_id'], 'order' => 'pos')); foreach ($attributes as $attribute) { echo $attribute->pos . ' ' . $attribute->name . '<br/>'; } } }
/** * 自定义字段 */ public function actionCustom() { parent::_acl(); if (XUtils::method() == 'POST') { foreach ((array) $_POST['attr'] as $key => $row) { $val = is_array($row['val']) ? implode(',', $row['val']) : $row['val']; $var = $row["name"]; $config = Config::model()->find('scope=:scope AND variable=:variable', array('scope' => 'custom', 'variable' => $var)); if ($config) { Config::model()->updateAll(array('value' => $val), 'scope=:scope AND variable=:variable', array('scope' => 'custom', 'variable' => $var)); } else { $config = new Config(); $config->scope = 'custom'; $config->variable = $var; $config->value = $val; $config->save(); } } XXcache::refresh('_config', 3600); AdminLogger::_create(array('catalog' => 'update', 'intro' => '更新系统配置,模块:' . $this->action->id)); XUtils::message('success', '更新完成', $this->createUrl($this->action->id)); } $attrModel = Attr::lists(0, 'config'); $this->render('custom', array('attrData' => self::loadData(), 'attrModel' => $attrModel)); }
/** * Palauttaa painikkeiden html-koodin. * @param int $kaavakieli matematiikassa käytettävä syöttökieli. Ks. * vakiot luokan alussa. * @return type */ function luo_painikkeet($tarkennus, $kaavakieli) { /* Lisätään muutama painike tekstin muokkausta varten: */ $lainausmerkki_yks = Tekstityokalupalkki::$tekstimuokkaus_lainausmerkkiVINO_yks; $lainausmerkki_kaks = Tekstityokalupalkki::$tekstimuokkaus_lainausmerkkiVINO_kaks; $kertomerkki = Tekstityokalupalkki::$tekstimuokkaus_kertomerkki; $miinusmerkki = Merkit::$miinusmerkki; $merkkivalikko_perusmerkit = $this->luo_merkkivalikko_jpmath($this->alasvetovalikon_id, $this->elementin_id); $tekstimuokkauspainikkeet = "<div class='tekstimuokkauspalkki' id='tekstimuokkauspalkki'>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"b\",\"\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_lihavointi_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_lihavointi . "</button>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"i\",\"\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_kursivointi_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_kursivointi . "</button>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"span\",\"korostus\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_korostus_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_korostus . "</button>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"u\",\"\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_alleviivaus_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_alleviivaus . "</button>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"sup\",\"\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_ylaindeksi_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_ylaindeksi . "</button>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"sub\",\"\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_alaindeksi_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_alaindeksi . "</button>" . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_xtoiseen, array(Attr::onclick('lisaaMerkki', array($this->elementin_id, "x<sup>2</sup>")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_xtoiseen_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_xkolmanteen, array(Attr::onclick('lisaaMerkki', array($this->elementin_id, "x<sup>3</sup>")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_xkolmanteen_title))) . "<button type='button'" . "onclick='lisaaMerkki(\"" . $this->elementin_id . "\",\"" . $kertomerkki . "\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_kertomerkki_title . "'>" . $kertomerkki . "</button>" . "<button type='button'" . "onclick='lisaaMerkki(\"" . $this->elementin_id . "\",\"" . Merkit::$miinusmerkki . "\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_miinusmerkki_title . "'>" . Merkit::$miinusmerkki . "</button>" . "<button type='button'" . "onclick='lisaaMerkki(\"" . $this->elementin_id . "\",\"" . Merkit::$likiarvo . "\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_likiarvo_title . "'>" . Merkit::$likiarvo . "</button>" . "<button type='button'" . "onclick='lisaaMerkki(\"" . $this->elementin_id . "\",\"" . Merkit::$tuplapystyviiva . "\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_tuplapystyviiva_title . "'>" . Merkit::$tuplapystyviiva . "</button>" . Html::luo_button(Merkit::$pystyviiva, array(Attr::onclick('lisaaMerkki', array($this->elementin_id, Merkit::$pystyviiva)), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_pystyviiva_title))) . "<button type='button'" . "onclick='lisaaSulut(\"" . $this->elementin_id . "\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_sulut_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_sulut . "</button>" . "<button type='button'" . "onclick='lisaaEriMerkkipari(\"" . $this->elementin_id . "\",\"[\",\"]\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_hakasulut_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_hakasulut . "</button>" . "<button type='button'" . "onclick='lisaaEriMerkkipari(\"" . $this->elementin_id . "\",\"{\",\"}\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_aaltosulut_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_aaltosulut . "</button>" . "<button type='button'" . "onclick='lisaaMerkkipari(\"" . $this->elementin_id . "\",\"" . Merkit::$lainausmerkki_yks . "\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_lainausmerkki_yks_title . "'>" . Merkit::$lainausmerkki_yks . "..." . Merkit::$lainausmerkki_yks . "</button>" . "<button type='button'" . "onclick='lisaaMerkkipari(\"" . $this->elementin_id . "\",\"" . $lainausmerkki_kaks . "\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_lainausmerkki_kaks_title . "'>" . Merkit::$lainausmerkki_kaks . "..." . Merkit::$lainausmerkki_kaks . "</button>"; // Merkkivalikko: // Luodaan ensin vientipainike: $painike = $this->luo_merkin_vientipainike($this->alasvetovalikon_id, $this->elementin_id); // Sijoitetaan alasvetovalikko ja sen painike taulukkoon: $tekstimuokkauspainikkeet .= $merkkivalikko_perusmerkit . $painike; //$tekstimuokkauspainikkeet .= "<br />"; $tekstimuokkauspainikkeet .= "<button type='button'" . "onclick='lisaaMerkki(\"" . $this->elementin_id . "\",\"<br />\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_rivinvaihto_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_rivinvaihto . "</button>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"p\",\"\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_kappale_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_kappale . "</button>" . "<button type='button'" . "onclick='lisaaLinkkitagit(\"" . $this->elementin_id . "\",\"\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_linkki_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_linkki . "</button>" . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_div, array(Attr::onclick('lisaaTagit', array($this->elementin_id, "div", "", "", "")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_div_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_span, array(Attr::onclick('lisaaTagit', array($this->elementin_id, "span", "", "", "")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_span_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_taulukko, array(Attr::onclick('lisaaTagit', array($this->elementin_id, "taulukko", "default centered centered_content", "", "")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_taulukko_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_taulukkorivi, array(Attr::onclick('lisaaTagit', array($this->elementin_id, "tr", "", "", "")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_taulukkorivi_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_taulukkosolu_td, array(Attr::onclick('lisaaTagit', array($this->elementin_id, "td", "", "", "")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_taulukkosolu_td_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_taulukkosolu_th, array(Attr::onclick('lisaaTagit', array($this->elementin_id, "th", "", "", "")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_taulukkosolu_th_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_ul, array(Attr::onclick('lisaaTagit', array($this->elementin_id, "ul", "", "", "")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_ul_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_ol, array(Attr::onclick('lisaaTagit', array($this->elementin_id, "ol", "", "", "")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_ol_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_li, array(Attr::onclick('lisaaTagit', array($this->elementin_id, "li", "", "", "")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_li_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_class, array(Attr::onclick('lisaaEriMerkkipari', array($this->elementin_id, "class=\\\"", "\\\"")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_class_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_id, array(Attr::onclick('lisaaEriMerkkipari', array($this->elementin_id, "id=\\\"", "\\\"")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_id_title))) . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_nowrap, array(Attr::onclick('lisaaMerkki', array($this->elementin_id, "style=\\\"white-space:nowrap;\\\"")), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_nowrap_title))) . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"script\",\"\",\"\",\"text/javascript\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_skripti_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_skripti . "</button>" . Html::luo_button(Tekstityokalupalkki::$tekstimuokkaus_button_value, array(Attr::onclick('lisaaEriMerkkipari', array($this->elementin_id, $this->luo_button_alkumerkkaus(), $this->muotoile(Tekstityokalupalkki::$tekstimuokkaus_button_loppumerkkaus))), Attr::title(Tekstityokalupalkki::$tekstimuokkaus_button_title))) . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"code\",\"\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_code_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_code . "</button>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"div\",\"koodi\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_koodi_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_koodi . "</button>" . "<button type='button'" . "onclick='muokkaaErikoiset(\"" . $this->elementin_id . "\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_erikoismerkit_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_erikoismerkit . "</button>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"span\",\"suure\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_suure_title . "'>" . Tekstityokalupalkki::$tekstimuokkaus_suure . "</button>" . "<button type='button'" . "onclick='lisaaTagit(\"" . $this->elementin_id . "\",\"span\",\"yksikko\",\"\",\"\")'" . "title='" . Tekstityokalupalkki::$tekstimuokkaus_yksikko . "'>" . Tekstityokalupalkki::$tekstimuokkaus_yksikko . "</button>" . "<br/>"; //====================================================================== //==================== KAAVAKAAVAKAAVAKAAVA ============================ //====================================================================== //====================================================================== // Lisätään vielä kaavan lisäämiseen tarvittavat painikkeet, jos // valittu matemaattiset painikkeen: if ($tarkennus == Tekstityokalupalkki::$PERUSPAINIKKEET_JA_MATEMAATTISET) { $tekstimuokkauspainikkeet .= "<div style=" . $this->kaavapainikeryhmatyyli . ">" . $this->luo_kaavapainikkeet($kaavakieli) . "</div>"; // Kaavapainikeryhmän loppu. } //============== Kaavapainikkeet loppu ================================= $tekstimuokkauspainikkeet .= "</div>"; return $tekstimuokkauspainikkeet; }
/** * Save good attribute values from array * @param $data array with good attribute values */ public function SaveFeatures($data) { //save good features if (!isset($data)) { return; } //check exist good features first $featureValues = GoodAttrVal::model()->findAllByAttributes(array('good_id' => $this->id)); foreach ($featureValues as $featureValue) { if (isset($featureValue->attrValue)) { if ($featureValue->attrValue->attr->type == '1') { //if feature is string type if (empty($data['normal'][$featureValue->attrValue->attr->id])) { $featureValue->delete(); } elseif ($data['normal'][$featureValue->attrValue->attr->id] != $featureValue->attr_value_id) { if ($data['normal'][$featureValue->attrValue->attr->id] == '0') { $featureValue->attr_value_id = $data['new'][$featureValue->attrValue->attr->id]; } else { $featureValue->attr_value_id = $data['normal'][$featureValue->attrValue->attr->id]; } $featureValue->save(); } } } elseif (isset($featureValue->attr)) { if ($featureValue->attr->type == '2') { //if feature is boolean type if ($data['normal'][$featureValue->attr->id] == '0') { $featureValue->delete(); } elseif ($data['normal'][$featureValue->attr->id] != $featureValue->value) { $featureValue->value = $data['normal'][$featureValue->attr->id]; $featureValue->save(); } } elseif ($featureValue->attr->type == '3') { //if feature is numeric type if (empty($data['normal'][$featureValue->attr->id])) { $featureValue->delete(); } elseif ($data['normal'][$featureValue->attr->id] != $featureValue->value) { $featureValue->value = $data['normal'][$featureValue->attr->id]; $featureValue->save(); } } } } $newFeature = TRUE; foreach ($data['normal'] as $featureId => $feature) { foreach ($featureValues as $featureValue) { if ($featureValue->attrValue !== null && $featureValue->attrValue->attr_id == $featureId) { $newFeature = FALSE; } if ($featureValue->attr->id == $featureId) { $newFeature = FALSE; } } if ($newFeature) { $attr = Attr::model()->findByPk($featureId); $newGoodFeature = new GoodAttrVal(); $newGoodFeature->good_id = $this->id; if ($attr->type == '1') { if ($feature == '0' && !empty($data['new'][$featureId])) { //add new attribute value $newAttrValue = new AttrValue(); $newAttrValue->attr_id = $attr->id; $newAttrValue->value = $data['new'][$featureId]; $newAttrValue->save(); $newAttrValue->refresh(); $newGoodFeature->attr_value_id = $newAttrValue->id; $newGoodFeature->save(); } elseif ($feature != '0') { $newGoodFeature->attr_value_id = $feature; $newGoodFeature->save(); } } elseif ($attr->type == '2' && $feature != '0') { $newGoodFeature->value = $feature; $newGoodFeature->attr_id = $featureId; $newGoodFeature->save(); } elseif ($attr->type == '3' && !empty($feature)) { $newGoodFeature->value = $feature; $newGoodFeature->attr_id = $featureId; $newGoodFeature->save(); } } $newFeature = TRUE; } }
/** * Creates the html for head element with addresses for Bootstrap. * @return type */ function create_head() { $text = Html::luo_head(Html::luo_title(Tekstit::$home_title, array()) . Html::luo_meta(array(Attr::charset("utf-8"))) . Html::luo_meta(array(Attr::name("viewport"), Attr::content("width=device-width, initial-scale=1"))) . Html::luo_link_to_stylesheet("http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css") . Html::luo_link_to_stylesheet("tyylit/perusmuotoilut.css") . Html::luo_link_to_stylesheet("php_yleinen/matematiikka/matematiikkatyylit.css") . Html::luo_script_to_js("ajax_ja_js/metodit.js") . Html::luo_script_to_js("ajax_ja_js/tekstinmuokkausmetodit.js") . Html::luo_script_to_js("ajax_ja_js/ajaxkirjasto.js") . Html::luo_script_to_js("https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js") . Html::luo_script_to_js("http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js") . Html::luo_script_to_js("https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML") . Html::luo_script('MathJax.Hub.Config({ jax: ["input/TeX", "output/SVG"], TeX: { equationNumbers: { autoNumber: "AMS" } } });', array(Attr::type("text/x-mathjax-config"))) . Html::luo_script('MathJax.Hub.Config({ "HTML-CSS": { extensions: ["handle-floats.js"] } });', array(Attr::type("text/javascript"))) . Html::luo_script_to_js("ajax_ja_js/bootstrap_code.js"), array()); return $text; }
public function toteuta_nayta_lisavaltuuslomake(&$palaute) { $tietokantaolio = $this->get_tietokantaolio(); $parametriolio = $this->get_parametriolio(); $omistaja = new Henkilo($parametriolio->lv_omistaja_id, $tietokantaolio); $omistajan_nimi = $omistaja->get_arvo(Henkilo::$sarakenimi_etunimi) . " " . $omistaja->get_arvo(Henkilo::$sarakenimi_sukunimi); // Luodaan ensin valikot: // Henkilövalikko: ===================================================== $name_arvo = Kayttajakontrolleri::$lv_name_kohdehenkilo_id; $minimivaltuus = Valtuudet::$TEHTAVA_LISAYS; $taulunimi = Henkilo::$taulunimi; $henkilot = Henkilo::hae_valtuutetut_henkilot($minimivaltuus, $taulunimi, $tietokantaolio); $arvot = array(); // Henkilön id-arvot. $nimet = array(); // Henkilöiden nimet // haetaan arvot ja nimet henkilöiltä, muttei omistajalta: foreach ($henkilot as $henkilo) { if ($henkilo instanceof Henkilo && $henkilo->get_id() != $omistaja->get_id()) { $nimi = $henkilo->get_arvo(Henkilo::$sarakenimi_etunimi) . " " . $henkilo->get_arvo(Henkilo::$sarakenimi_sukunimi); array_push($nimet, $nimi); array_push($arvot, $henkilo->get_arvo(Henkilo::$SARAKENIMI_ID)); } } $select_maaritteet = array(Attr::name($name_arvo)); $option_maaritteet = array(); $oletusvalinta_arvo = ""; $otsikko = ""; $henkilovalikko = Html::luo_pudotusvalikko_uusi($arvot, $nimet, $select_maaritteet, $option_maaritteet, $oletusvalinta_arvo, $otsikko); //====================================================================== // Kohdevalikko: $name_arvo = Kayttajakontrolleri::$lv_name_vaikutusalue; $arvot = Lisavaltuudet::hae_vaikutusaluearvot(); $nimet = Lisavaltuudet::hae_vaikutusaluekuvaukset(); $select_maaritteet = array(Attr::name($name_arvo)); $option_maaritteet = array(); $oletusvalinta_arvo = Lisavaltuudet::$vain_nykyinen_olio; $otsikko = ""; $kohdevalikko = Html::luo_pudotusvalikko_uusi($arvot, $nimet, $select_maaritteet, $option_maaritteet, $oletusvalinta_arvo, $otsikko); //====================================================================== // Oikeusvalikko: $name_arvo = Kayttajakontrolleri::$lv_name_oikeudet; $arvot = Lisavaltuudet::hae_lisavaltuusarvot(); $nimet = Lisavaltuudet::hae_lisavaltuuskuvaukset(); $select_maaritteet = array(Attr::name($name_arvo)); $option_maaritteet = array(); $oletusvalinta_arvo = Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA; $otsikko = ""; $oikeusvalikko = Html::luo_pudotusvalikko_uusi($arvot, $nimet, $select_maaritteet, $option_maaritteet, $oletusvalinta_arvo, $otsikko); //===================== painikkeet ==================================== $submit_painike = Html::luo_input(array(Attr::type("submit"), Attr::name(Toimintonimet::$lv_toiminto), Attr::value(Kayttajatekstit::$lisavaltuudet_lomaketeksti_painike_tallenna))); $paluupainike = Html::luo_input(array(Attr::type("submit"), Attr::name(Toimintonimet::$lv_toiminto), Attr::value(Kayttajatekstit::$lisavaltuudet_lomaketeksti_painike_takaisin))); //===================== painikkeet ==================================== // Actionkyselymuuttujien arvot. Näin saadaan tiedot kulkemaan // lomakkeeseen ja siitä eteenpäin. $actionkyselyarvot = array($parametriolio->id_kokon, $parametriolio->oppiaine_kokon, $parametriolio->kieli_id, $parametriolio->lv_kohde_id, $parametriolio->lv_kohdetyyppi, $parametriolio->lv_omistaja_id); $palaute->set_sisalto($this->kayttajanakymat->nayta_lisavaltuuslomake($omistajan_nimi, $henkilovalikko, $kohdevalikko, $oikeusvalikko, $submit_painike, $paluupainike, $actionkyselyarvot)); return $palaute; }
/** * Generated and Returns HTML for URL questions * * @param string SC Question ID * @param string Question title * @param string Question subtitle * @param bool Question required * @param string Answer * @return string HTML */ private function get_question_url($id, $question) { # Assign attributes $input_attrs = []; $input_attrs[] = new Attr('type', 'url'); $input_attrs[] = new Attr('id', $id); $input_attrs[] = new Attr('name', $id); $input_attrs[] = new Attr('autocomplete', 'on'); $input_attrs[] = new Attr('maxlength', '255'); $input_attrs[] = new Attr('size', '40'); # Default/Current value $answers = $this->answers; if (isset($answers[$id])) { $input_attrs[] = new Attr('value', $answers[$id]); } elseif (!$this->ignoreDefaults && isset($question['default'])) { $input_attrs[] = new Attr('value', $question['default']); } # Required if (isset($question['required']) && $question['required']) { $input_attrs[] = new Attr('required'); } # Generate HTML $html = ' <div class="' . $this->getFieldClasses($question, 'url') . '">' . "\n"; $html .= $this->getQuestionHeader($question) . "\n"; $html .= ' <input ' . Attr::displayAll($input_attrs) . '>' . "\n"; $html .= ' </div>' . "\n"; return $html; }
/** * Palauttaa ratkaisulomakkeen html-koodin. * @param Parametrit $parametriolio * @return string */ function nayta_ratkaisulomake($parametriolio) { $id_kokon = $parametriolio->id_kokon; $id_teht = $parametriolio->id_teht; $id_ratk = $parametriolio->id_ratk; $omaid = $parametriolio->get_omaid(); $uusi = $parametriolio->uusi; $ilmoitus_ratk = $parametriolio->ilmoitus_ratk; $tietokantaolio = $parametriolio->get_tietokantaolio(); $kaavakieli = $parametriolio->kaavakieli; $nakyvyys_ratk = $parametriolio->nakyvyys_ratk; $mj = ""; // Lomakkeen html-koodi. $tehtavanakymat = new Tehtavanakymat(); // Tarpeen matkan varrella. // TArkistetaan, onko käyttäjä tulossa koosteesta / elementtiryhmästä // ja mahdollistetaan paluu: $elem_id = $parametriolio->elementti_id; $elemryhma_id = $parametriolio->elemryhma_id; $koostetieto = ""; if ($elem_id != Elementti::$MUUTTUJAA_EI_MAARITELTY) { $koostetieto = "&" . Koostekontrolleri::$elementti_name_id . "=" . $elem_id; } if ($elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) { $koostetieto .= "&" . Koostekontrolleri::$elemryhma_name_id . "=" . $elemryhma_id; } /***********************************************************************/ // Haetaan ensin tehtävä, jotta sen voi nähdä samalla: *****************/ $tehtava_html = ""; /* Haetaan tehtävä: */ $tehtava = new Tehtava($id_teht, $tietokantaolio); if (!$tehtava->olio_loytyi_tietokannasta) { $tehtava_html = Tekstit::$tehtava_ilm_ei_loytynyt; } else { $tehtava_html .= $tehtavanakymat->tulosta_tehtava_ilman_painikkeita($omaid, $tehtava); } /**************************************************************************/ $esikatselunappi = "<button type='button' " . "onclick='nayta_ratkaisun_esikatselu(" . $id_kokon . "," . $id_teht . "," . $id_ratk . ")'" . "title='" . Painikkeet::$ESIKATSELU_TITLE . "'/>" . Painikkeet::$ESIKATSELU_VALUE . "</button>"; // Haetaan ajantasalla olevat tiedot tietokannasta. Aiemmin // tiedot tuotiin kiinteästi painikelomakkeeseen, mutta tällöin // kokorajoitus urlissa aiheutti ongelmia. Muutenkin se on huonompi // ja turvattomampi tapa. $ratkaisu = new Ratkaisu($id_ratk, $tietokantaolio); // Pyritään tekemään niin, että vastauksen ollessa tyhjä ei // kirjoitettu vastaus kuitenkaan häviä.. if ($ratkaisu->olio_loytyi_tietokannasta) { if (empty($parametriolio->ratkaisu_ratk)) { $vastaus_ratk = $ratkaisu->getVastaus(); $ratkaisu_ratk = $ratkaisu->getRatkaisu(); } else { $vastaus_ratk = $parametriolio->vastaus_ratk; $ratkaisu_ratk = $parametriolio->ratkaisu_ratk; } $nakyvyys_ratk = $ratkaisu->getNakyvyys(); } else { if (empty($parametriolio->ratkaisu_ratk)) { $vastaus_ratk = ""; $ratkaisu_ratk = $tehtava->getTehtavananto(); } else { // Jos tietoja syötetty (esim. virhesyöte): $vastaus_ratk = $parametriolio->vastaus_ratk; $ratkaisu_ratk = $parametriolio->ratkaisu_ratk; } } // Siivotaan kenot ja varmistetaan tagien yms oikea näyttötapa: $vastaus_ratk = htmlspecialchars($vastaus_ratk, ENT_QUOTES, "UTF-8", true); $ratkaisu_ratk = htmlspecialchars($ratkaisu_ratk, ENT_QUOTES, "UTF-8", true); // Kaavakielivalikko:================================================== $kaavakielet = new Kaavakieli(); $select_maaritteet = array(Attr::onchange("muuta_kaavakieli", array("this.value", Yleiset_arvot::$kaavakieli_name))); $option_maaritteet = array(); $kaavakielivalikko = $kaavakielet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $kaavakieli, Tekstit::$kaavakieli_otsikko); //===================================================================== // Näkyvyysvalikko: =================================================== $nakyvyydet = new Nakyvyys(); $select_maaritteet = array(Attr::name(Ratkaisukontrolleri::$ratkaisu_name_nakyvyys)); $option_maaritteet = array(); $otsikko = ""; $nakyvyysvalikko = $nakyvyydet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $nakyvyys_ratk, $otsikko); //===================================================================== $vastaus_maxpituus = 1000; $ratkaisu_maxpituus = 10000; $toiminnan_name_arvo = Toimintonimet::$tehtavatoiminto; // Ilmoitus otetaan mukaan, jos ei tyhjä: if ($ilmoitus_ratk != "") { $ilmoitus_ratk = "<div class='lomakeilmoitus'>" . $ilmoitus_ratk . "</div>"; } if ($uusi) { $submitnappi = "<input type='submit'\n name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$ratkaisu_tallenna_uusi_value . "'/>"; $perunappi = "<input type='submit'\n name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$ratkaisu_peru_uuden_tallennus_value . "'" . "title='" . Painikkeet::$ratkaisu_peru_uuden_tallennus_title . "'/>"; } else { $submitnappi = "<input type='submit'\n name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$ratkaisu_tallenna_muokkaus_value . "'/>"; $perunappi = "<input type='submit'\n name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$ratkaisu_peruminen_value . "'/>"; } $muokattavan_elementin_id = "ratkaisuteksti"; $alasvetovalikon_id = "merkit1"; $tekstityokaluolio = new Tekstityokalupalkki($muokattavan_elementin_id, $alasvetovalikon_id); $tekstimuokkauspainikkeet = $tekstityokaluolio->luo_painikkeet(Tekstityokalupalkki::$PERUSPAINIKKEET_JA_MATEMAATTISET, $kaavakieli); // Kaavakielivalikko:================================================== $kaavakielet = new Kaavakieli(); $select_maaritteet = array(Attr::onchange("muuta_kaavakieli", array("this.value", Yleiset_arvot::$kaavakieli_name, $muokattavan_elementin_id, $alasvetovalikon_id))); $option_maaritteet = array(); $kaavakielivalikko = $kaavakielet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $kaavakieli, Tekstit::$kaavakieli_otsikko); //===================================================================== //====================================================================== // Sitten palat yhteen: $mj = $tehtava_html . "<form align='left' method='post' id='ratkaisulomake' class='lomake'" . "action='index.php?" . "id_ratk=" . $id_ratk . "&id_teht=" . $id_teht . "&id_kokon=" . $id_kokon . "&uusi=" . $uusi . $koostetieto . "'/>" . $ilmoitus_ratk . "<table summary='uudet_tiedot'>" . "<tr><td colspan=2><b>" . Tekstit::$ratkaisulomake_ohje . " " . $esikatselunappi . "</b></td>" . "</tr>" . "<tr><td>" . Tekstit::$ratkaisulomake_vastaus . ": </td><td><input type='text'\n size='80' maxlength='{$vastaus_maxpituus}' id='vastausteksti'" . "name='vastaus_ratk' value='{$vastaus_ratk}'\n title='" . Tekstit::$ratkaisulomake_vastaustitle . "'/></td>" . "</tr>" . "<tr><td>" . Tekstit::$nakyvyys_valikko_otsikko . "</td><td>" . $nakyvyysvalikko . "</td>" . "</tr>" . "<tr><td></td>" . "<td>" . $kaavakielivalikko . "</td>" . "</tr>" . "<tr><td></td><td>" . $tekstimuokkauspainikkeet . "</td></tr>" . "<tr><td>" . Tekstit::$ratkaisulomake_ratkaisu . ":</td>" . "<td colspan='2'><textarea id='ratkaisuteksti' cols='80' rows='20'\n maxlength = {$ratkaisu_maxpituus}\n name='ratkaisu_ratk'>{$ratkaisu_ratk}" . "</textarea></td></tr>" . "<tr><td></td><td align='left'>" . $submitnappi . $perunappi . "</td></tr>" . "</table>" . "</form>"; return $mj; }
/** * 更新 * * @param $id */ public function actionUpdate($id) { parent::_acl(); $attr = $this->_gets->getParam('attr'); $model = parent::_dataLoad(new Post(), $id); $imageList = $this->_gets->getParam('imageList'); $imageListSerialize = XUtils::imageListSerialize($imageList); if (isset($_POST['Post'])) { $style = $this->_gets->getParam('style'); $acl = $this->_gets->getParam('acl'); $styleFormat = XUtils::titleStyle($style); $model->attributes = $_POST['Post']; $file = XUpload::upload($_FILES['attach'], array('thumb' => true, 'thumbSize' => array(400, 250))); if (is_array($file)) { $model->attach_file = $file['pathname']; $model->attach_thumb = $file['paththumbname']; $model->attach_status = 'Y'; @unlink($_POST['oAttach']); @unlink($_POST['oThumb']); } $model->title_style = $styleFormat['text']; $model->title_style_serialize = $styleFormat['serialize']; $model->acl = is_array($acl) ? implode(',', $acl) : ''; $model->image_list = $imageListSerialize['dataSerialize']; if ($model->save()) { Attr::xupdate($model->id, $attr); Post2tags::build('update', $_POST['Post']['tags'], $model->id, $model->catalog_id); AdminLogger::_create(array('catalog' => 'update', 'intro' => '编辑内容,ID:' . $id)); $this->redirect(array('index')); } } $attrModel = Attr::lists($model->catalog_id, 'post'); if ($attr) { $attrData = Attr::dataReset($attr); } else { $attrData = Attr::datas($model->id); } if ($imageList) { $imageList = $imageListSerialize['data']; } elseif ($model->image_list) { $imageList = unserialize($model->image_list); } $this->render('update', array('model' => $model, 'imageList' => $imageList, 'attrModel' => $attrModel, 'attrData' => $attrData, 'groupList' => $this->_groupList('user'))); }
public function setNakyvyysmerkkiPrivate() { $this->nakyvyysmerkki = Html::luo_img(array(Attr::alt("Private"), Attr::src("../kuvat/ympyra_pun.png"))); }
$url = ""; } } } } } // Kieli- taso- ja oppiainevalikot: if ($palauteolio->get_valikkonaytto()) { // Lisätään pikapainikkeet koulutason muuttamiseen: $show_curr = false; $ylapalkkipainikkeet = $kokonaisuusnakymat->create_level_buttons(Koulutasot::hae_koulutasojen_arvot(), $parametriolio->taso_kokon, $show_curr, true); // Lisätään koostepainike täällä, koska se on luontevasti samassa // paikassa kuin oppiainetiedot: array_push($ylapalkkipainikkeet, $kokonaisuusnakymat->create_summary_button()); // muut valikot: $valikot = Html::form(array(Attr::classs("navbar-form"), Attr::id("kielivalikko")), Html::div(array(Attr::classs("form-group")), $kokonaisuusnakymat->nayta_kielivalikko($parametriolio->get_kieli_id()) . " " . $kokonaisuusnakymat->nayta_oppiainevalikko($parametriolio->get_oppiaine_kokon()) . " " . $kokonaisuusnakymat->nayta_tasovalikko($parametriolio->get_taso_kokon()) . " " . $kokonaisuusnakymat->nayta_nayttotapavalikko($parametriolio->get_kokonaisuuksien_nayttotapa())) . Html::luo_input(array(Attr::type("submit"), Attr::classs("btn btn-default"), Attr::name(Toimintonimet::$kokonaisuustoiminto), Attr::value("->")))); } else { $valikot = ""; } // Muokattu näkyviin: if ($palauteolio->get_muokatun_id() > -1) { $parametriolio->id_kokon = $palauteolio->get_muokatun_id(); } /* Lisätään pari painiketta, jotka saavat olla aina näkyvissä tehtävissä ja ratkaisuissa: */ /* Tämän avulla saadaan sisältö-laatikko levennettyä esim. * videotykkiesitystä varten. Toimii nyt vain fixed-näytöllä.*/ if ($palauteolio->get_naytettava_oliotyyppi() == Palaute::$NAYTETTAVA_OLIOTYYPPI_TEHTAVA || $palauteolio->get_naytettava_oliotyyppi() == Palaute::$NAYTETTAVA_OLIOTYYPPI_RATKAISU) { /*$suurenna_nappi = "<button type='button' id='suurenna_nappi'". "onclick='suurenna()' title='".Painikkeet::$SUURENNA_title."'>". Painikkeet::$SUURENNA_value."</button>";
/** * This is called before running latex on the page. */ function get_latex_config() { $conf = Html::luo_span("<br/>\\(" . "\\renewcommand{\\vec}[1]{\\mathbf{#1}} " . "\\DeclareMathOperator*{\\sijoitus}{\\Big/} " . "\\newcommand{\\eval}[2]{\\sijoitus_{\\kern-0.7em#1}^{\\kern0.7em#2}\\!} " . "\\)", array(Attr::style("display:none"))); return $conf; }
/** * Toteuttaa lomakkeen näytön sekä muokkausta että uuden luomista varten. * @return Palaute $palauteolio */ function toteuta_nayta_kokonaisuuslomake(&$palauteolio) { $parametriolio = $this->get_parametriolio(); $palauteolio = new Palaute(); $lomakkeen_naytto_ok = false; // Näytetäänkö lomaketta vai ei. $ilmoitus = ""; $sisalto = ""; // Tulossa koosteesta? Tarkistetaan: $elem_id = $parametriolio->elementti_id; $elem = Elementti::$MUUTTUJAA_EI_MAARITELTY; $elem_kandi = new Elementti($elem_id, $this->get_tietokantaolio()); if ($elem_kandi->olio_loytyi_tietokannasta) { $elem = $elem_kandi; } $elemryhma_id = $parametriolio->elemryhma_id; $elemryhma = Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY; $elemryhma_kandi = new Elementtiryhma($elemryhma_id, $this->get_tietokantaolio()); if ($elemryhma_kandi->olio_loytyi_tietokannasta) { $elemryhma = $elemryhma_kandi; } // Tätä tarvitaan, ellei muokkauslomakkeeseen syystä tai toisesta mennä: $perunappi = Html::luo_forminput_painike(array(), array(Attr::name(Toimintonimet::$kokonaisuustoiminto), Attr::value(Painikkeet::$PERU_KOKON_MUUTOSTEN_TALLENNUS_VALUE))); /* Näytetään lomake, jonka avulla voi luoda uuden kokonaisuuden: */ $omaid = $parametriolio->get_omaid(); if ($parametriolio->get_uusi()) { $ilmoitus = ""; $palauteolio->set_valikkonaytto(false); $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK); $lomakkeen_naytto_ok = true; } else { // Vanhan muokkaus: tällöin lukitus on tärkeä! $id_muokattava = $parametriolio->id_kokon; $muokattava = new Kokonaisuusolio($id_muokattava, $this->get_tietokantaolio()); if ($muokattava->olio_loytyi_tietokannasta) { $lukitusarvo = $muokattava->getLukitus(); //===================== LUKITUS ================================ // Jos lukitus päällä, ei päästetä muokkaamaan! if (is_numeric($lukitusarvo) && $lukitusarvo != Kokonaisuusolio::$LUKITUS_OFF && $lukitusarvo != $omaid) { $ilmoitus = Tekstit::$virheilm_kokonaisuus_lukittu_muokkaus_eiok; $sisalto = Tekstit::$virheilm_kokonaisuus_lukittu_muokkaus_eiok; $sisalto .= $perunappi; } else { // Kun ei lukittu vieraalle: // Lukitaan kokonaisuus, ettei kukaan muu pääse samaan aikaan // muokkaamaan samaa kokonaisuutta: $lukon_tila = Kokonaisuusolio::$LUKITUS_ON; $lukitus = $muokattava->aseta_kokonaisuuden_lukitus($omaid, $lukon_tila); /* Ilmoitus, ellei lukitus jostakin syystä onnistunut: */ if ($lukitus != Kokonaisuusolio::$OPERAATIO_ONNISTUI) { $ilmoitus = " " . Tekstit::$virheilm_kokonaisuuden_lukitus_eiok; $sisalto = " " . Tekstit::$virheilm_kokonaisuuden_lukitus_eiok . "<br/>" . $muokattava->tulosta_virheilmoitukset() . "<br/> omaid=" . $omaid . ", nyk lukon tila=" . $lukitusarvo . " ja haluttu_lukon_tila=" . $lukon_tila; $sisalto .= "<br/>" . $perunappi; } else { $lomakkeen_naytto_ok = true; } } $sisalto = $sisalto . "<br/> " . $muokattava->tulosta_kaikki_ilmoitukset() . "<br/>"; } else { // Oliota ei löytynyt tietokannasta: $sisalto = Tekstit::$ilm_kokon_ei_loytynyt . $perunappi; } } //====================================================================== if ($lomakkeen_naytto_ok) { $sisalto = $this->kokonaisuusnakymat->nayta_kokonaisuuslomake($parametriolio->id_kokon, $omaid, $parametriolio->uusi, $parametriolio->ilmoitus_kokon, $parametriolio->get_tietokantaolio(), $parametriolio->oppiaine_kokon, $parametriolio->otsikko_kokon, $parametriolio->tiivis_kokon, $parametriolio->selitys_kokon, $parametriolio->taso_kokon, $parametriolio->jarjestysnro_kokon, $parametriolio->laajennetun_id_kokon, $parametriolio->ylakokonaisuuden_id_kokon, $parametriolio->kieli_id, $parametriolio->nakyvyys_kokon, Toimintonimet::$kokonaisuustoiminto, $this, $parametriolio->kaavakieli, $elem, $elemryhma); } $palauteolio->set_sisalto($sisalto); $palauteolio->set_valikkonaytto(false); $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK); $palauteolio->set_ilmoitus($ilmoitus); $palauteolio->set_nayttotapa(Html_koodi::$sisaltoelem_levea); return $palauteolio; }
/** * Palauttaa tiettyihin (tietyn tehtävän) ratkaisujen html-koodin, joka * sisältää tarvittavat rakenteet ratkaisujen piilottamista ja näyttämistä * varten. * @param type $ratkaisut * @param boolean $tulostus True, jos halutaan tulostushtml. Muuten normi. * @param int $omaid Käyttäjän tunniste. * @param Elementti $tehtavaelem Elementti-luokan olio. Ratkaisuja ei * käsitellä kiinteinä elementteinä, vaan pikemminkin tehtävä-elementin * ominaisuutena, joka haetaan dynaamisesti tietokannasta tarvittaessa. */ public function luo_tehtavan_ratkaisut_koodi($ratkaisut, $tulostus, $omaid, $tehtavaelem) { $id_teht = "_tuntematon"; $class_arvo = ""; $lask = 0; $pal = ""; foreach ($ratkaisut as $ratk) { if ($ratk instanceof Ratkaisu) { $painikkeet = array(); // Ei painikkeita nyt. // Haetaan käyttäjän oikeudet: $kohdeoikeudet = Henkilo::hae_kayttajan_kohdeoikeudet($ratk->getHenkiloId(), $omaid, Oliotyyppi::$RATKAISU, $ratk->getId(), $this->get_tietokantaolio()); // Lisätään muutospainike vain, jos oikeudet sallivat eikä tulostus: if (!$tulostus) { if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) { if ($ratk->getNakyvyys() + 0 === Nakyvyys::$JULKINEN) { $ratk->setNakyvyysmerkkiPublic(); } else { $ratk->setNakyvyysmerkkiPrivate(); } $muokkausnappi = $this->ratkaisunakymat->luo_muokkauspainike($ratk, $tehtavaelem); array_push($painikkeet, $muokkausnappi); } } if ($lask === 0) { $id_teht = $ratk->getTeht_id(); } if ($tulostus) { $pal .= $this->ratkaisunakymat->luo_koostenakyma_tulostus($ratk, $painikkeet); $class_arvo = "elemtehtavan_ratkaisut_tulostus"; } else { $pal .= $this->ratkaisunakymat->luo_koostenakyma($ratk, $painikkeet); $class_arvo = "elemtehtavan_ratkaisut"; } } } $palaute = Html::luo_div($pal, array(Attr::classs($class_arvo), Attr::style("display:none"), Attr::id("ratkaisut_teht" . $id_teht))); return $palaute; }
/** * Palauttaa tehtävälomakkeen html:n. * * @param Parametrit $parametriolio * @return <type> Palauttaa lomakkeen html:n */ function nayta_tehtavalomake($parametriolio) { $id_kokon = $parametriolio->id_kokon; $id_teht = $parametriolio->id_teht; $omaid = $parametriolio->get_omaid(); $uusi = $parametriolio->uusi; $ilmoitus_teht = $parametriolio->ilmoitus_teht; $otsikko_teht = $parametriolio->otsikko_teht; $tehtavananto_teht = $parametriolio->tehtavananto_teht; $vaikeustaso_teht = $parametriolio->vaikeustaso_teht; $tietokantaolio = $parametriolio->get_tietokantaolio(); $nakyvyys = $parametriolio->nakyvyys_teht; $kaavakieli = $parametriolio->kaavakieli; $elem_id = $parametriolio->elementti_id; $mj = ""; // Lomakkeen html-koodi. $esikatselunappi = "<button type='button' " . "onclick='nayta_tehtavan_esikatselu(" . $id_kokon . "," . $id_teht . ")'" . "title='" . Painikkeet::$ESIKATSELU_TITLE . "'/>" . Painikkeet::$ESIKATSELU_VALUE . "</button>"; // TArkistetaan, onko käyttäjä tulossa koosteesta / elementtiryhmästä // ja mahdollistetaan paluu: $elem_id = $parametriolio->elementti_id; $elemryhma_id = $parametriolio->elemryhma_id; $koostetieto = ""; if ($elem_id != Elementti::$MUUTTUJAA_EI_MAARITELTY) { $koostetieto = "&" . Koostekontrolleri::$elementti_name_id . "=" . $elem_id; } if ($elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) { $koostetieto .= "&" . Koostekontrolleri::$elemryhma_name_id . "=" . $elemryhma_id; } // Haetaan ajantasalla olevat tiedot tietokannasta. Aiemmin // tiedot tuotiin kiinteästi painikelomakkeeseen, mutta tällöin // kokorajoitus urlissa aiheutti ongelmia. Muutenkin se on huonompi // ja turvattomampi tapa. // HUOM! Tämä ei auta uuden tehtävän tekemisessä, jos esimerkiksi // tarkistus ei mene läpi! // // Huom2: tämä hakee myös uuden tehtävän tapauksessa edellisen aktiivisen // tehtävän tiedot lomakkeeseen. Aika usein tehtävät ovat samantyyppisiä, // jolloin tämä helpottaa tekemistä enemmän kuin haittaa.. if ($id_teht != -1) { $taulunimi = "tehtavat"; $sarakenimi = "id"; $hakuarvo = $id_teht; $tehtava = new Tehtava($id_teht, $tietokantaolio); if ($tehtava->olio_loytyi_tietokannasta) { if (empty($tehtavananto_teht) && empty($otsikko_teht)) { $otsikko_teht = $tehtava->getOtsikko(); $tehtavananto_teht = $tehtava->getTehtavananto(); } $vaikeustaso_teht = $tehtava->getVaikeustaso(); $nakyvyys = $tehtava->getNakyvyys(); } // Tämä koodaa myös esim. heittomerkit, jolloin // ne eivät häiritse html:n seassa. $otsikko_teht = htmlspecialchars($otsikko_teht, ENT_QUOTES, "UTF-8", true); //htmlentities $tehtavananto_teht = htmlspecialchars($tehtavananto_teht, ENT_QUOTES, "UTF-8", true); } $toiminnan_name_arvo = Toimintonimet::$tehtavatoiminto; $otsikon_maxpituus = 1000; $tehtavananto_maxpituus = 10000; // Ilmoitus otetaan mukaan, jos ei tyhjä: if ($ilmoitus_teht != "") { $ilmoitus_teht = "<div class='lomakeilmoitus'>" . $ilmoitus_teht . "</div>"; } if ($uusi) { $submitnappi = "<input type='submit' " . "name='{$toiminnan_name_arvo}' " . "value='" . Painikkeet::$tehtava_tallenna_uusi_value . "'/>"; $perunappi = "<input type='submit' " . "name='{$toiminnan_name_arvo}' " . "value='" . Painikkeet::$tehtava_peru_uuden_tallennus_value . "'" . "title='" . Painikkeet::$tehtava_peru_uuden_tallennus_title . "'/>"; } else { $submitnappi = "<input type='submit'\n name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$tehtava_tallenna_muokkaus_value . "'/>"; $perunappi = "<input type='submit'\n name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$tehtava_peruminen_value . "'/>"; } // Vaikeustasovalikko: $vaikeustaso_html = ""; try { $arvot = Vaikeustasot::hae_vaikeustasoarvot(); $nimet = Vaikeustasot::hae_vaikeustasokuvaukset(); $name_arvo = "vaikeustaso_teht"; $oletusvalinta_arvo = $vaikeustaso_teht; $otsikko = ""; $vaikeustaso_html = Html::luo_pudotusvalikko($arvot, $nimet, $name_arvo, $oletusvalinta_arvo, $otsikko); } catch (Exception $poikkeus) { $vaikeustaso_html = "Virhe vaikeustasonimissä! (" . $poikkeus->getMessage() . ")"; } $muokattavan_elementin_id = "tehtavateksti"; $alasvetovalikon_id = "merkit1"; $tekstityokaluolio = new Tekstityokalupalkki($muokattavan_elementin_id, $alasvetovalikon_id); $tekstimuokkauspainikkeet = $tekstityokaluolio->luo_painikkeet(Tekstityokalupalkki::$PERUSPAINIKKEET_JA_MATEMAATTISET, $parametriolio->kaavakieli); // Kaavakielivalikko:================================================== $kaavakielet = new Kaavakieli(); $select_maaritteet = array(Attr::onchange("muuta_kaavakieli", array("this.value", Yleiset_arvot::$kaavakieli_name, $muokattavan_elementin_id, $alasvetovalikon_id))); $option_maaritteet = array(); $kaavakielivalikko = $kaavakielet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $kaavakieli, Tekstit::$kaavakieli_otsikko); //===================================================================== // Näkyvyysvalikko: $nakyvyydet = new Nakyvyys(); $select_maaritteet = array(Attr::name(Tehtavakontrolleri::$tehtava_name_nakyvyys)); $option_maaritteet = array(); $otsikko = Tekstit::$nakyvyys_valikko_otsikko; $nakyvyysvalikko = $nakyvyydet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $nakyvyys, $otsikko); // Sitten palat yhteen: $mj = "<form align='left' method='post' id='tehtavalomake' class='lomake'" . "action='index.php" . "?id_teht=" . $id_teht . "&kieli_id=" . $parametriolio->kieli_id . "&taso_kokon=" . $parametriolio->taso_kokon . "&oppiaine_kokon=" . $parametriolio->oppiaine_kokon . "&" . Oliotyyppi::$naytettava_name . "=" . Oliotyyppi::$TEHTAVA . "&id_kokon=" . $id_kokon . "&uusi=" . $uusi . $koostetieto . "#tehtava" . $id_teht . "'/>" . $ilmoitus_teht . "<table summary='uudet_tiedot'>" . "<tr><td colspan=2><b>" . Tekstit::$tehtavalomake_ohje . "</b></td>" . "</tr>" . "<tr><td> " . Tekstit::$tehtavalomake_otsikko . ": </td><td><input type='text'\n size='80' maxlength='{$otsikon_maxpituus}'" . "name='otsikko_teht' id='otsikkoteksti' value='{$otsikko_teht}'\n title='" . Tekstit::$tehtavalomake_otsikkotitle . "'/></td>" . "</tr>" . "<tr><td>" . Tekstit::$tehtavalomake_vaikeustaso . ": </td>" . "<td>" . $vaikeustaso_html . $nakyvyysvalikko . $esikatselunappi . "</td>" . "</tr>" . "<tr><td></td>" . "<td>" . $kaavakielivalikko . "</td>" . "</tr>" . "<tr><td></td><td>" . $tekstimuokkauspainikkeet . "</td></tr>" . "<tr><td>" . Tekstit::$tehtavalomake_tehtavananto . ":</td>" . "<td colspan='2'><textarea id='tehtavateksti' cols='85' rows='20'\n maxlength =" . $tehtavananto_maxpituus . " name='tehtavananto_teht'>" . $tehtavananto_teht . "</textarea></td></tr>" . "<tr><td></td><td align='left'>" . $submitnappi . $perunappi . "</td></tr>" . "</table>" . "</form>"; return $mj; }
/** * Adds a new attribute. * * @param object Attr * @return object Attr * @access public */ function &setAttributeNodeNS(&$newAttr) { if (!Attr::isInherited($newAttr)) { return $this->raiseError(HIERARCHY_REQUEST_ERR); } if ($this->ownerDocument->_ID != $newAttr->ownerDocument->_ID) { return $this->raiseError(WRONG_DOCUMENT_ERR); } if ($newAttr->ownerElement != null) { return $this->raiseError(INUSE_ATTRIBUTE_ERR); } $newAttr->ownerElement =& $this; return $this->attributes->setNamedItemNS(&$newAttr); }
public function hae_tehtavakoodi() { $sulkemisnappi = "<button onclick='sulje_esikatselu()' title='" . Painikkeet::$KOODIKATSELU_SULJE_TITLE . "'>" . Painikkeet::$KOODIKATSELU_SULJE_VALUE . "</button>"; $koodi = Html::luo_div($sulkemisnappi, array(Attr::style("text-align: center"))); $id = $this->get_parametriolio()->id_teht; $teht = new Tehtava($id, $this->get_tietokantaolio()); if ($teht->olio_loytyi_tietokannasta) { $koodi .= nl2br(htmlspecialchars($teht->getOtsikko())) . "<br/>" . nl2br(htmlspecialchars($teht->getTehtavananto())); } else { $koodi .= Tekstit::$tehtava_ilm_ei_loytynyt; } return $koodi; }
/** * 属性列表 * @param integer $catalog [description] * @param string $scope [description] * @return [type] [description] */ public static function lists($catalog = 0, $scope = 'post') { $model = new Attr(); if ($catalog) { $attrModel = $model->findAll(array('condition' => 'scope=:scope AND catalog_id=:catalogId', 'params' => array('scope' => $scope, 'catalogId' => $catalog), 'order' => 'sort_order DESC,id DESC')); } else { $attrModel = $model->findAll(array('condition' => 'scope=:scope ', 'params' => array('scope' => $scope), 'order' => 'sort_order DESC,id DESC')); } foreach ((array) $attrModel as $key => $row) { $data[$key] = self::_attr2val($row); } return $data; }
/** * Palauttaa html-lomakkeen, jonka avulla voidaan tallentaa uuden * kokonaisuuden tiedot tietokantaan tai muokata vanhoja. Lomakkeen html-id on * 'kokonaisuuslomake'. * * @param <type> $id_kokon * @param <type> $omaid * @param <type> $uusi * @param <type> $ilmoitus_kokon * @param Tietokantaolio $tietokantaolio * @param <type> $oppiaine_kokon * @param <type> $otsikko_kokon * @param <type> $tiivis_kokon * @param <type> $selitys_kokon * @param <type> $taso_kokon * @param <type> $jarjestysnro_kokon * @param <type> $laajennetun_id_kokon * @param <type> $ylakokonaisuuden_id_kokon * @param <type> $kieli_id * @param <type> $toiminnan_name_arvo * @param Kokonaisuuskontrolleri $kokonaisuuskontrolleri Tämä vähän * suurellinen, mutten äkkiä parempaa keinoa keksinyt (15.1.2015) * @param int $kaavakieli viittaa käytettävään matematiikan kaavakieleen * (28.11.2015) * @param Elementti $elementti on Elementti-luokan olio, johon tämä * kokonaisuus kuuluu, tai sitten Elementti::$MUUTTUJAA_EI_MAARITELTY, * ellei tulla koosteesta. * (20.2.2016) * @return <type> */ function nayta_kokonaisuuslomake($id_kokon, $omaid, $uusi, $ilmoitus_kokon, $tietokantaolio, &$oppiaine_kokon, &$otsikko_kokon, &$tiivis_kokon, &$selitys_kokon, &$taso_kokon, &$jarjestysnro_kokon, &$laajennetun_id_kokon, &$ylakokonaisuuden_id_kokon, &$kieli_id, &$nakyvyys_kokon, $toiminnan_name_arvo, $kokonaisuuskontrolleri, $kaavakieli, $elementti, $elemryhma) { $mj = ""; // Lomakkeen html-koodi. $otsikon_maxpituus = 150; $submitnappi = ""; $perunappi = ""; $uusi_kuva_tiivis = ""; $uusi_kuva_seli = ""; $tulo_koosteesta = false; // True, if coming from Kooste (Package). $kokonaisuus = ""; // Tämä haetaan tietokannasta. /*$uusi_kuva_tiivis = ""; $uusi_kuva_seli = "";*/ $submit_kesken_nappi = "<input type='submit'" . "name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$TALLENNA_KESKEN_KOKON_VALUE . "' " . "title='" . Painikkeet::$TALLENNA_KESKEN_KOKON_TITLE . "'/>"; $esikatselunappi = "<button type='button' " . "onclick='nayta_kokonaisuuden_esikatselu(" . $id_kokon . ")'" . "title='" . Painikkeet::$ESIKATSELU_TITLE . "'/>" . Painikkeet::$ESIKATSELU_VALUE . "</button>"; $elementtitiedot = ""; // urliin lisättävät koosteen ja elementin idt if ($uusi) { $submitnappi = "<input type='submit'\n name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$TALLENNA_UUSI_KOKON_VALUE . "'/>"; $perunappi = "<input type='submit'\n name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$PERU_UUDEN_KOKON_TALLENNUS_VALUE . "'/>"; } else { // Haetaan ajantasalla olevat tiedot tietokannasta. Aiemmin // tiedot tuotiin kiinteästi painikelomakkeeseen, mutta tällöin // tämän jälkeen olioon tehdyt muutokset eivät näkyneet, jos // alkoi tehdä muutoksia olioon. $kokonaisuus = new Kokonaisuusolio($id_kokon, $tietokantaolio); if ($kokonaisuus->olio_loytyi_tietokannasta) { $oppiaine_kokon = $kokonaisuus->getOppiaine(); // Alla ovat tärkeitä, jotta esim. JS-koodi toimii, eikä // ala kehittämään mitään ylimääräistä muokatessa. Huom: // stripslash pilaa latex-koodin, eikä ilm tarpeellinen. $otsikko_kokon = htmlspecialchars($kokonaisuus->getOtsikko(), ENT_QUOTES, "UTF-8", true); $tiivis_kokon = htmlspecialchars($kokonaisuus->getTiivis(), ENT_QUOTES, "UTF-8", true); $selitys_kokon = htmlspecialchars($kokonaisuus->getSelitys(), ENT_QUOTES, "UTF-8", true); /*$otsikko_kokon = stripslashes($kokonaisuus->getOtsikko()); $tiivis_kokon = stripslashes($kokonaisuus->getTiivis()); $selitys_kokon = stripslashes($kokonaisuus->getSelitys());*/ $taso_kokon = $kokonaisuus->getTaso(); $jarjestysnro_kokon = $kokonaisuus->getJarjestysnro(); $laajennetun_id_kokon = $kokonaisuus->getLaajennetun_id(); $ylakokonaisuuden_id_kokon = $kokonaisuus->getYlakokonaisuuden_id(); $nakyvyys_kokon = $kokonaisuus->getNakyvyys(); $submitnappi = "<input type='submit'" . "name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$TALLENNA_MUOKKAUS_KOKON_VALUE . "'" . "title='" . Painikkeet::$TALLENNA_MUOKKAUS_KOKON_TITLE . "'/>"; $perunappi = "<input type='submit'\n name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$PERU_KOKON_MUUTOSTEN_TALLENNUS_VALUE . "'/>"; //============================================================== // Täällä katsotaan, onko käyttäjä tulossa koosteesta ja // mahdollistetaan kätevä paluu takaisin.======================= if ($elementti instanceof Elementti) { $kooste_id = $elementti->get_arvo(Elementti::$sarakenimi_kooste_id); $elem_id = $elementti->get_id(); //$koostenakymat = new Koostenakymat(); //$perunappi = $koostenakymat-> // nayta_inputpainike_paluu_koosteeseen_no_form(); $elementtitiedot = "&" . Koostekontrolleri::$kooste_name_id . "=" . $kooste_id . "&" . Koostekontrolleri::$elementti_name_id . "=" . $elem_id; $tulo_koosteesta = true; } if ($elemryhma instanceof Elementtiryhma) { $elemryhma_id = $elemryhma->get_id(); $elementtitiedot .= "&" . Koostekontrolleri::$elemryhma_name_id . "=" . $elemryhma_id . "&"; $tulo_koosteesta = true; } //========= Kuvan lisäyspainikkeet: paluu vanhaan ideaan =========== /* Uuden kuvan lisäyspainike tiivistelmään*/ $uusi_kuva_tiivis = "<input type='submit'" . "name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$LISAA_KUVA_MANUAALI_TIIVIS_KOKON_VALUE . "'" . "title='" . Painikkeet::$LISAA_KUVA_MANUAALI_TIIVIS_KOKON_TITLE . "'/>"; /* Uuden kuvan lisäyspainike selitykseen:*/ $uusi_kuva_seli = "<input type='submit'" . "name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$LISAA_KUVA_MANUAALI_SELITYS_KOKON_VALUE . "'" . "title='" . Painikkeet::$LISAA_KUVA_MANUAALI_SELITYS_KOKON_TITLE . "'/>"; //================================================================== } else { $this->lisaa_virheilmoitus(Tekstit::$ilm_kokon_ei_loytynyt); return $this->tulosta_virheilmoitukset() . $perunappi; } } // End of päivitetään vanhaa. // NÄkyvyysvalikko: ==================================================== $oletusarvo = $nakyvyys_kokon; $nakyvyydet = new Nakyvyys(); $select_maaritteet = array(Attr::name(Kokonaisuuskontrolleri::$kokon_name_nakyvyys), Attr::title(Tekstit::$nakyvyys_valikko_otsikko_title)); $option_maaritteet = array(); $nakyvyysvalikko = $nakyvyydet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $oletusarvo, Tekstit::$nakyvyys_valikko_otsikko); //====================================================================== // Ilmoitus otetaan mukaan, jos ei tyhjä: if ($ilmoitus_kokon != "") { $ilmoitus_kokon = "<span class='kokonaisuuslomakeilmoitus'>" . $ilmoitus_kokon . "</span><br />"; } $oppiainehtml = Tekstit::$oppiainevalikko_otsikko . ": <b>" . Oppiaineet::hae_oppiaineen_nimi($oppiaine_kokon) . "</b>"; $koulutasohtml = Tekstit::$tasovalikko_otsikko . ": <b>" . Koulutasot::hae_koulutason_nimi($taso_kokon, false) . "</b>"; // Kielivalintavalikko: VALINTA POISTETTU toimintavaikeuksien takia! //$kielivalintahtml = nayta_kielivalikko($kieli_id); $kielivalintahtml = Tekstit::$kielivalikko_otsikko . ": <b>" . Kielet::hae_kielen_nimi($kieli_id) . "</b>"; // Ylempi kokonaisuustaso $ylakokonvalikko = $this->nayta_ylakokonaisuusvalikko($id_kokon, $tietokantaolio, $ylakokonaisuuden_id_kokon, $oppiaine_kokon, $kieli_id, $taso_kokon, $uusi, $omaid, $kokonaisuuskontrolleri); // Tekstinmuokkaus tiivistelmää varten: $muokattavan_elementin_id_tii = "tiivis_tekstiruutu"; $alasvetovalikon_id = "merkit1_tiivis"; $tekstityokaluolio = new Tekstityokalupalkki($muokattavan_elementin_id_tii, $alasvetovalikon_id); // Nykyään nämä toimii sekä tiivistelmälle että selitykselle. // Lomake osaa huomata, kunpaa ollaan muokkaamassa: $tekstimuokkauspainikkeet = $tekstityokaluolio->luo_painikkeet(Tekstityokalupalkki::$PERUSPAINIKKEET_JA_MATEMAATTISET, $kaavakieli); // Tekstinmuokkaus selitystä varten: $muokattavan_elementin_id_sel = "selitys_tekstiruutu"; // Kaavakielivalikko:================================================== $kaavakielet = new Kaavakieli(); $select_maaritteet = array(Attr::onchange("muuta_kaavakieli", array("this.value", Yleiset_arvot::$kaavakieli_name, $muokattavan_elementin_id_tii, $alasvetovalikon_id))); $option_maaritteet = array(); $kaavakielivalikko = $kaavakielet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $kaavakieli, Tekstit::$kaavakieli_otsikko); //===================================================================== if ($uusi) { // Ellei id-kokon-arvoa määritellä täällä, tulee sessiomuuttujasta vanha. $id_kokon = Kokonaisuusolio::$kokon_ei_maaritelty; } // Vanha ylakokon_id otetaan talteen, jotta lapsiasiat pysyvät // oikealla tolalla. Haetaan mahdollisimman tuoreet tiedot. $ylakokonaisuuden_id_vanha = $ylakokonaisuuden_id_kokon; if ($kokonaisuus instanceof Kokonaisuusolio) { $ylakokonaisuuden_id_vanha = $kokonaisuus->getYlakokonaisuuden_id(); } /*lisaaTagit(elementin_id, elementin_tunnus, class_arvo, id_arvo*/ // Sitten palat yhteen: $mj = "<form align='left' method='post' id='kokonaisuuslomake'" . "action='index.php?id_kokon=" . $id_kokon . "&ylakokonaisuuden_id_vanha=" . $ylakokonaisuuden_id_vanha . "&taso_kokon=" . $taso_kokon . "&kieli_id=" . $kieli_id . "&uusi=" . $uusi . $elementtitiedot . "'/>" . $ilmoitus_kokon . "<b>" . Tekstit::$kokonlomake_ohje . "</b>" . $esikatselunappi . "<table summary='uudet_tiedot'>" . "<tr><td>" . Tekstit::$kokonlomake_otsikko . ": </td><td><input type='text'\n size='55' maxlength='{$otsikon_maxpituus}'" . "name='otsikko_kokon' value='{$otsikko_kokon}'" . "id='otsikkotekstikentta'" . "title='" . Tekstit::$kokonlomake_otsikkotitle . "'/>" . "</tr>" . "<tr><td></td>" . "<td>" . " " . $ylakokonvalikko . " " . $nakyvyysvalikko . "</td>" . "</tr>" . "<tr><td></td><td>" . $kaavakielivalikko . " " . $oppiainehtml . " " . $koulutasohtml . " " . $kielivalintahtml . "</td></tr>" . "<tr><td></td><td colspan='2'>" . $tekstimuokkauspainikkeet . "</td></tr>" . "<tr><td>" . Tekstit::$kokonlomake_tiivis . ":</td>" . "<td colspan='2'><textarea cols='80' rows='18' maxlength = '10000'\n id='" . $muokattavan_elementin_id_tii . "' name='tiivis_kokon' \n onfocus='kirjoituskentta_onfocus(\"tiivis_tekstiruutu\")'>" . $tiivis_kokon . "</textarea></td></tr>" . "<tr><td>" . Tekstit::$kokonlomake_selitys . ":</td>" . "<td colspan='2'><textarea cols='80' rows='9' maxlength = '10000'\n id='" . $muokattavan_elementin_id_sel . "' name='selitys_kokon'\n onfocus='kirjoituskentta_onfocus(\"selitys_tekstiruutu\")'>" . $selitys_kokon . "</textarea></td></tr>" . "<tr><td></td><td align='left'>" . $submitnappi . $submit_kesken_nappi . $uusi_kuva_tiivis . $uusi_kuva_seli . $perunappi . "</td></tr>" . "</table>" . "</form>"; return $mj; }
/** * 文档数据导出 * 导出及备份系统制定字段的数据 * 20130419 容易导致混乱,有整体导出即可,本功能暂停开发 */ public function actionCExport() { exit; $tableName = isset($_REQUEST['name']) ? $_REQUEST['name'] : ''; //表明 //验证表明是否为实体表 if (!preg_match('/^item/i', $tableName)) { $this->redirect_back(); } $selectedFields = isset($_POST['checked']) ? $_POST['checked'] : array(); //选中 //获取数据库对象和所有字段列表 $db = CardItem::model()->getDb(); $nameInfo = explode('_', $tableName); $attr = Attr::model()->getAll($nameInfo[1], $nameInfo[2]); $fields = array_merge(array('name', 'edittime', 'addtime'), array_keys($attr)); //获取字段列表 //获取需要导出的字段列表,并导出 if (!empty($_POST)) { $contents = ""; //内容 array_unshift($selectedFields, '_id'); //加入必选字段id //data 获取文档数据 $cursor = $db->selectCollection($tableName)->find(array(), $selectedFields); //查询指定字段数据 foreach ($cursor as $one) { $one_id = is_object($one['_id']) ? '' . $one['_id'] : $one['_id']; //id类型处理 unset($one['_id']); //$contents .= '{_id:"'.$one_id.'"},{$set:'.$this->_exportJSON($one).'}'."\n"; $contents .= $this->json_unicode_utf8(json_encode(array('_id' => $one_id))) . ',{"$set":' . $this->json_unicode_utf8(json_encode($one)) . '}' . "\n"; } unset($cursor); $fiels_ext = ''; array_shift($selectedFields); //移出顶部的_id $sfcount = count($selectedFields); //字段数量 if ($sfcount > 2) { $fiels_ext = $selectedFields[0] . ',' . $selectedFields[1] . '...[' . $sfcount . ']'; } else { $fiels_ext = implode(',', $selectedFields); } file_put_contents(yiiBase::getPathOfAlias($this->dirpath . '.export') . '/' . date("YmdHis") . '-' . $tableName . '-' . $fiels_ext . '.js', $contents); } //扫描导出文件并获取列表 $exportTables = $this->findDir($this->dirpath . '.export', 'js'); $exe_msg = $this->_exe_message(); $this->render('cexport', array('fields' => $fields, 'selectedFields' => $selectedFields, 'tableName' => $tableName, 'exportTables' => $exportTables, 'exe_msg' => $exe_msg)); }
/** * Näyttää poistovahvistuskyselyn ja painikkeet, joista joko hyväksytään * tai perutaan poisto. * @param Elementtiryhma $poistettava Poistettava Elementtiryhma-luokan * olio, joka on löytynyt tietokannasta (varmistettu kutsuvassa funktiossa). * @return string */ public function nayta_elemryhman_poistovahvistuskysely($poistettava) { $otsikko = $poistettava->get_arvo(Elementtiryhma::$sarakenimi_nimi); $kooste_id = $poistettava->get_arvo(Elementtiryhma::$sarakenimi_kooste_id); //========= Vahvistuspainike ==================================== $form_maaritteet = array(Attr::action(Attr::muotoile_action_arvo("index.php", array(Koostekontrolleri::$elemryhma_name_id, Koostekontrolleri::$kooste_name_id), array($poistettava->get_id(), $kooste_id))), Attr::classs("summary")); $input_maaritteet = array(Attr::name(Toimintonimet::$koostetoiminto), Attr::value(Painikkeet::$kooste_vahvista_poista_ryhmittely_value), Attr::title(Painikkeet::$kooste_vahvista_poista_ryhmittely_title), Attr::classs("btn btn-" . Koostenakymat::$btn_type_summary . " btn-" . Koostenakymat::$btn_size_summary)); $poistopainike = Html::luo_forminput_painike($form_maaritteet, $input_maaritteet); //============================================================== $paluupainike = $this->nayta_painike_paluu_koosteeseen($poistettava->get_arvo(Elementtiryhma::$sarakenimi_kooste_id), Elementti::$MUUTTUJAA_EI_MAARITELTY); $vahvistuskys = Html::luo_div(Tekstit::$elementtiryhma_poiston_vahvistuskysymys, array(Attr::classs("keskitys"), Attr::style("font-size: 120%; color: red"))) . Html::luo_otsikko($otsikko, array(), 1) . Html::luo_div($poistopainike . $paluupainike, array(Attr::classs("keskitys"))); return $vahvistuskys; }
/** * Creates the html for head element with addresses for Bootstrap. * @return type */ function create_head() { $text = Html::luo_head(Html::luo_title(Tekstit::$home_title, array()) . Html::luo_meta(array(Attr::charset("utf-8"))) . Html::luo_meta(array(Attr::name("viewport"), Attr::content("width=device-width, initial-scale=1"))), array()) . Html::luo_link_to_stylesheet("http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css") . Html::luo_link_to_stylesheet("../kokonaisuudet/tyylit/perusmuotoilut.css") . Html::luo_script_to_js("../kokonaisuudet/ajax_ja_js/metodit.js") . Html::luo_script_to_js("../kokonaisuudet/ajax_ja_js/metodit.js") . Html::luo_script_to_js("../kokonaisuudet/ajax_ja_js/tekstinmuokkausmetodit.js") . Html::luo_script_to_js("../kokonaisuudet/ajax_ja_js/ajaxkirjasto.js") . Html::luo_script_to_js("https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js") . Html::luo_script_to_js("http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js") . Html::luo_script_to_js("../kokonaisuudet/ajax_ja_js/bootstrap_code.js"); return $text; }
/** * Huom! Metodin pitää palauttaa boolean-arvo. True aiheuttaa * lomakkeen lähettämisen, false taas peruuttaa sen. this.-jutut ok! */ public static function onsubmit($metodinimi, $parametri_array) { // Lisätään return ennen metodinimeä, jotta homma toimii. $m = new Attr("onsubmit", "return " . $metodinimi, true); $m->set_js_parametrit($parametri_array); return $m; }
/** * Creates the html for copyright declaration. * @return type */ function create_copyright() { $text = Html::luo_a_linkto("http://creativecommons.org/licenses/by-sa/4.0/", Html::luo_img(array(Attr::alt("Creative Commons -licence"), Attr::style("border-width:0"), Attr::src("https://i.creativecommons.org/l/by-sa/4.0/88x31.png"))), array(Attr::rel("licence"), Attr::target_blank())) . Html::luo_span(Tekstit::$home_copyright_before_link, array()) . Html::luo_a_linkto("http://creativecommons.org/licenses/by-sa/4.0/", " Creative Commons Attribution-ShareAlike 4.0 International", array(Attr::rel("licence"), Attr::target_blank())) . Html::luo_span(Tekstit::$home_copyright_after_link, array()); return $text; }
/** * Palauttaa muotoillun merkinnän taulukkosoluun pujotettuna. * Yksirivinen viittaa siihen, että koko kaavarivissä on vain yksi kerros. * @param bool $yksirivinen * @return type */ public function get_muotoiltu_html($yksirivinen) { if ($yksirivinen) { $rowspan = 1; } else { $rowspan = 2; } $html = Html::luo_tablesolu(Html::luo_span($this->syotehtml, array(Attr::classs(Kaava::$class_isosulku))), array(Attr::rowspan($rowspan))); return $html; }
/** * Hakee annetusta tekstistä pikkukaavat eli merkkijonot, jotka ovat * merkkijonojen $pikkukaavan_alku ja $pikkukaavan_loppu välissä, ja * muotoilee kaavat samantyylisiksi kuin varsinaiset kaavat. * * Hyödyntää metodia php_yleinen/php_yleismetodit.php: * 'hae_merkkijonot($teksti, $alkumj, $loppumj, $hae_kaikki)' * * Jos tekstistä löytyy $kaavan_alku mutta ei $kaavan_loppu, ei kyseistä * merkkijonoa muokata. * * Ellei mitään kaavaa löydy, tai tapahtuu muuta kummaa, palautetaan sama teksti. * Muuten palautetaan saatu teksti, jossa kaavamerkinnät on korvattu html- * muotoiluilla. * * Pikkukaavoissa ei voi käyttää neliöjuuria tai murtolukumuotoja, vaan * kyse on lähinnä fonttittyyleistä, koosta, joidenkin merkkien muotoilusta * yms. Pikkukaavat ovat useimmiten rivien osia, joten niitä ei aseteta * taulukon sisään. * * @param <type> $teksti * @param <type> $kaavan_alku * @param <type> $kaavan_loppu * @param <type> $jako_alku * @param <type> $jako_loppu * @return string muotoiltu html-koodi */ static function muotoile_pikkukaavat($teksti) { $palautus = $teksti; // Haetaan tekstistä kaavat taulukkoon: $alkumj = Kaavaeditori::$pikkukaavan_alku; $loppumj = Kaavaeditori::$pikkukaavan_loppu; $hae_kaikki = true; $raakakaavat = Yleismetodit::hae_merkkijonot($teksti, $alkumj, $loppumj, $hae_kaikki); /* Tarkempaan työhön aletaan vain, jos kaavoja löytyy */ if (!empty($raakakaavat)) { $valmiit_kaavat = array(); // Käydään läpi jokainen raakakaava: HUOM katso metodi // muotoile_merkit() tiedostossa yhteiset/php_yhteismetodit.php! foreach ($raakakaavat as $kaava) { // Muotoillaan merkkejä hiukan. Miinusmerkit on kiva olla // pitkiä (ja hiukan tekstistä erillään). Yhdysviivat kaavoissa // merkitsevät käytännössä aina miinusmerkkiä, joten muutetaan ne // oikeiksi. Tehdään se täällä, koska // tekstissä väliviivaa tarvitaan kuitenkin. // NÄIN EI TOIMI MIKSI?? $kaava = str_replace("-",Merkit::$miinusmerkki,$kaava); $kaava = str_replace("-", "−", $kaava); // Näin taas toimii! $kaava = str_replace("+", "<span class='erillaan'>+</span>", $kaava); // Seuraava estää merkinnän z^*, jota käytetään kompleksiluvuissa. //$kaava = str_replace("*","<span class='erillaan'>⋅</span>", $kaava); // Tämäkin aiheuttaa taas sen ongelman, ettei kaavaan voi lisätä // esimerkiksi css-määrettä font-style väliviivan takia.. //$kaava = str_replace("−","<span class='erillaan'>−</span>", $kaava); $kaava = str_replace("−", " − ", $kaava); // Tämä täällä, koska muualla pitää olla mahis laittaa // esim. merkki => (ohjelmointi tms.) // Huom! =-merkkiin ei voi lisätä yleensä html-koodia, koska merkkiä käytetään // html:n sisällä (attribuutit)" $kaava = str_replace("=", " = ", $kaava); // Sama kuin yllä: $kaava = str_replace(":", " : ", $kaava); // Nää oli ennen muotoile_kaavat yhteismetodissa: //================ Kokeillaan toimiiko 1.12.2015 =============== $kaava = str_replace("⋅", "<span class='erillaan'>⋅</span>", $kaava); $kaava = str_replace("≈", "<span class='erillaan'>≈</span>", $kaava); $kaava = str_replace("≠", "<span class='erillaan'>≠</span>", $kaava); $kaava = str_replace("║", "<span class='erillaan'>║</span>", $kaava); //================ Kokeillaan toimiiko loppu =================== // Tehdään kursivoinnin poisto ennen varsinaista kaavamuotoilua. $kaava = str_replace("(ioff_b)", "<span class='ital_off'>", $kaava); $kaava = str_replace("(ioff_e)", "</span>", $kaava); $kaavahtml = Html::luo_span($kaava, array(Attr::classs(Kaavaeditori::$pikkukaava_class))); array_push($valmiit_kaavat, $kaavahtml); } // Lisätään jokaiseen raakakaavaan alku- ja // loppumerkit, jotta myös kyseiset merkit poistuvat. $kaavojen_lkm = sizeof($raakakaavat); for ($i = 0; $i < $kaavojen_lkm; $i++) { $raakakaavat[$i] = Kaavaeditori::$pikkukaavan_alku . $raakakaavat[$i] . Kaavaeditori::$pikkukaavan_loppu; // Käydään vielä läpi valmiit kaavat ja suoristetaan vielä sulut. // Huomaa, ettei tätä voi tehdä aiemmin, koska sulut ovat osa // monia erikoismerkintöjä. $valmiit_kaavat[$i] = str_replace("(", "<span class='ital_off'>(</span>", $valmiit_kaavat[$i]); $valmiit_kaavat[$i] = str_replace(")", "<span class='ital_off'>)</span>", $valmiit_kaavat[$i]); } // Korvataan tekstin raakakaavat valmiilla kaavoilla: $palautus = str_replace($raakakaavat, $valmiit_kaavat, $teksti); } return $palautus; }