Exemple #1
0
    /**
     * @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;
    }
 public function getCountElements($parent_id)
 {
     return (int) ArticleElements::model()->count("parent_id=:field AND `status`=1", array("field" => $parent_id));
 }
Exemple #3
0
    <?php 
    $tmp_model = ArticleRubrics::model()->findByPk($data->id);
    foreach ($tmp_model->descendants()->findAll() as $dataSubRubrics) {
        ?>

        <li><a href="<?php 
        echo Yii::app()->request->requestUri;
        ?>
/<?php 
        echo $dataSubRubrics->url;
        ?>
"><?php 
        echo $dataSubRubrics->name;
        ?>
 (<?php 
        echo ArticleElements::model()->getCountElements($dataSubRubrics->id);
        ?>
)</a></li>

    <?php 
    }
    ?>
    </ul>
<?php 
}
?>

</div>


<?php 
 public static function getCountElement($parent_id)
 {
     return ArticleElements::model()->count("parent_id=:field", array("field" => $parent_id));
 }
 public function actionElement($param)
 {
     $paramArr = explode("/", $param);
     $paramArr = array_pop($paramArr);
     $paramArr = strtolower($paramArr);
     if (is_numeric($paramArr)) {
         $modelElements = ArticleElements::model()->findByPk($paramArr);
         $model = ArticleRubrics::model()->findByPk($modelElements->parent_id);
         if (!$model) {
             throw new CHttpException(404, 'The page can not be found.');
         }
         $this->setSEO(Yii::app()->request->requestUri, 'Статьи', $model);
         $pageArray = array();
         $i = 0;
         foreach ($model->ancestors()->findAll() as $data) {
             if ($data->level == 1) {
                 continue;
             }
             $pageArray[$i]['url'] = $data->url;
             $pageArray[$i]['name'] = $data->name;
             ++$i;
         }
         $pageArray[$i]['url'] = $model->url;
         $pageArray[$i]['name'] = $model->name;
         if (count($pageArray) > 1) {
             rsort($pageArray);
         }
         $model = $model->descendants(1)->findAll($model->id);
         $render = 'view';
     } else {
         if ($modelPage = Pages::model()->find('url LIKE "' . $param . '"')) {
             if ($modelTabs = PagesTabs::model()->find('pages_id=' . $modelPage->id)) {
                 $module_id = array_diff(explode("|", $modelTabs->site_module_value), array(''));
                 if ($tmpParam = ArticleRubrics::model()->find('id in (' . current($module_id) . ') AND `status` = 1')) {
                     $paramArr = $tmpParam->url;
                 }
             }
         }
         $model = ArticleRubrics::model()->find('url LIKE "' . $paramArr . '"');
         if (!$model) {
             throw new CHttpException(404, 'The page can not be found.');
         }
         $this->setSEO(Yii::app()->request->requestUri, 'Статьи', $model);
         $pageArray = array();
         $pageArray[0]['name'] = ' / ' . $model->name;
         $pageArray[0]['url'] = null;
         $i = 1;
         foreach ($model->ancestors()->findAll('level>1') as $data) {
             $pageArray[$i]['name'] = ' / ' . $data->name;
             $pageArray[$i]['url'] = 'article/' . $data->url;
             ++$i;
         }
         rsort($pageArray);
         if (count($pageArray) > 1) {
             rsort($pageArray);
         }
         $modelElements = ArticleElements::model()->findAll('parent_id = ' . $model->id . ' AND `status`=1 ORDER BY `primary` DESC');
         $model = $model->descendants(1)->findAll($model->id);
         $render = 'index';
     }
     $this->render($render, array('model' => $model, 'modelElements' => $modelElements, 'pageArray' => $pageArray));
 }
 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 (ArticleElements::model()->findAll('parent_id = ' . $model->id) as $data) {
                     $data->status = $model->status;
                     $data->save();
                 }
                 break;
         }
         echo CJavaScript::jsonEncode('ok');
     }
     Yii::app()->end();
 }
 /**
  * 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 = ArticleElements::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
Exemple #8
0
<legend><?php 
echo Yii::t("Bootstrap", "LIST.ArticleElements");
?>
</legend>

<?php 
$assetsDir = Yii::app()->basePath;
$labels = ArticleElements::model()->attributeLabels();
$this->widget('bootstrap.widgets.TbExtendedGridView', array('id' => 'article-elements-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["parent_id"], 'name' => "parent_id", 'value' => '$data->parent->name'), 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" style="margin-top:14px; float:left; margin-left:15px" href="/admin/<?php 
echo Yii::app()->controller->module->id;
?>
/<?php 
echo Yii::app()->controller->id;
?>
/create"> Добавить статью</a>
</div>

<script>
    //Меняем статус
    $(document).on('click', '.on-off-product', function(){