public function actionDelete($id) { $success = false; if (is_numeric($id)) { $model = Lists::model()->findByPk($id); $items = ListsItems::model()->findAllByAttributes(array("list_id" => $model->id)); if (is_object($model) && $model->delete()) { $success = true; if (is_array($items) && count($items)) { foreach ($items as $item) { $item->delete(); } } } } echo json_encode(array('status' => $success ? 'success' : 'fail')); }
<div class="row"> <div class="col-lg-12"> <div class="panel panel-default"> <div class="panel-heading"> <a href="/admin/catalog" class="btn btn-success" title="Вернуться к списку товаров"><i class="fa fa-reply"></i> К списку товаров</a> <a href="/admin/catalog/categories/add" class="btn btn-success" title="Добавить категорию"><i class="fa fa-plus"></i> Добавить категорию</a> </div> <div class="panel-body"> <?php $this->widget('CCustomGridView', array('id' => 'catalog-categories-grid', 'dataProvider' => $model->search(), 'filter' => $model, 'cookey' => 'catalog-categories-size', 'columns' => array(array('name' => 'id', 'headerHtmlOptions' => array('style' => 'width: 100px')), array('class' => 'booster.widgets.TbEditableColumn', 'name' => 'name', 'editable' => array('url' => $this->createUrl('eip'), 'placement' => 'right'), 'filter' => CHtml::tag("input", array("name" => "CatalogCategories[name]", "type" => "text", "class" => "form-control"))), array('class' => 'booster.widgets.TbEditableColumn', 'name' => 'url', 'editable' => array('url' => $this->createUrl('eip'), 'placement' => 'right'), 'filter' => CHtml::tag("input", array("name" => "CatalogCategories[url]", "type" => "text", "class" => "form-control"))), array('class' => 'booster.widgets.TbEditableColumn', 'name' => 'lang_id', 'value' => 'ListsItems::model()->findByPk($data->lang_id)->name', 'editable' => array('url' => $this->createUrl('eip'), 'placement' => 'right', 'type' => 'select', 'source' => CHtml::listData(ListsItems::model()->findAllByAttributes(array("list_id" => 11)), "id", "name")), 'filter' => CHtml::dropDownList("CatalogObjects[lang_id]", '', array_merge(array('' => ''), CHtml::listData(ListsItems::model()->findAllByAttributes(array("list_id" => 11)), "id", "name")), array("class" => "form-control"))), array('class' => 'CCustomTogleColumn', 'toggleAction' => 'toggleActivity', 'name' => 'is_active', 'headerHtmlOptions' => array('style' => 'width: 120px')), array('header' => 'Действие', 'class' => 'CCustomButtonColumn')), 'pager' => array('class' => 'CCustomPager'))); ?> </div> </div> </div> </div>
?> </li> <?php } ?> </ul> </div> <?php } ?> <div class="row"> <div class="col-lg-12"> <div class="form-group"> <label>Язык</label> <?php $langs = ListsItems::model()->findAllByAttributes(array("list_id" => 11)); if (is_array($langs) && count($langs)) { ?> <select name="data[lang_id]" class="form-control"> <?php foreach ($langs as $lang) { ?> <option value="<?php echo $lang->id; ?> "><?php echo CHtml::encode($lang->name); ?> </option> <?php }
<div class="row"> <div class="col-lg-12"> <div class="panel panel-default"> <div class="panel-heading"> <a href="/admin/orders/add" class="btn btn-success" title="Добавить заказ"><i class="fa fa-plus"></i> Добавить заказ</a> </div> <div class="panel-body"> <?php $this->widget('CCustomGridView', array('id' => 'orders-grid', 'dataProvider' => $model->search(), 'filter' => $model, 'cookey' => 'orders-size', 'columns' => array(array('name' => 'id', 'headerHtmlOptions' => array('style' => 'width: 100px')), array('name' => 'customer_id', 'type' => 'raw', 'value' => 'Users::model()->findByPk($data->customer_id)->login', 'filter' => CHtml::listData(Users::model()->findAll(), "id", "login")), array('class' => 'booster.widgets.TbEditableColumn', 'name' => 'timestamp', 'value' => 'date("d.m.Y H:i", $data->timestamp)', 'editable' => array('url' => $this->createUrl('eip'), 'placement' => 'right', 'type' => 'date'), 'filter' => CHtml::tag("input", array("name" => "Orders[timestamp]", "type" => "text", "class" => "form-control datepicker"))), array('class' => 'booster.widgets.TbEditableColumn', 'name' => 'total_price', 'editable' => array('url' => $this->createUrl('eip'), 'placement' => 'right'), 'filter' => CHtml::tag("input", array("name" => "Orders[total_price]", "type" => "text", "class" => "form-control"))), array('class' => 'booster.widgets.TbEditableColumn', 'name' => 'status', 'value' => 'ListsItems::model()->findByPk($data->status)->name', 'editable' => array('url' => $this->createUrl('eip'), 'placement' => 'right', 'type' => 'select', 'source' => CHtml::listData(ListsItems::model()->findAllByAttributes(array("list_id" => 9)), "id", "name")), 'filter' => CHtml::dropDownList("Orders[status]", '', CHtml::listData(ListsItems::model()->findAllByAttributes(array("list_id" => 9)), "id", "name"), array("class" => "form-control"))), array('header' => 'Действие', 'class' => 'CCustomButtonColumn')), 'pager' => array('class' => 'CCustomPager'))); ?> </div> </div> </div> </div>
public function setValue($val) { if (!is_object($this->object)) { return false; } switch ($this->data_type) { case 'multiple': $fv = ListsFieldsValues::model()->findAllByAttributes(array("field_id" => $this->id, "object_id" => $this->object->id)); $exists = array(); $hasErrors = false; if (is_array($fv) && count($fv)) { foreach ($fv as $item) { if (!in_array($item->int_val, $val)) { $item->delete(); } else { $exists[] = $item->int_val; } } } if (is_array($val) && count($val)) { foreach ($val as $v) { if (!in_array($v, $exists)) { $listItem = ListsItems::model()->findByPk($v); if (is_object($listItem)) { $newFieldValue = new ListsFieldsValues(); $newFieldValue->setAttributes(array("field_id" => $this->id, "object_id" => $this->object->id, "int_val" => $v)); if (!$newFieldValue->save()) { $hasErrors = true; } } } } } return !$hasErrors; case 'list': $hasErrors = true; $fv = ListsFieldsValues::model()->findByAttributes(array("field_id" => $this->id, "object_id" => is_object($this->object) ? $this->object->id : 0)); if (!is_object($fv)) { $fv = new ListsFieldsValues(); } $v = ListsItems::model()->findByPk($val); if (is_object($v)) { $fv->setAttributes(array("field_id" => $this->id, "object_id" => $this->object->id, "int_val" => $val)); if ($fv->save()) { $hasErrors = false; } } return !$hasErrors; case 'int': case 'bool': case 'date': $v = ListsFieldsValues::model()->findByAttributes(array("field_id" => $this->id, "object_id" => $this->object->id)); if (!is_object($v)) { $v = new ListsFieldsValues(); } $v->setAttributes(array("field_id" => $this->id, "object_id" => $this->object->id, "int_val" => $val)); return $v->save(); default: $v = ListsFieldsValues::model()->findByAttributes(array("field_id" => $this->id, "object_id" => $this->object->id)); if (!is_object($v)) { $v = new ListsFieldsValues(); } $v->setAttributes(array("field_id" => $this->id, "object_id" => $this->object->id, "text_val" => $val)); return $v->save(); } }
?> </select> </div> <div class="form-group"> <label>Дата оформления заказа</label> <input type="text" name="data[timestamp]" value="" class="form-control datepicker" /> </div> <div class="form-group"> <label>Стоимость заказа</label> <input type="text" name="data[total_price]" value="" class="form-control" /> </div> <div class="form-group"> <label>Статус заказа</label> <select name="data[status]" class="form-control"> <?php $items = ListsItems::model()->findAllByAttributes(array("list_id" => 9)); if (is_array($items) && count($items)) { foreach ($items as $item) { ?> <option value="<?php echo $item->id; ?> "><?php echo CHtml::encode($item->name); ?> </option> <?php } } ?> </select>
<?php break; case 'multiple': ?> <label><?php echo $field->title; ?> </label> <select name="data[additional][<?php echo $field->name; ?> ][]" class="form-control" multiple="multiple"> <option>Выберите из списка...</option> <?php if ($field->rel) { $options = ListsItems::model()->findAllByAttributes(array("list_id" => $field->rel)); if (is_array($options) && count($options)) { foreach ($options as $option) { ?> <option value="<?php echo $option->id; ?> "><?php echo $option->name; ?> </option> <?php } } } ?>
public function actionFilterRegions() { $regions = array(); $requestData = array(); if (isset($_REQUEST['data']['country'])) { $selectedCountry = $_REQUEST['data']['country']; $requestData = $selectedCountry; if (is_array($selectedCountry) && count($selectedCountry)) { $criteria = new CDbCriteria(); $criteria->condition = "field_id = 3"; $criteria->addInCondition("int_val", $selectedCountry); $criteria->group = "object_id"; $listsFieldsValues = ListsFieldsValues::model()->findAll($criteria); if (is_array($listsFieldsValues) && count($listsFieldsValues)) { foreach ($listsFieldsValues as $lfv) { $o = ListsItems::model()->findByPk($lfv->object_id); if (is_object($o)) { $regions[] = $o; } } } } } $this->renderPartial("filter_regions", array("regions" => $regions, "requestData" => $requestData)); }
public function actionToggleActivity() { if (isset($_REQUEST['pk'])) { $model = ListsItems::model()->findByPk($_REQUEST['pk']); if (is_object($model)) { $model->is_active = $model->is_active ? 0 : 1; if ($model->save()) { return true; } } } return false; }
public function createObject($name, $langId, $dataArray) { $model = new CatalogObjects(); //prepare data $uploaddir = 'images/upload/' . date("d.m.Y", time()); $attributes = array(); switch ($langId) { case 19: $attributes['category_id'] = 1; //@todo Выбор категории для импорта break; case 20: $attributes['category_id'] = 5; break; case 21: $attributes['category_id'] = 9; break; } $attributes['name'] = $name; $attributes['h1'] = $name; $attributes['title'] = $name; $toUrl = $langId == 21 ? $name . "-" . $dataArray['artikul'] . "-fr" : $name . "-" . $dataArray['artikul']; $attributes['url'] = translit::convert($toUrl, "-"); $attributes['price'] = isset($dataArray['price']) ? str_replace(",", ".", $dataArray['price']) : 0; $attributes['is_active'] = 0; $attributes['is_deleted'] = 0; $attributes['on_main'] = 0; $attributes['lang_id'] = $langId; $attributes['views_count'] = 0; $artikul = isset($dataArray['artikul']) ? $dataArray['artikul'] : ''; if ($langId == 19) { $attributes['anons'] = $dataArray['name_ru']; } else { $attributes['anons'] = ''; } if (is_dir('import_images/' . $artikul)) { if (is_file('import_images/' . $artikul . '/1.jpg')) { $anonsPicPath = $uploaddir . "/a_" . md5(time() . $artikul . "a1") . ".jpg"; $contentPicPath = $uploaddir . "/c_" . md5(time() . $artikul . "c1") . ".jpg"; if (copy('import_images/' . $artikul . '/1.jpg', $anonsPicPath)) { $attributes['anons_pic'] = "/" . $anonsPicPath; } if (copy('import_images/' . $artikul . '/1.jpg', $contentPicPath)) { $attributes['content_pic'] = "/" . $contentPicPath; } } if (is_file('import_images/' . $artikul . '/2.jpg')) { $extraPicPath = $uploaddir . "/e_" . md5(time() . $artikul . "2") . ".jpg"; if (copy('import_images/' . $artikul . '/2.jpg', $extraPicPath)) { $attributes['extra_img'] = "/" . $extraPicPath; } } } //push data $model->setAttributes($attributes); if ($model->save()) { //prepare additional data if (isset($dataArray['ratings']['RP'])) { $model->field('rp')->setValue($dataArray['ratings']['RP']); } if (isset($dataArray['ratings']['WS'])) { $model->field('ws')->setValue($dataArray['ratings']['WS']); } $additionalFields = CatalogFilteredFields::model()->findAllByAttributes(array("category_id" => $model->category_id)); if (is_array($additionalFields) && count($additionalFields)) { foreach ($additionalFields as $f) { $fieldData = isset($dataArray[$f->name]) ? $dataArray[$f->name] : null; $langPrefix = 'ru'; switch ($langId) { case 19: $langPrefix = 'ru'; break; case 20: $langPrefix = 'en'; break; case 21: $langPrefix = 'fr'; break; } if (is_array($fieldData) || $fieldData && !is_array($fieldData)) { switch ($f->data_type) { case 'int': if (is_numeric($dataArray[$f->name])) { $model->field($f->name)->setValue($dataArray[$f->name]); } break; case 'date': if ($dataArray[$f->name]) { $model->field($f->name)->setValue(strtotime($dataArray[$f->name])); } break; case 'bool': $model->field($f->name)->setValue($fieldData ? 1 : 0); break; case 'multiple': if (is_array($fieldData) && isset($fieldData[$langPrefix])) { $values = $fieldData[$langPrefix]; if (is_array($values) && count($values)) { $setArr = array(); $num = 0; foreach ($values as $value) { $listItem = ListsItems::model()->findByAttributes(array("list_id" => $f->rel, "name" => $value)); if (!is_object($listItem)) { $listItem = new ListsItems(); $listItem->setAttributes(array("list_id" => $f->rel, "name" => $value)); $listItem->save(); if (isset($fieldData['en'][$num]) && $fieldData['en'][$num]) { $listItem->field("en_name")->setValue($fieldData['en'][$num]); } if (isset($fieldData['fr'][$num]) && $fieldData['fr'][$num]) { $listItem->field("fr_name")->setValue($fieldData['fr'][$num]); } } $setArr[] = $listItem->id; $num++; } $model->field($f->name)->setValue($setArr); } } else { if (is_array($fieldData)) { $values = $fieldData; if (is_array($values) && count($values)) { $setArr = array(); foreach ($values as $value) { $listItem = ListsItems::model()->findByAttributes(array("list_id" => $f->rel, "name" => $value)); if (!is_object($listItem)) { $listItem = new ListsItems(); $listItem->setAttributes(array("list_id" => $f->rel, "name" => $value)); $listItem->save(); } $setArr[] = $listItem->id; } $model->field($f->name)->setValue($setArr); } } } break; case 'list': if (is_array($fieldData) && isset($fieldData[$langPrefix])) { $value = $fieldData[$langPrefix]; $listItem = ListsItems::model()->findByAttributes(array("list_id" => $f->rel, "name" => $value)); if (!is_object($listItem)) { $listItem = new ListsItems(); $listItem->setAttributes(array("list_id" => $f->rel, "name" => $value)); $listItem->save(); if (isset($fieldData['en']) && $fieldData['en']) { $listItem->field("en_name")->setValue($fieldData['en']); } if (isset($fieldData['fr']) && $fieldData['fr']) { $listItem->field("fr_name")->setValue($fieldData['fr']); } } $model->field($f->name)->setValue($listItem->id); } else { if ($f->name == 'brand') { $brandName = $fieldData['name']; $value = $brandName; $listItem = ListsItems::model()->findByAttributes(array("list_id" => $f->rel, "name" => $value)); if (!is_object($listItem)) { $listItem = new ListsItems(); $listItem->setAttributes(array("list_id" => $f->rel, "name" => $value)); $listItem->save(); if (isset($fieldData['en']) && $fieldData['en']) { $listItem->field("en_name")->setValue($fieldData['en']); } if (isset($fieldData['fr']) && $fieldData['fr']) { $listItem->field("fr_name")->setValue($fieldData['fr']); } if (isset($fieldData['site'])) { $listItem->field('ru_site')->setValue($fieldData['site']); } } else { if (isset($fieldData['en']) && $fieldData['en']) { $listItem->field("en_name")->setValue($fieldData['en']); } if (isset($fieldData['fr']) && $fieldData['fr']) { $listItem->field("fr_name")->setValue($fieldData['fr']); } if (isset($fieldData['site'])) { $listItem->field('ru_site')->setValue($fieldData['site']); } } $model->field($f->name)->setValue($listItem->id); } else { if (!is_array($fieldData)) { //$value = $fieldData; $listItem = ListsItems::model()->findByAttributes(array("list_id" => $f->rel, "name" => $fieldData)); if (!is_object($listItem)) { $listItem = new ListsItems(); $listItem->setAttributes(array("list_id" => $f->rel, "name" => $fieldData)); $listItem->save(); } $model->field($f->name)->setValue($listItem->id); } } } break; default: $value = is_array($fieldData) && isset($fieldData[$langPrefix]) ? $fieldData[$langPrefix] : $fieldData; $model->field($f->name)->setValue(trim($value)); break; } } } } } else { print_r($model->errors); die; } }
} ?> > <?php if ($fieldName == 'region') { $selectedCountry = isset($_REQUEST['data']['country']) ? $_REQUEST['data']['country'] : array(); $regions = array(); if (is_array($selectedCountry) && count($selectedCountry)) { $criteria = new CDbCriteria(); $criteria->condition = "field_id = 3"; $criteria->addInCondition("int_val", $selectedCountry); $criteria->group = "object_id"; $listsFieldsValues = ListsFieldsValues::model()->findAll($criteria); if (is_array($listsFieldsValues) && count($listsFieldsValues)) { foreach ($listsFieldsValues as $lfv) { $regions[] = ListsItems::model()->findByPk($lfv->object_id); } } } if (is_array($regions) && count($regions)) { ?> <ul class="region f_<?php echo $fieldName; ?> "> <?php foreach ($regions as $region) { $regionField = CatalogFilteredFields::model()->findByAttributes(array("category_id" => $this->currentCategory->id, "name" => "region")); $count = 0; if (is_object($regionField)) { $countCriteria = new CDbCriteria();
public function actionLang($id) { if (is_numeric($id)) { $lang = ListsItems::model()->findByPk($id); if (is_object($lang) && $lang->list_id == 11) { $this->setLang($lang->id); } } $this->redirect("/"); }