add repairs design files
This commit is contained in:
@@ -651,6 +651,10 @@ RewriteRule ^nashi-raboty/([^/]+)/([^/]+)/filter-([^/]+)/?$ index.php?module=
|
|||||||
# Услуги
|
# Услуги
|
||||||
RewriteRule ^tuning-centr/(.+)?$ index.php?module=ServiceView&page_url=$1 [L,QSA]
|
RewriteRule ^tuning-centr/(.+)?$ index.php?module=ServiceView&page_url=$1 [L,QSA]
|
||||||
|
|
||||||
|
# Автосервис
|
||||||
|
RewriteRule ^repairs/([^/]+)/?$ index.php?module=RepairsView&url=$1 [L,QSA]
|
||||||
|
RewriteRule ^repairs/?$ index.php?module=RepairsView [L,QSA]
|
||||||
|
|
||||||
# Страницы
|
# Страницы
|
||||||
RewriteRule ^pages/.+/([^/]+)/?$ index.php?module=PageView&page_url=$1 [L,QSA]
|
RewriteRule ^pages/.+/([^/]+)/?$ index.php?module=PageView&page_url=$1 [L,QSA]
|
||||||
RewriteRule ^pages/([^/]+)/?$ index.php?module=PageView&page_url=$1 [L,QSA]
|
RewriteRule ^pages/([^/]+)/?$ index.php?module=PageView&page_url=$1 [L,QSA]
|
||||||
|
|||||||
50
design/atomic/html/repairs.tpl
Normal file
50
design/atomic/html/repairs.tpl
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
{* Список записей блога *}
|
||||||
|
<!-- Хлебные крошки /-->
|
||||||
|
<ul class="breadcrumb">
|
||||||
|
<li><a href="/">Главная</a></li>
|
||||||
|
<li>{$page->name}</li>
|
||||||
|
</ul>
|
||||||
|
<!-- Хлебные крошки #End /-->
|
||||||
|
<!-- Заголовок /-->
|
||||||
|
<h1>{$page->header}</h1>
|
||||||
|
{$page->body}
|
||||||
|
{include file='pagination.tpl'}
|
||||||
|
|
||||||
|
{*
|
||||||
|
<!-- Статьи /-->
|
||||||
|
<div class="blog">
|
||||||
|
{foreach $posts as $post}
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="blog-article">
|
||||||
|
{if $post->image}<div class="blog-image"><a href="/repairs/{$post->url}/" class="w"><img class="img-thumbnail" src="{$post->image|resizepost:100:100}" title="{$post->name|escape}" alt="{$post->name|escape}" id="blogimg"/></a></div>{/if}
|
||||||
|
<div class="blog-title"><span class="badge">{$post->date|date|date_format:"%e %m %Y":"":"rus"}</span> <a data-act="{$post->id}" href="/repairs/{$post->url}/">{$post->name|escape}</a></div>
|
||||||
|
<div class="blog-annotation">{$post->annotation}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/foreach}
|
||||||
|
</div>*}
|
||||||
|
<!-- Статьи #End /-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row repairs">
|
||||||
|
{foreach $posts as $post}
|
||||||
|
|
||||||
|
<div class="service-unit action-item col-sm-3">
|
||||||
|
<div class="service-box"><span class="badge d-none">{$post->date|date|date_format:"%e %m %Y":"":"rus"}</span>
|
||||||
|
<a href="/repairs/{$post->url}/" class="tumb">
|
||||||
|
{if $post->image}
|
||||||
|
<img src="{$post->image|resizepage:262:230:0:1}" title="{$post->name|escape}" alt="{$post->name|escape}" >
|
||||||
|
{else}
|
||||||
|
<img src="/files/page/default.jpg" alt="{$post->name|escape}">
|
||||||
|
{/if}
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a class="service-name" href="/repairs/{$post->url}/">{$post->name|escape}</a><div class="blog-annotation">{$post->annotation}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/foreach}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{include file='pagination.tpl'}
|
||||||
148
design/atomic/html/repairs_post.tpl
Normal file
148
design/atomic/html/repairs_post.tpl
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
{* Страница отдельной записи блога *}
|
||||||
|
<!-- Хлебные крошки /-->
|
||||||
|
<ul class="breadcrumb">
|
||||||
|
<li><a href="/">Главная</a></li>
|
||||||
|
<li><a href="/repairs/">Акции</a></li>
|
||||||
|
<li>{$post->name|escape}</li>
|
||||||
|
</ul>
|
||||||
|
<!-- Хлебные крошки #End /-->
|
||||||
|
<!-- Заголовок /-->
|
||||||
|
<h1 data-act="{$post->id}">{$post->name|escape}</h1>
|
||||||
|
<p class="action-page-date">{$post->date|date|date_format:"%e %m %Y":"":"rus"}</p>
|
||||||
|
|
||||||
|
<!-- Тело поста /-->
|
||||||
|
{*if $post->image}
|
||||||
|
<div class="pull-right" style="margin: 0px 0px 15px 15px">
|
||||||
|
<a href="{$post->image|resizepost:1000:1000}" class="zoom w" data-rel="group"><img class="img-thumbnail" src="{$post->image|resizepost:380:380}" alt="{$post->name|escape}" /></a>
|
||||||
|
</div>
|
||||||
|
{/if*}
|
||||||
|
|
||||||
|
{$post->text}
|
||||||
|
|
||||||
|
<!-- Соседние записи /-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
{foreach from=$repair_photos item=ph}
|
||||||
|
<div class="col-sm-4 col-xs-12" style="padding-bottom:20px;">
|
||||||
|
<a class="fancybox" data-rel="details" href="{$ph->bigImage}" rel="details">
|
||||||
|
<img class="img-thumbnail w" src="{$ph->image}" style="width:100%">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{/foreach}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{if $repair_photos || $prev_post || $next_post}<div class="clearfix"></div><hr />{/if}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div id="back_forward" class="row">
|
||||||
|
<div class="col-sm-6">
|
||||||
|
{if $prev_post}
|
||||||
|
|
||||||
|
<a class="back" id="PrevLink" href="/repairs/{$prev_post->url}/">
|
||||||
|
<img src="{$prev_post->image}" alt=""><br />
|
||||||
|
← {$prev_post->name}
|
||||||
|
</a>
|
||||||
|
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
{if $next_post}
|
||||||
|
<div class="col-sm-6" style="text-align:right;">
|
||||||
|
<a class="forward" id="NextLink" href="/repairs/{$next_post->url}/">
|
||||||
|
<img src="{$next_post->image}" alt=""><br />
|
||||||
|
{$next_post->name}
|
||||||
|
</a> →
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Комментарии -->
|
||||||
|
<div id="comments">
|
||||||
|
|
||||||
|
<h2>Комментарии</h2>
|
||||||
|
|
||||||
|
{if $comments}
|
||||||
|
<!-- Список с комментариями -->
|
||||||
|
<ul class="comment_list">
|
||||||
|
{foreach $comments as $comment}
|
||||||
|
<a name="comment_{$comment->id}"></a>
|
||||||
|
<li>
|
||||||
|
<!-- Имя и дата комментария-->
|
||||||
|
<div class="comment_header">
|
||||||
|
{$comment->name|escape} <i>{$comment->date|date}, {$comment->date|time}</i>
|
||||||
|
{if !$comment->approved}ожидает модерации</b>{/if}
|
||||||
|
</div>
|
||||||
|
<!-- Имя и дата комментария (The End)-->
|
||||||
|
|
||||||
|
<!-- Комментарий -->
|
||||||
|
{$comment->text|escape|nl2br}
|
||||||
|
<!-- Комментарий (The End)-->
|
||||||
|
</li>
|
||||||
|
{/foreach}
|
||||||
|
</ul>
|
||||||
|
<!-- Список с комментариями (The End)-->
|
||||||
|
{else}
|
||||||
|
<p>
|
||||||
|
Пока нет комментариев
|
||||||
|
</p>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
<!--Форма отправления комментария-->
|
||||||
|
|
||||||
|
<!--Подключаем js-проверку формы -->
|
||||||
|
<script src="/js/baloon/js/default.js" language="JavaScript" type="text/javascript"></script>
|
||||||
|
<script src="/js/baloon/js/validate.js" language="JavaScript" type="text/javascript"></script>
|
||||||
|
<script src="/js/baloon/js/baloon.js" language="JavaScript" type="text/javascript"></script>
|
||||||
|
<link href="/js/baloon/css/baloon.css" rel="stylesheet" type="text/css" />
|
||||||
|
|
||||||
|
|
||||||
|
<span class="well">
|
||||||
|
<form class="comment_form form-horizontal" method="post" role="form">
|
||||||
|
<span class="h22">Написать комментарий</span>
|
||||||
|
{if $error}
|
||||||
|
<div class="message_error">
|
||||||
|
{if $error=='captcha'}
|
||||||
|
Неверно введена капча
|
||||||
|
{elseif $error=='empty_name'}
|
||||||
|
Введите имя
|
||||||
|
{elseif $error=='empty_comment'}
|
||||||
|
Введите комментарий
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
<span class="form-group">
|
||||||
|
<label for="comment_textarea" class="col-sm-2 control-label">Комментарий</label>
|
||||||
|
<span class="col-sm-10"><textarea class="comment_textarea form-control" id="comment_text" name="text" data-format=".+" data-notice="Введите комментарий">{$comment_text}</textarea></span>
|
||||||
|
</span>
|
||||||
|
<span class="form-group">
|
||||||
|
<label for="comment_name" class="col-sm-2 control-label">Имя</label>
|
||||||
|
<span class="col-sm-10"><input class="input_name form-control" type="text" id="comment_name" name="name" value="{$comment_name}" data-format=".+" data-notice="Введите имя"/></span>
|
||||||
|
</span>
|
||||||
|
<span class="form-group">
|
||||||
|
<span class="col-sm-2"><p class="captcha"><img src="captcha/image.php?{math equation='rand(10,10000)'}" alt=""/></p></span>
|
||||||
|
<span class="col-sm-2"><input class="input_captcha form-control" id="comment_captcha" type="text" name="captcha_code" value="" format="\d\d\d\d" data-notice="Введите капчу"/></span>
|
||||||
|
</span>
|
||||||
|
<input class="btn btn-danger pull-right" type="submit" name="comment" value="Отправить">
|
||||||
|
</form>
|
||||||
|
</span>
|
||||||
|
<!--Форма отправления комментария (The End)-->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- Комментарии (The End) -->
|
||||||
|
|
||||||
|
{* Скрипт для листания через ctrl → *}
|
||||||
|
{* Ссылки на соседние страницы должны иметь id PrevLink и NextLink *}
|
||||||
|
<script type="text/javascript" src="js/ctrlnavigate.js"></script>
|
||||||
|
|
||||||
|
{literal}
|
||||||
|
<script>
|
||||||
|
$(function() {
|
||||||
|
$("a.zoom").fancybox({ 'hideOnContentClick' : true });
|
||||||
|
$(".content img").addClass( 'img-thumbnail w' );
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
{/literal}
|
||||||
218
view/RepairsView.php
Normal file
218
view/RepairsView.php
Normal file
@@ -0,0 +1,218 @@
|
|||||||
|
<?PHP
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simpla CMS
|
||||||
|
*
|
||||||
|
* @copyright 2011 Denis Pikusov
|
||||||
|
* @link http://simplacms.ru
|
||||||
|
* @author Denis Pikusov
|
||||||
|
*
|
||||||
|
* Этот класс использует шаблоны blog.tpl и post.tpl
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once('View.php');
|
||||||
|
|
||||||
|
class RepairsView extends View
|
||||||
|
{
|
||||||
|
public function fetch()
|
||||||
|
{
|
||||||
|
$url = $this->request->get('url', 'string');
|
||||||
|
|
||||||
|
// Если указан адрес поста,
|
||||||
|
if(!empty($url))
|
||||||
|
{
|
||||||
|
// Выводим пост
|
||||||
|
return $this->fetch_post($url);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// if($url)
|
||||||
|
return $this->fetch_blog($url);
|
||||||
|
//else
|
||||||
|
//return $this->fetchPage($url);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetchPage($url)
|
||||||
|
{
|
||||||
|
if(!$url) $url = 'repairs';
|
||||||
|
|
||||||
|
$page = $this->pages->get_page($url);
|
||||||
|
|
||||||
|
// Отображать скрытые страницы только админу
|
||||||
|
if(empty($page) || (!$page->visible && empty($_SESSION['admin'])))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
$this->design->assign('page', $page);
|
||||||
|
$this->design->assign('meta_title', $page->meta_title);
|
||||||
|
$this->design->assign('meta_keywords', $page->meta_keywords);
|
||||||
|
$this->design->assign('meta_description', $page->meta_description);
|
||||||
|
|
||||||
|
//return
|
||||||
|
//return $this->design->fetch('page.tpl');
|
||||||
|
return $this->fetch_blog($url);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function fetch_post($url)
|
||||||
|
{
|
||||||
|
|
||||||
|
// Выбираем пост из базы
|
||||||
|
$post = $this->repairs->get_post($url);
|
||||||
|
|
||||||
|
// Если не найден - ошибка
|
||||||
|
if(!$post || (!$post->visible && empty($_SESSION['admin'])))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Автозаполнение имени для формы комментария
|
||||||
|
if(!empty($this->user))
|
||||||
|
$this->design->assign('comment_name', $this->user->name);
|
||||||
|
|
||||||
|
|
||||||
|
// Принимаем комментарий
|
||||||
|
if ($this->request->method('post') && $this->request->post('comment'))
|
||||||
|
{
|
||||||
|
$comment->name = $this->request->post('name');
|
||||||
|
$comment->text = $this->request->post('text');
|
||||||
|
$captcha_code = $this->request->post('captcha_code', 'string');
|
||||||
|
|
||||||
|
// Передадим комментарий обратно в шаблон - при ошибке нужно будет заполнить форму
|
||||||
|
$this->design->assign('comment_text', $comment->text);
|
||||||
|
$this->design->assign('comment_name', $comment->name);
|
||||||
|
|
||||||
|
// Проверяем капчу и заполнение формы
|
||||||
|
if ($_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))
|
||||||
|
{
|
||||||
|
$this->design->assign('error', 'captcha');
|
||||||
|
}
|
||||||
|
elseif (empty($comment->name))
|
||||||
|
{
|
||||||
|
$this->design->assign('error', 'empty_name');
|
||||||
|
}
|
||||||
|
elseif (empty($comment->text))
|
||||||
|
{
|
||||||
|
$this->design->assign('error', 'empty_comment');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Создаем комментарий
|
||||||
|
$comment->object_id = $post->id;
|
||||||
|
$comment->type = 'repairs';
|
||||||
|
$comment->ip = $_SERVER['REMOTE_ADDR'];
|
||||||
|
|
||||||
|
// Если были одобренные комментарии от текущего ip, одобряем сразу
|
||||||
|
$this->db->query("SELECT 1 FROM __comments WHERE approved=1 AND ip=? LIMIT 1", $comment->ip);
|
||||||
|
if($this->db->num_rows()>0)
|
||||||
|
$comment->approved = 1;
|
||||||
|
|
||||||
|
// Добавляем комментарий в базу
|
||||||
|
$comment_id = $this->comments->add_comment($comment);
|
||||||
|
|
||||||
|
// Отправляем email
|
||||||
|
$this->notify->email_comment_admin($comment_id);
|
||||||
|
|
||||||
|
// Приберем сохраненную капчу, иначе можно отключить загрузку рисунков и постить старую
|
||||||
|
unset($_SESSION['captcha_code']);
|
||||||
|
header('location: '.$_SERVER['REQUEST_URI'].'#comment_'.$comment_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Комментарии к посту
|
||||||
|
$comments = $this->comments->get_comments(array('type'=>'repairs', 'object_id'=>$post->id, 'approved'=>1, 'ip'=>$_SERVER['REMOTE_ADDR']));
|
||||||
|
$this->design->assign('comments', $comments);
|
||||||
|
$this->design->assign('post', $post);
|
||||||
|
|
||||||
|
//Страница родительского раздела
|
||||||
|
$page_url = trim($_SERVER['REQUEST_URI']);
|
||||||
|
$arr_page_url = explode('/', $page_url);
|
||||||
|
$parent_url = $arr_page_url[1];
|
||||||
|
$this->page = $this->pages->get_page($parent_url);
|
||||||
|
$this->design->assign('page', $this->page);
|
||||||
|
|
||||||
|
// Соседние записи
|
||||||
|
$this->design->assign('next_post', $this->repairs->get_next_post($post->id));
|
||||||
|
$this->design->assign('prev_post', $this->repairs->get_prev_post($post->id));
|
||||||
|
|
||||||
|
$escapedName = htmlspecialchars($post->name);
|
||||||
|
|
||||||
|
// Мета-теги
|
||||||
|
if(!$post->meta_title) $post->meta_title = $escapedName . ' - Услуги Автосервиса Atomic Garage';
|
||||||
|
if(!$post->meta_description) $post->meta_description = $escapedName . ' в Atomic Garage - Услуги Автосервиса в Санкт-Петербурге.';
|
||||||
|
// if(!$post->meta_keywords) $post->meta_keywords = mb_strtolower($escapedName, 'utf-8') . ', акции, скидки, товары, услуги, для автомобиля, авто, санкт-петербург, установка, ремонт, тюнинг центр, линзы, оптика, фары, фонари, птф, дхо';
|
||||||
|
|
||||||
|
|
||||||
|
$this->design->assign('meta_title', $post->meta_title);
|
||||||
|
$this->design->assign('meta_keywords', $post->meta_keywords);
|
||||||
|
$this->design->assign('meta_description', $post->meta_description);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$this->db->query("SELECT * FROM __repair_photo WHERE repair_id='" . $post->id . "' ORDER BY position, id DESC");
|
||||||
|
$photos = $this->db->results();
|
||||||
|
foreach($photos as $ph){
|
||||||
|
$ph->image = Img::get('/files/post/' . $ph->img, array('width'=>400));
|
||||||
|
$ph->bigImage = Img::get('/files/post/' . $ph->img, array('width'=>1200));
|
||||||
|
}
|
||||||
|
$this->design->assign('repair_photos', $photos);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return $this->design->fetch('repairs_post.tpl');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Отображение списка постов
|
||||||
|
private function fetch_blog()
|
||||||
|
{
|
||||||
|
// Количество постов на 1 странице
|
||||||
|
$items_per_page = 20;
|
||||||
|
|
||||||
|
$filter = array();
|
||||||
|
|
||||||
|
// Выбираем только видимые посты
|
||||||
|
$filter['visible'] = 1;
|
||||||
|
|
||||||
|
// Текущая страница в постраничном выводе
|
||||||
|
$current_page = $this->request->get('page', 'integer');
|
||||||
|
|
||||||
|
// Если не задана, то равна 1
|
||||||
|
$current_page = max(1, $current_page);
|
||||||
|
$this->design->assign('current_page_num', $current_page);
|
||||||
|
|
||||||
|
// Вычисляем количество страниц
|
||||||
|
$posts_count = $this->repairs->count_posts($filter);
|
||||||
|
|
||||||
|
// Показать все страницы сразу
|
||||||
|
if($this->request->get('page') == 'all')
|
||||||
|
$items_per_page = $posts_count;
|
||||||
|
|
||||||
|
$pages_num = ceil($posts_count/$items_per_page);
|
||||||
|
$this->design->assign('total_pages_num', $pages_num);
|
||||||
|
|
||||||
|
$filter['page'] = $current_page;
|
||||||
|
$filter['limit'] = $items_per_page;
|
||||||
|
|
||||||
|
// Выбираем статьи из базы
|
||||||
|
$posts = $this->repairs->get_posts($filter);
|
||||||
|
if(empty($posts))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Передаем в шаблон
|
||||||
|
$this->design->assign('posts', $posts);
|
||||||
|
|
||||||
|
|
||||||
|
// $this->page = $this->pages->get_page();
|
||||||
|
$page = $this->pages->get_page('repairs');
|
||||||
|
$this->design->assign('page', $this->page);
|
||||||
|
// Метатеги
|
||||||
|
if($this->page)
|
||||||
|
{
|
||||||
|
$this->design->assign('meta_title', $this->page->meta_title);
|
||||||
|
$this->design->assign('meta_keywords', $this->page->meta_keywords);
|
||||||
|
$this->design->assign('meta_description', $this->page->meta_description);
|
||||||
|
}
|
||||||
|
|
||||||
|
$body = $this->design->fetch('repairs.tpl');
|
||||||
|
|
||||||
|
return $body;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user