public function actionIndex() { /* $model = Yii::app()->db->createCommand() ->select('tbl_doctor_rubrics.*') ->from('{{doctor_specialization}}') ->leftJoin('{{doctor_rubrics}}', '{{doctor_rubrics}}.id = {{doctor_specialization}}.doctor_rubrics_id') ->leftJoin('{{doctor_elements}}', '{{doctor_elements}}.id = {{doctor_specialization}}.doctor_elements_id') ->where('{{doctor_rubrics}}.`status` = 1') ->order('{{doctor_rubrics}}.name') ->queryAll(); */ $model = array(); //получаем список специализаций где есть врачи $arrayID = array(); foreach (DoctorSpecialization::model()->findAll() as $data) { $arrayID[] = $data->doctor_rubrics_id; } if (empty($arrayID)) { throw new CHttpException(404, 'The page can not be found.'); } $model['group'] = DoctorRubrics::model()->findAll(array("condition" => "id in(" . implode(",", $arrayID) . ") AND `status`=1 ", "order" => "name ASC")); //получаем врачей в группах $model['element'] = array(); //И список всех специализаций врача $model['spec'] = array(); foreach ($model['group'] as $data) { $arrayID = array(); foreach (DoctorSpecialization::model()->findAll('doctor_rubrics_id=' . $data->id) as $dataSpec) { $arrayID[] = $dataSpec->doctor_elements_id; } $model['element'][$data->id] = DoctorElements::model()->findAll("id in(" . implode(",", $arrayID) . ") AND `status`=1"); foreach ($model['element'][$data->id] as $dataSpec) { $model['spec'][$dataSpec->id] = Yii::app()->db->createCommand()->select('{{doctor_rubrics}}.name, {{doctor_rubrics}}.url')->from('{{doctor_specialization}}')->leftJoin('{{doctor_rubrics}}', '{{doctor_rubrics}}.id = {{doctor_specialization}}.doctor_rubrics_id')->leftJoin('{{doctor_elements}}', '{{doctor_elements}}.id = {{doctor_specialization}}.doctor_elements_id')->where('{{doctor_rubrics}}.`status` = 1 AND {{doctor_elements}}.id = ' . $dataSpec->id)->order('{{doctor_rubrics}}.name ')->queryAll(); } } $this->render('index', array('model' => $model)); }
/** * @param $model - модель таблицы tbl_pages_tabs * Возращает HTML код блока вкладки */ public function getTemplate($model) { $resultHTML = ''; //Шаблоны $template = array(1 => ' %description% %module_value% ', 2 => ' %description% %module_value% '); //Общий шаблон switch ($model->site_module_id) { case 1: //Новости $template = array(1 => ' <div class="spisok"> <main class="all" role="main"> <div class="container"> <h1 class="main-caption mg-bottom-24 caption-big">%title%</h1> %module_value% </div> </main> </div> ', 2 => ' <main class="all" role="main"> <div class="container"> <h2 class="main-caption mg-bottom-24">%title%</h2> </div> </main> <div class="spisok fogr gray-bg"> <main class="all" role="main" style="padding-top:20px;"> <div class="container"> %module_value% </div> </main> </div> '); break; case 6: //Статьи $template = array(1 => ' <div class="spisok"> <main class="all" role="main"> <div class="container"> <h1 class="main-caption mg-bottom-24 caption-big">%title%</h1> %module_value% </div> </main> </div> ', 2 => ' <main class="all" role="main"> <div class="container"> <h2 class="main-caption mg-bottom-24">%title%</h2> </div> </main> <div class="spisok fogr gray-bg"> <main class="all" role="main" style="padding-top:20px;"> <div class="container"> %module_value% </div> </main> </div> '); break; case 16: //Отзывы $template = array(1 => ' <div class="spisok"> <main class="all" role="main"> <div class="container"> <h1 class="main-caption mg-bottom-24 caption-big">%title%</h1> %module_value% </div> </main> </div> ', 2 => ' <main class="all" role="main"> <div class="container"> <h2 class="main-caption mg-bottom-24">%title%</h2> </div> </main> <div class="spisok fogr gray-bg"> <main class="all" role="main" style="padding-top:20px;"> <div class="container"> %module_value% </div> </main> </div> '); break; case 7: //Вопросы-ответы $template = array(1 => ' <div class="spisok"> <main class="all" role="main"> <div class="container faq" style="background: #ffffff;"> <h1 class="main-caption mg-bottom-24 caption-big">%title%</h1> %module_value% </div> </main> </div> ', 2 => ' <main class="all" role="main"> <div class="container"> <h2 class="main-caption mg-bottom-24">%title%</h2> </div> </main> <div class="spisok fogr gray-bg"> <main class="all" role="main" style="padding-top:20px;"> <div class="container faq"> %module_value% </div> </main> </div> '); break; case 10: //Врачи $template = array(1 => ' <style> #carusel20 .carusel-left {background-color: #fff;} #carusel20 .carusel-right {background-color: #fff;} </style> <div class="doctor-slide"> <main role="main" class="all" style="background:#fff"> <div class="container"> <h2 class="main-caption mg-bottom-24">%title%</h2> </div> </main> <div class="gray-bg"> <main role="main" class="all"> <div class="container"> %description% <div id="carusel20_doc" class="owl-carousel owl-theme slider pos-relative mg-top-15"> %module_value% </div> </div> </main> </div> </div> ', 2 => ' <div class="doctor-slide"> <main role="main" class="all"> <div class="container"> <h2 class="main-caption mg-bottom-24">%title%</h2> </div> </main> <div class="news-block gray-bg"> <main role="main" class="all"> <div class="container"> %description% <div id="carusel20_doc" class="owl-carousel owl-theme slider pos-relative mg-top-15"> %module_value% </div> </div> </main> </div> </div> '); break; case 11: //Фотогалерея $template = array(1 => ' <style> #carusel20 .carusel-left {background-color: #fff;} #carusel20 .carusel-right {background-color: #fff;} #carusel20_photo .owl-prev {margin-top:-80px;} #carusel20_photo .owl-next {margin-top:-80px;} </style> <div class="doctor-slide"> <main role="main" class="all" style="background:#fff"> <div class="container"> <h2 class="main-caption mg-bottom-24 caption-big">%title%</h2> </div> </main> <div class="gray-bg"> <main role="main" class="all"> <div class="container"> %description% <div id="carusel20_photo" class="owl-carousel owl-theme slider pos-relative mg-top-15"> %module_value% </div> </div> </main> </div> </div> ', 2 => ' <style> #carusel20_photo .owl-prev {margin-top:-80px;} #carusel20_photo .owl-next {margin-top:-80px;} </style> <div class="doctor-slide"> <main role="main" class="all"> <div class="container"> <h2 class="main-caption mg-bottom-24">%title%</h2> </div> </main> <div class="news-block gray-bg"> <main role="main" class="all"> <div class="container"> %description% <div id="carusel20_photo" class="owl-carousel owl-theme slider pos-relative mg-top-15"> %module_value% </div> </div> </main> </div> </div> '); break; case 12: //До и После $template = array(1 => ' <main role="main" class="all" style="background:#fff"> <div class="container"> <h2 class="main-caption mg-bottom-24 caption-big">%title%</h2> </div> </main> <div class="slide-after mg-bottom-20 mg-top-15"> <main class="all" role="main"> %module_value% </main> </div> ', 2 => ' <div class="news-block gray-bg"> <main role="main" class="all"> <div class="container"> <h2 class="main-caption mg-bottom-24">%title%</h2> </div> </main> <div class="slide-after mg-bottom-20 mg-top-15"> <main class="all" role="main"> %module_value% </main> </div> </div> '); break; } //Получаю темплейт для модуля $template_tmp = $template[$model->template_id]; //Для врачей %module_value% - это карусель, для других вариантов - повторяем темплейт для каждого элемента $module_value_array = array(); $module_count_elements = 0; foreach (explode("|", $model->site_module_value) as $data) { if (empty($data)) { continue; } ++$module_count_elements; $module_value_array[$data] = $data; } //Шаблоны элемента %module_value% switch ($model->site_module_id) { case 1: //Новости $tmp_module_value = ''; foreach ($module_value_array as $value) { if ($modelData = NewsGroup::model()->find('id in (' . $value . ') AND `status` = 1')) { $i = 0; $count = 5; foreach (News::model()->findAll('group_id=' . $modelData->id . ' AND `status` = 1') as $modelElements) { ++$i; if ($i > $count) { continue; } $tmp_module_value .= ' <div class="ot"> <span href="#">' . $modelData->name . ' - ' . date("d.m.Y", strtotime($modelElements->maindate)) . '</span></span><BR> ' . $modelElements->name . ' '; if (!empty($modelElements->brieftext)) { $tmp_module_value .= '<BR>' . $modelElements->brieftext; } $tmp_module_value .= '</div>'; } if ($i > 0) { $tmp_module_value .= '<a class="all-otv" href="/news/' . $modelData->url . '">Все новости</a>'; } } } $resultHTML = $template_tmp; $title = $model->title; $resultHTML = str_replace("%module_value%", $tmp_module_value, $resultHTML); break; case 6: //Статьи $tmp_module_value = ''; foreach ($module_value_array as $value) { if ($modelData = ArticleRubrics::model()->find('id in (' . $value . ') AND `status` = 1')) { $i = 0; $count = 5; foreach (ArticleElements::model()->findAll('parent_id=' . $modelData->id . ' AND `status` = 1') as $modelElements) { ++$i; if ($i > $count) { continue; } $tmp_module_value .= ' <div class="review_block"> <span>' . $modelElements->name . ' - ' . date("d.m.Y", strtotime($modelElements->maindate)) . '</span><BR> <p>' . $modelElements->brieftext . '</p> </div>'; } if ($i > 0) { $tmp_module_value .= '<a class="all-otv" style="margin-bottom:20px;" href="' . Yii::app()->request->requestUri . '/' . ($module_count_elements > 1 ? $modelData->url . '/' : '') . 'article">Все статьи</a>'; } } } $resultHTML = $template_tmp; $title = $model->title; $resultHTML = str_replace("%module_value%", $tmp_module_value, $resultHTML); break; case 7: //Вопрос-ответ $tmp_module_value = ''; foreach ($module_value_array as $value) { if ($modelData = FaqRubrics::model()->find('id in (' . $value . ') AND `status` = 1')) { $i = 0; $count = 5; foreach (FaqElements::model()->findAll('parent_id=' . $modelData->id . ' AND `status` = 1') as $modelElements) { ++$i; if ($i > $count) { continue; } $modelAuthor = FaqAuthor::model()->findByPk($modelElements->author_id); $tmp_module_value .= ' <article> <div class="question"> <span href="#" style="color:#ed174f; font-size: 16px; font-weight: bold; margin-left: 20px;">' . $modelAuthor->name . '<span> / ' . $modelData->name . ' - ' . date("d.m.Y", strtotime($modelElements->question_data)) . '</span></span> <div class="q_data"> ' . $modelElements->question . ' </div> </div> '; if (!empty($modelElements->answer)) { $tmp_module_value .= '<div class="unswer"><div class="u_data">' . $modelElements->answer . '</div></div>'; } $tmp_module_value .= '</article>'; } if ($i > 0) { $tmp_module_value .= '<a class="all-otv" href="' . Yii::app()->request->requestUri . '/' . ($module_count_elements > 1 ? $modelData->url . '/' : '') . 'faq" style="position:relative; z-index:99999; margin-bottom:20px;">Все ответы</a>'; } } } $resultHTML = $template_tmp; $title = $model->title; $resultHTML = str_replace("%module_value%", $tmp_module_value, $resultHTML); break; case 16: //Отзывы $tmp_module_value = ''; foreach ($module_value_array as $value) { if ($modelData = ReviewRubrics::model()->find('id in (' . $value . ') AND `status` = 1')) { $i = 0; $count = 5; foreach (ReviewElements::model()->findAll('parent_id=' . $modelData->id . ' AND `status` = 1') as $modelElements) { ++$i; if ($i > $count) { continue; } $modelAuthor = ReviewAuthor::model()->findByPk($modelElements->author_id); $tmp_module_value .= ' <div class="review_block" style="padding: 10px; margin-bottom: 10px; margin-top:20px;"> <span href="#">' . $modelAuthor->name . '<span> / ' . $modelData->name . ' - ' . date("d.m.Y", strtotime($modelElements->review_data)) . '</span></span><BR> <p>' . $modelElements->review . '</p> </div>'; } if ($i > 0) { $tmp_module_value .= '<a class="all-otv" href="' . Yii::app()->request->requestUri . '/' . ($module_count_elements > 1 ? $modelData->url . '/' : '') . 'review" style="position:relative; z-index:99999; margin-bottom:20px;">Все отзывы</a>'; } } } $resultHTML = $template_tmp; $title = $model->title; $resultHTML = str_replace("%module_value%", $tmp_module_value, $resultHTML); break; case 10: //Врачи $tmp_module_value = ''; foreach (DoctorElements::model()->findAll('id in (' . implode(",", $module_value_array) . ')') as $data) { $tmp_module_value .= ' <div class="item"> <div class="doctor"> <figure> ' . (!empty($data->image) ? '<img src="/uploads/filestorage/doctor/elements/medium-' . $data->id . '.' . $data->image . '">' : '') . ' </figure> <h1>' . $data->name . '</h1> <article style="margin-top:10px;" class="text-center"> ' . $data->anonse . ' </article> </div> </div> '; } $resultHTML = $template_tmp; $title = $model->title; $resultHTML = str_replace("%module_value%", $tmp_module_value, $resultHTML); break; case 11: //Фотогалерея $tmp_module_value = ''; foreach (PhotoElements::model()->findAll('parent_id in (' . implode(",", $module_value_array) . ')') as $data) { $tmp_module_value .= ' <div class="item"> <div class="doctor"> <figure> ' . (!empty($data->image) ? '<a href="/photo/' . $data->parent->url . '"> <div style="height: 212px; background: url(/uploads/filestorage/photo/elements/medium-' . $data->id . '.' . $data->image . ') 100% 100% no-repeat; background-size: cover;"> </div> </a>' : '') . ' </figure> </div> </div> '; } $resultHTML = $template_tmp; $title = $model->title; $resultHTML = str_replace("%module_value%", $tmp_module_value, $resultHTML); break; case 12: //До и После $tmp_module_value = ''; foreach (BeforeAfterRubrics::model()->findAll('id in (' . implode(",", $module_value_array) . ')') as $data) { if ($modelImage = BeforeAfterElements::model()->find('parent_id=' . $data->id . ' ORDER BY on_main DESC')) { //URL $parent_url = array(); if (!empty($data)) { $modelTop = BeforeAfterRubrics::model()->findByPk($data->id); foreach ($modelTop->ancestors()->findAll('level>1') as $dataTop) { $parent_url[] = $dataTop->url; } $parent_url[] = $modelTop->url; } $tmp_module_value .= ' <div class="container"> <a href="/before-after/' . (!empty($parent_url) ? implode("/", $parent_url) : '') . '"><h4>' . $data->name . '</h4></a> <div class="spisok af-line"> <a href="/before-after/' . (!empty($parent_url) ? implode("/", $parent_url) : '') . '"> <div class="after"> <figure> <img src="/uploads/filestorage/beforeafter/elements/medium2-before_' . $modelImage->id . '.' . $modelImage->before_photo . '"> <figcaption> ДО </figcaption> </figure> <figure> <img src="/uploads/filestorage/beforeafter/elements/medium2-after_' . $modelImage->id . '.' . $modelImage->before_photo . '"> <figcaption> ПОСЛЕ </figcaption> </figure> </div> </a> </div> </div> '; } } $resultHTML = $template_tmp; $title = $model->title; $resultHTML = str_replace("%module_value%", $tmp_module_value, $resultHTML); break; case 17: //HTML код $tmp_module_value = ''; foreach (HtmlCode::model()->findAll('id in (' . implode(",", $module_value_array) . ') AND `status`=1') as $data) { $tmp_module_value .= $data->code; } $resultHTML = $template_tmp; $title = ''; $resultHTML = str_replace("%module_value%", $tmp_module_value, $resultHTML); break; default: $tmp_module_value = ''; $tabel_name = $this->moduleID[$model->site_module_id]; foreach (Yii::app()->db->createCommand()->select('*')->from($tabel_name)->queryAll() as $data) { if (!isset($data['description']) || empty($data['description'])) { continue; } $tmp_module_value .= $data['description']; } $resultHTML .= $template_tmp; $title = $model->title; $resultHTML = str_replace("%module_value%", $tmp_module_value, $resultHTML); break; } $resultHTML = str_replace("%title%", $title, $resultHTML); $resultHTML = str_replace("%description%", $model->description, $resultHTML); return $resultHTML; }
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer the ID of the model to be loaded */ public function loadModel($id) { $model = DoctorElements::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, 'The requested page does not exist.'); } return $model; }
$form = $this->beginWidget('bootstrap.widgets.TbActiveForm', array('id' => 'doctor-elements-form', 'enableAjaxValidation' => false, 'enableClientValidation' => false, 'type' => 'horizontal', 'htmlOptions' => array('enctype' => 'multipart/form-data'))); ?> <!-- Fields with <span class="required">*</span> are required. --> <!--<p class="help-block"><?php echo Yii::t("Bootstrap", "PHRASE.FIELDS_REQUIRED"); ?> </p>--> <?php echo $form->errorSummary($model); ?> <?php $specModel = DoctorElements::model()->getSpecialization($model->isNewRecord ? null : $model); echo $form->listBoxRow($model, 'doctor_rubrics_id', $specModel['data'], array('class' => 'span5', 'multiple' => 'true', 'options' => $specModel['selected'])); ?> <?php echo $form->textFieldRow($model, 'name', array('class' => 'span5', 'maxlength' => 350)); ?> <?php echo $form->dropDownListRow($model, 'chief_doctor', array(0 => 'Нет', 1 => 'Да'), array('class' => 'span5')); ?>
public function actionAjax() { if (isset($_POST)) { switch ((int) $_POST['type']) { case 1: //Смена статуса $model = $this->loadModel((int) $_POST['id']); $model->status = $model->status == 1 ? 0 : 1; $model->save(); //Меняем статус для врачей в группе foreach (DoctorElements::model()->findAll('parent_id = ' . $model->id) as $data) { $data->status = $model->status; $data->save(); } break; } echo CJavaScript::jsonEncode('ok'); } Yii::app()->end(); }
<legend><?php echo Yii::t("Bootstrap", "LIST.DoctorElements"); ?> </legend> <?php $assetsDir = Yii::app()->basePath; $labels = DoctorElements::model()->attributeLabels(); $this->widget('bootstrap.widgets.TbExtendedGridView', array('id' => 'doctor-elements-grid', 'template' => "{items}\n{pager}", 'enableHistory' => true, 'dataProvider' => $model->search($param), 'filter' => null, 'bulkActions' => array('actionButtons' => $this->bulkRemoveButton(), 'checkBoxColumnConfig' => array('name' => 'id')), 'columns' => array(array('header' => $labels["id"], 'name' => "id"), array('header' => 'Картинка', 'name' => "image", 'type' => 'raw', 'value' => function ($dataProvider) { $url_img = '/images/nophoto_100_100.jpg'; if (file_exists(YiiBase::getPathOfAlias('webroot') . '/../uploads/filestorage/doctor/elements/admin-' . $dataProvider->id . '.' . $dataProvider->image)) { $url_img = '/../uploads/filestorage/doctor/elements/admin-' . $dataProvider->id . '.' . $dataProvider->image; } return '<img src="' . $url_img . '" style="width:80px" />'; }, 'filter' => ''), array('header' => $labels["name"], 'name' => "name"), array('name' => 'Специализация', 'type' => 'raw', 'value' => function ($data) { $spec = ''; foreach (DoctorSpecialization::model()->findAll('doctor_elements_id = ' . $data->id) as $dataSpec) { $spec .= '<a href="/admin/doctor/doctorrubrics/index?DoctorRubrics[id]=' . $dataSpec->doctor_rubrics_id . '" target="_blank">' . DoctorRubrics::model()->findByPk($dataSpec->doctor_rubrics_id)->name . '</a><BR>'; } return $spec; }, 'filter' => ''), array('header' => 'Порядок', 'name' => 'order_id', 'value' => function ($data) { return CHtml::textField('order_' . $data->id, $data->order_id, array("class" => "order", "data-id" => $data->id, "data-order" => $data->order_id)); }, 'type' => 'raw'), array('header' => 'Статус', 'name' => "status", 'type' => 'raw', 'value' => function ($data) { return ' <a href="#" class="on-off-product" data-id="' . $data->id . '" data-status="' . $data->status . '"> <div style="margin-left:20px; width: 13px; height: 13px; border-radius: 3px; background:' . ($data->status == 1 ? 'green' : 'red') . '"></div> </a> '; }, 'filter' => ''), array('class' => 'bootstrap.widgets.TbButtonColumn', 'template' => '{update} {delete}', 'buttons' => array('update' => array('label' => yii::t('Bootstrap', 'PHRASE.UPDATE'), 'url' => 'CHtml::normalizeUrl(array("update", "id" => $data->id))', 'options' => array()), 'delete' => array('label' => yii::t('Bootstrap', 'PHRASE.DELETE'), 'options' => array())), 'htmlOptions' => array('style' => 'white-space: nowrap'))))); ?>