/** * @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 = HtmlCode::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, 'The requested page does not exist.'); } return $model; }
<legend><?php echo Yii::t("Bootstrap", "LIST.HtmlCode"); ?> </legend> <?php $assetsDir = Yii::app()->basePath; $labels = HtmlCode::model()->attributeLabels(); $this->widget('bootstrap.widgets.TbExtendedGridView', array('id' => 'html-code-grid', 'template' => "{items}\n{pager}", 'enableHistory' => true, 'dataProvider' => $model->search(), 'filter' => null, 'bulkActions' => array('actionButtons' => $this->bulkRemoveButton(), 'checkBoxColumnConfig' => array('name' => 'id')), 'columns' => array(array('header' => $labels["id"], 'name' => "id"), array('header' => $labels["name"], 'name' => "name"), 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'))))); ?> <div class="buttons"> <a class="btn btn-primary" href="/admin/<?php echo Yii::app()->controller->module->id; ?> /<?php echo Yii::app()->controller->id; ?> /create?id=<?php echo isset($_GET['id']) ? (int) $_GET['id'] : 0; ?> " style="margin-top:14px; float:left; margin-left:15px"> Добавить новую запись</a> </div>