public function loadModel($id) { if (($model = ChemicalItem::model()->findByPk($id)) === null) { throw new CHttpException(404, 'Страница не найдена'); } return $model; }
public function run() { if (empty($this->model) || empty($this->model->categories)) { return; } $criteria = new CDbCriteria(); $criteria->addCondition('t.id <> :id'); $criteria->params[':id'] = $this->model->id; $criteria->order = 'RAND()'; if ($this->limit > 0) { $criteria->limit = (int) $this->limit; } $models = ChemicalItem::model()->published()->category($this->model->categories[0]->id)->findAll($criteria); $this->render($this->view, array('models' => $models, 'model' => $this->model)); }
public function actionShow($alias) { $model = ChemicalItem::model()->published()->with(array('producer', 'categories' => array('scopes' => 'published', 'order' => 'categories.sort ASC'), 'reasons' => array('scopes' => 'active', 'order' => 'reasons.sort ASC'), 'products' => array('scopes' => 'active', 'order' => 'products.sort ASC'), 'images' => array('scopes' => 'published', 'order' => 'images.sort ASC')))->findByAlias($alias); if (!$model) { throw new CHttpException(404); } // Учитываем фильтр в каталоге $filter = Yii::app()->user->getState('chemicalCatalogFilter'); // Определяем следующий товар $nextProduct = $model->getNextProduct($filter); // Определяем предыдущий товар $prevProduct = $model->getPrevProduct($filter); // Добавляем в просмотренное $this->getModule()->getComponent('watched')->put($model); $this->render('item', array('model' => $model, 'nextProduct' => $nextProduct, 'prevProduct' => $prevProduct, 'returnUrl' => Yii::app()->user->getState('chemicalCatalogReturnUrl'))); }
<?php echo $form->checkBoxListRow($model, 'categoriesArray', ChemicalItem::model()->categoryList); ?> </div> </div> <div class="span4"> <div style="height: 300px; border: 1px #999 solid; padding: 15px; overflow-y: auto;"> <?php echo $form->checkBoxListRow($model, 'reasonsArray', ChemicalItem::model()->reasonList); ?> </div> </div> <div class="span4"> <div style="height: 300px; border: 1px #999 solid; padding: 15px; overflow-y: auto;"> <?php echo $form->checkBoxListRow($model, 'productsArray', ChemicalItem::model()->productList); ?> </div> </div> </div> <div class="row-fluid control-group <?php echo $model->hasErrors('image') ? 'error' : ''; ?> "> <div class="span7 popover-help" data-original-title="<?php echo $model->getAttributeLabel('image'); ?> "> <?php if (!$model->isNewRecord && $model->image) {
<?php $this->widget('yupe\\widgets\\OGridView', array('id' => 'item-grid', 'type' => 'condensed', 'dataProvider' => $model->search(), 'filter' => $model, 'columns' => array(array('name' => 'id', 'type' => 'raw', 'value' => 'CHtml::link($data->id, $data->url, array("target" => "_blank"))', 'htmlOptions' => array('style' => 'width:40px')), array('name' => 'image', 'type' => 'raw', 'value' => '$data->image ? CHtml::image($data->getImageUrl(220, 150), $data->title) : ""', 'filter' => false, 'sortable' => false, 'htmlOptions' => array('style' => 'width:220px')), array('name' => 'search_category', 'value' => '$data->categoriesNames', 'filter' => CHtml::activeDropDownList($model, 'search_category', ChemicalItem::model()->categoryList, array('encode' => false, 'empty' => '')), 'htmlOptions' => array('style' => 'width:180px')), array('name' => 'title', 'class' => 'yupe.widgets.CustomEditableColumn', 'editable' => array('placement' => 'right')), array('name' => 'alias', 'class' => 'yupe.widgets.CustomEditableColumn', 'editable' => array('placement' => 'right')), array('name' => 'article', 'class' => 'yupe.widgets.CustomEditableColumn', 'editable' => array('placement' => 'right')), array('name' => 'producer_id', 'value' => '$data->producerTitle', 'filter' => $model->producerList), array('name' => 'price', 'value' => '$data->getPrice()', 'filter' => false), array('name' => 'badge_text', 'class' => 'yupe.widgets.CustomEditableColumn', 'editable' => array('placement' => 'right')), array('name' => 'badge_color', 'class' => 'yupe.widgets.CustomEditableColumn', 'editable' => array('placement' => 'right')), array('name' => 'status', 'type' => 'raw', 'value' => '$this->grid->returnBootstrapStatusHtml($data, "status", "Status", array("pencil", "ok-sign"))', 'filter' => $model->getStatusList(), 'sortable' => false), array('class' => 'bootstrap.widgets.TbButtonColumn', 'template' => '{images}{update}{delete}', 'buttons' => array('images' => array('icon' => 'picture', 'label' => 'Изображения', 'url' => 'array("/chemical/itemImageBackend/index", "item_id" => $data->id)')), 'htmlOptions' => array('style' => 'width: 80px; text-align: right;')))));
public function getPrevProduct($filter = array()) { $criteria = $this->_constructCriteriaByFilter($filter); $criteria->order = 'producer.sort DESC, t.title DESC'; // Условие выборки по порядку $fullCriteria = clone $criteria; $fullCriteria->addCondition('((t.title <= :title AND t.id <> :id) OR (producer.sort < :producerSort))'); $fullCriteria->params[':id'] = $this->id; $fullCriteria->params[':title'] = $this->title; $fullCriteria->params[':producerSort'] = $this->producer->sort; $fullCriteria->order = 't.title DESC'; $prevProduct = ChemicalItem::model()->published()->find($fullCriteria); if ($prevProduct === null) { $prevProduct = ChemicalItem::model()->published()->find($criteria); } return $prevProduct; }
public function getPrevProduct($filter = array()) { $criteria = $this->_constructCriteriaByFilter($filter); $criteria->order = 't.title DESC'; // Условие выборки по порядку $fullCriteria = clone $criteria; $fullCriteria->addCondition('t.title <= (SELECT `title` from `' . $this->tableName() . '` WHERE id = :id) AND t.id <> :id'); $fullCriteria->params[':id'] = $this->id; $fullCriteria->order = 't.title DESC'; $prevProduct = ChemicalItem::model()->published()->find($fullCriteria); if ($prevProduct === null) { $prevProduct = ChemicalItem::model()->published()->find($criteria); } return $prevProduct; }