Ejemplo n.º 1
0
 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);
         }
     }
 }
Ejemplo n.º 2
0
 /**
  * 属性内容
  *
  * @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));
 }
Ejemplo n.º 3
0
 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')));
     }
 }
Ejemplo n.º 4
0
 /**
  * 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));
 }
Ejemplo n.º 5
0
 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/>';
         }
     }
 }
Ejemplo n.º 6
0
 /**
  * 自定义字段
  */
 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));
 }
Ejemplo n.º 7
0
 /**
  * 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;
 }
Ejemplo n.º 8
0
 /**
  * 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;
     }
 }
Ejemplo n.º 9
0
 /**
  * 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;
 }
Ejemplo n.º 10
0
 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;
 }
Ejemplo n.º 11
0
 /**
  * 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;
 }
Ejemplo n.º 12
0
 /**
  * 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;
 }
Ejemplo n.º 13
0
 /**
  * 更新
  *
  * @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')));
 }
Ejemplo n.º 14
0
 public function setNakyvyysmerkkiPrivate()
 {
     $this->nakyvyysmerkki = Html::luo_img(array(Attr::alt("Private"), Attr::src("../kuvat/ympyra_pun.png")));
 }
Ejemplo n.º 15
0
                    $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>";
Ejemplo n.º 16
0
/**
 * 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;
}
Ejemplo n.º 17
0
 /**
  * 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;
 }
Ejemplo n.º 18
0
 /**
  * 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;
 }
Ejemplo n.º 19
0
 /**
  * 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&auml! (" . $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;
 }
Ejemplo n.º 20
0
 /**
  * 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);
 }
Ejemplo n.º 21
0
 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;
 }
Ejemplo n.º 22
0
 /**
  * 属性列表
  * @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;
 }
Ejemplo n.º 23
0
 /**
  * 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;
 }
Ejemplo n.º 24
0
 /**
  * 文档数据导出
  * 导出及备份系统制定字段的数据
  * 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));
 }
Ejemplo n.º 25
0
 /**
  * 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;
 }
Ejemplo n.º 26
0
 /**
  * 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;
 }
Ejemplo n.º 27
0
 /**
  * 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;
 }
Ejemplo n.º 28
0
/**
 * 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;
}
Ejemplo n.º 29
0
 /**
  * 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;
 }
Ejemplo n.º 30
0
 /**
  * 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;
 }