Add meilisearch support
This commit is contained in:
parent
ad377e673e
commit
3287e4e45b
|
|
@ -8,7 +8,9 @@
|
|||
"php": "^8.0.2",
|
||||
"october/rain": "^3.3",
|
||||
"laravel/framework": "^9.0",
|
||||
"october/all": "^3.1"
|
||||
"october/all": "^3.1",
|
||||
"laravel/scout": "^10.1",
|
||||
"meilisearch/meilisearch-php": "^1.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^8.5|^9.0"
|
||||
|
|
@ -36,7 +38,8 @@
|
|||
"config": {
|
||||
"preferred-install": "dist",
|
||||
"allow-plugins": {
|
||||
"composer/installers": true
|
||||
"composer/installers": true,
|
||||
"php-http/discovery": true
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,147 @@
|
|||
<?php
|
||||
|
||||
use Indikator\News\Models\Posts;
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Default Search Engine
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This option controls the default search connection that gets used while
|
||||
| using Laravel Scout. This connection is used when syncing all models
|
||||
| to the search service. You should adjust this based on your needs.
|
||||
|
|
||||
| Supported: "algolia", "meilisearch", "database", "collection", "null"
|
||||
|
|
||||
*/
|
||||
|
||||
'driver' => env('SCOUT_DRIVER', 'algolia'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Index Prefix
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify a prefix that will be applied to all search index
|
||||
| names used by Scout. This prefix may be useful if you have multiple
|
||||
| "tenants" or applications sharing the same search infrastructure.
|
||||
|
|
||||
*/
|
||||
|
||||
'prefix' => env('SCOUT_PREFIX', ''),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Queue Data Syncing
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This option allows you to control if the operations that sync your data
|
||||
| with your search engines are queued. When this is set to "true" then
|
||||
| all automatic data syncing will get queued for better performance.
|
||||
|
|
||||
*/
|
||||
|
||||
'queue' => env('SCOUT_QUEUE', false),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Database Transactions
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This configuration option determines if your data will only be synced
|
||||
| with your search indexes after every open database transaction has
|
||||
| been committed, thus preventing any discarded data from syncing.
|
||||
|
|
||||
*/
|
||||
|
||||
'after_commit' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Chunk Sizes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| These options allow you to control the maximum chunk size when you are
|
||||
| mass importing data into the search engine. This allows you to fine
|
||||
| tune each of these chunk sizes based on the power of the servers.
|
||||
|
|
||||
*/
|
||||
|
||||
'chunk' => [
|
||||
'searchable' => 500,
|
||||
'unsearchable' => 500,
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Soft Deletes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This option allows to control whether to keep soft deleted records in
|
||||
| the search indexes. Maintaining soft deleted records can be useful
|
||||
| if your application still needs to search for the records later.
|
||||
|
|
||||
*/
|
||||
|
||||
'soft_delete' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Identify User
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This option allows you to control whether to notify the search engine
|
||||
| of the user performing the search. This is sometimes useful if the
|
||||
| engine supports any analytics based on this application's users.
|
||||
|
|
||||
| Supported engines: "algolia"
|
||||
|
|
||||
*/
|
||||
|
||||
'identify' => env('SCOUT_IDENTIFY', false),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Algolia Configuration
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may configure your Algolia settings. Algolia is a cloud hosted
|
||||
| search engine which works great with Scout out of the box. Just plug
|
||||
| in your application ID and admin API key to get started searching.
|
||||
|
|
||||
*/
|
||||
|
||||
'algolia' => [
|
||||
'id' => env('ALGOLIA_APP_ID', ''),
|
||||
'secret' => env('ALGOLIA_SECRET', ''),
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Meilisearch Configuration
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may configure your Meilisearch settings. Meilisearch is an open
|
||||
| source search engine with minimal configuration. Below, you can state
|
||||
| the host and key information for your own Meilisearch installation.
|
||||
|
|
||||
| See: https://docs.meilisearch.com/guides/advanced_guides/configuration.html
|
||||
|
|
||||
*/
|
||||
|
||||
'meilisearch' => [
|
||||
'host' => env('MEILISEARCH_HOST', 'http://localhost:7700'),
|
||||
'key' => env('MEILISEARCH_KEY'),
|
||||
'index-settings' => [
|
||||
Posts::class => [
|
||||
'sortableAttributes' => ['published_at','created_at','updated_at'],
|
||||
],
|
||||
// 'users' => [
|
||||
// 'filterableAttributes'=> ['id', 'name', 'email'],
|
||||
// ],
|
||||
],
|
||||
],
|
||||
|
||||
];
|
||||
|
|
@ -1,5 +1,8 @@
|
|||
<?php namespace Indikator\News\Models;
|
||||
|
||||
use Event;
|
||||
use Lang;
|
||||
use Laravel\Scout\Searchable;
|
||||
use Model;
|
||||
use BackendAuth;
|
||||
use Carbon\Carbon;
|
||||
|
|
@ -7,6 +10,9 @@ use Cms\Classes\Page as CmsPage;
|
|||
use Indikator\News\Models\Categories as NewsCategories;
|
||||
use Db;
|
||||
use App;
|
||||
use October\Rain\Database\Traits\Sluggable;
|
||||
use October\Rain\Database\Traits\Validation;
|
||||
use October\Rain\Router\Router;
|
||||
use Str;
|
||||
use Url;
|
||||
// require "plugins\\donatello-za\\rake-php-plus\\src\\RakePlus.php";
|
||||
|
|
@ -24,8 +30,9 @@ use October\Rain\Support\Facades\Config;
|
|||
|
||||
class Posts extends Model
|
||||
{
|
||||
use \October\Rain\Database\Traits\Sluggable;
|
||||
use \October\Rain\Database\Traits\Validation;
|
||||
use Sluggable;
|
||||
use Validation;
|
||||
use Searchable;
|
||||
|
||||
public $implement = ['@RainLab.Translate.Behaviors.TranslatableModel'];
|
||||
|
||||
|
|
@ -57,7 +64,7 @@ class Posts extends Model
|
|||
protected $slugs = [
|
||||
'slug' => 'title'
|
||||
];
|
||||
|
||||
|
||||
protected $jsonable = [
|
||||
'image'
|
||||
];
|
||||
|
|
@ -148,6 +155,21 @@ class Posts extends Model
|
|||
]
|
||||
];
|
||||
|
||||
/**
|
||||
* Get the indexable data array for the model.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function toSearchableArray()
|
||||
{
|
||||
return [
|
||||
'title' => $this->title,
|
||||
'slug'=> $this->slug,
|
||||
'introductory'=> $this->introductory,
|
||||
'content'=> $this->content
|
||||
];
|
||||
}
|
||||
|
||||
public $preview = null;
|
||||
|
||||
public function getSendAttribute() {
|
||||
|
|
@ -416,7 +438,7 @@ class Posts extends Model
|
|||
public function duplicate($post)
|
||||
{
|
||||
$clone = new Posts();
|
||||
$clone->title = \Lang::get('indikator.news::lang.form.clone_of').' '.$post->title;
|
||||
$clone->title = Lang::get('indikator.news::lang.form.clone_of').' '.$post->title;
|
||||
$clone->slug = $post->slug.'-'.now()->format('Y-m-d-h-i-s');
|
||||
$clone->status = 3;
|
||||
$clone->introductory = $post->introductory;
|
||||
|
|
@ -434,7 +456,7 @@ class Posts extends Model
|
|||
|
||||
$clone->save();
|
||||
|
||||
\Event::fire('indikator.news.posts.duplicate', [&$clone, $post]);
|
||||
Event::fire('indikator.news.posts.duplicate', [&$clone, $post]);
|
||||
|
||||
return $clone;
|
||||
}
|
||||
|
|
@ -605,7 +627,7 @@ class Posts extends Model
|
|||
|
||||
$page->rewriteTranslatablePageUrl($locale);
|
||||
$params = ['category' => $item->getCategory()['slug'], 'id' => $item->id, 'slug' => $item->slug];
|
||||
$router = new \October\Rain\Router\Router;
|
||||
$router = new Router;
|
||||
$localeUrl = $router->urlFromPattern($page->url, $params);
|
||||
|
||||
return url($locale.$localeUrl);
|
||||
|
|
@ -704,7 +726,7 @@ class Posts extends Model
|
|||
}else{
|
||||
$image = 'article/'. implode('/', array_slice(explode( "-", $image), 0, 3)) . '/'. $image_name;
|
||||
}
|
||||
|
||||
|
||||
$imagedata = getimagesize(storage_path("app/uploads/public/". $image));
|
||||
return $imagedata[0] > $imagedata[1] ? "horizontal" : "vertical";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ forceUrl = 1
|
|||
<meta name="keywords" content="{{ this.page.meta_keywords }}">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="icon" type="image/png" href="{{ 'assets/images/favicon.png'|theme }}"/>
|
||||
<link rel="shortcut icon" type="image/png" href="{{ 'assets/images/favicon.png'|theme }}"/>
|
||||
|
||||
|
|
@ -30,19 +30,18 @@ forceUrl = 1
|
|||
{% partial 'header' data=activeLocale %}
|
||||
{% page %}
|
||||
{% partial 'footer' %}
|
||||
|
||||
|
||||
</body>
|
||||
<script src="{{ ['assets/js/jquery.js', 'assets/js/moment.min.js', 'assets/js/slick.min.js', 'assets/js/news-slider.js',
|
||||
'assets/js/jquery.fancybox.min.js', 'assets/js/main.js']|theme }}"></script>
|
||||
|
||||
{% framework %}
|
||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-BGT89NCBQC"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-BGT89NCBQC"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-BGT89NCBQC');
|
||||
</script>
|
||||
</html>
|
||||
gtag('config', 'G-BGT89NCBQC');
|
||||
</script>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ forceUrl = 1
|
|||
<meta name="keywords" content="{{ this.page.meta_keywords }}">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap" rel="stylesheet">
|
||||
|
||||
|
||||
<link rel="icon" type="image/png" href="{{ 'assets/images/favicon.png'|theme }}"/>
|
||||
<link rel="shortcut icon" type="image/png" href="{{ 'assets/images/favicon.png'|theme }}"/>
|
||||
|
||||
|
|
@ -23,18 +23,18 @@ forceUrl = 1
|
|||
<title>{{ this.page.title | default(this.theme.site)}}</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
{% partial 'header' data=activeLocale %}
|
||||
{% page %}
|
||||
{% partial 'footer' %}
|
||||
|
||||
<!-- Top =================== -->
|
||||
|
||||
<!-- Top =================== -->
|
||||
<span class="to-top" id="to-top">
|
||||
<img src="{{ 'assets/images/top-arrow.png'|theme }}" alt="top-arrow">
|
||||
</span>
|
||||
<!-- Top =================== -->
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
<script src="{{ ['assets/js/jquery.js', 'assets/js/moment.min.js', 'assets/js/slick.min.js', 'assets/js/news-slider.js',
|
||||
|
|
@ -43,16 +43,17 @@ forceUrl = 1
|
|||
<script>
|
||||
new WOW().init();
|
||||
</script>
|
||||
|
||||
|
||||
{% framework %}
|
||||
<!-- <script src="{{ 'assets/js/main.js'|theme }}"></script> -->
|
||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-BGT89NCBQC"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-BGT89NCBQC');
|
||||
</script>
|
||||
</html>
|
||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-BGT89NCBQC"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-BGT89NCBQC');
|
||||
</script>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -4,15 +4,15 @@ layout = "default"
|
|||
is_hidden = 0
|
||||
==
|
||||
<section class="error" id="intro">
|
||||
<div class="auto_container">
|
||||
<div class="error_wrap">
|
||||
<div class="error_title">
|
||||
Ошибка 404!
|
||||
</div>
|
||||
<div class="error_text">
|
||||
Страница не найдена, попробуйте найти эту новость в
|
||||
разделе <a href="{{ 'archive'|page}}" class="error_link" >Архив !</a>
|
||||
</div>
|
||||
<div class="auto_container">
|
||||
<div class="error_wrap">
|
||||
<div class="error_title">
|
||||
Ошибка 404!
|
||||
</div>
|
||||
<div class="error_text">
|
||||
Страница не найдена, попробуйте найти эту новость в
|
||||
разделе <a href="{{ 'archive'|page}}" class="error_link" >Архив !</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -4,282 +4,282 @@ layout = "default"
|
|||
is_hidden = 0
|
||||
==
|
||||
<div class="privacy">
|
||||
<div class="auto_container">
|
||||
<div class="privacy_wrap">
|
||||
<div class="privacy_title">
|
||||
ПОЛИТИКА КОНФИДЕНЦИАЛЬНОСТИ
|
||||
</div>
|
||||
<p class="privacy_text">
|
||||
Настоящая Политика конфиденциальности персональных данных (далее – Политика конфиденциальности)
|
||||
действует в отношении всей информации, которую электронное СМИ TDH (далее Сайт), расположенное на
|
||||
доменном имени https://tdh.gov.tm/, может получить о Пользователе во время использования сайта.
|
||||
</p>
|
||||
<div class="privacy_sub-title">
|
||||
1. ОПРЕДЕЛЕНИЕ ТЕРМИНОВ
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
1.1 В настоящей Политике конфиденциальности используются следующие термины:
|
||||
</li>
|
||||
<ul>
|
||||
<li>1.1.1. «Администрация сайта электронного СМИ TDH (далее – Администрация сайта)» –
|
||||
уполномоченные сотрудники на управления сайтом, которые организуют и (или) осуществляют
|
||||
обработку персональных данных, а также определяет цели обработки персональных данных, состав
|
||||
персональных данных, подлежащих обработке, действия (операции), совершаемые с персональными
|
||||
данными.
|
||||
</li>
|
||||
<li>1.1.2. «Персональные данные» - любая информация, относящаяся к прямо или косвенно
|
||||
определенному или определяемому физическому лицу (субъекту персональных данных).
|
||||
</li>
|
||||
<li>1.1.3. «Обработка персональных данных» - любое действие (операция) или совокупность действий
|
||||
(операций), совершаемых с использованием средств автоматизации или без использования таких
|
||||
средств с персональными данными, включая сбор, запись, систематизацию, накопление, хранение,
|
||||
уточнение (обновление, изменение), извлечение, использование, передачу (распространение,
|
||||
предоставление, доступ), обезличивание, блокирование, удаление, уничтожение персональных
|
||||
данных.
|
||||
</li>
|
||||
<li>1.1.4. «Конфиденциальность персональных данных» - обязательное для соблюдения Оператором или
|
||||
иным получившим доступ к персональным данным лицом требование не допускать их
|
||||
распространения без согласия субъекта персональных данных или наличия иного законного
|
||||
основания.
|
||||
</li>
|
||||
<li>1.1.5. «Пользователь сайта электронного СМИ TDH (далее Пользователь)» – лицо, имеющее доступ
|
||||
к Сайту, посредством сети Интернет и использующее Сайт</li>
|
||||
<li>1.1.6. «Cookies» — небольшой фрагмент данных, отправленный веб-сервером и хранимый на
|
||||
компьютере пользователя, который веб-клиент или веб-браузер каждый раз пересылает
|
||||
веб-серверу в HTTP-запросе при попытке открыть страницу соответствующего сайта.</li>
|
||||
<li>1.1.7. «IP-адрес» — уникальный сетевой адрес узла в компьютерной сети, построенной по
|
||||
протоколу IP.
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
<div class="privacy_sub-title">
|
||||
2. ОБЩИЕ ПОЛОЖЕНИЯ
|
||||
</div>
|
||||
<ul>
|
||||
<li>2.1. Использование Пользователем Сайта означает согласие с настоящей Политикой
|
||||
конфиденциальности и условиями обработки персональных данных Пользователя.
|
||||
</li>
|
||||
<li>2.2. В случае несогласия с условиями Политики конфиденциальности Пользователь должен прекратить
|
||||
использование Сайта.
|
||||
</li>
|
||||
<li>2.3.Настоящая Политика конфиденциальности применяется только к электронному СМИ TDH Электронное
|
||||
СМИ TDH не контролирует и не несет ответственность за сайты третьих лиц, на которые Пользователь
|
||||
может перейти по ссылкам, доступным на Сайте.
|
||||
</li>
|
||||
<li>2.4. Администрация сайта не проверяет достоверность персональных данных, предоставляемых
|
||||
Пользователем Сайта.
|
||||
</li>
|
||||
<li>2.5. Пользователь Сайта имеет полное право отозвать свои персональные данные в любой момент,
|
||||
обратившись к Администрации Сайта.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="privacy_sub-title">
|
||||
3. ПРЕДМЕТ ПОЛИТИКИ КОНФИДЕНЦИАЛЬНОСТИ
|
||||
</div>
|
||||
<ul>
|
||||
<li>3.1. Настоящая Политика конфиденциальности устанавливает обязательства Администрации Сайта по
|
||||
неразглашению и обеспечению режима защиты конфиденциальности персональных данных, которые
|
||||
Пользователь предоставляет по запросу Администрации сайта при подписке на новости Сайта..
|
||||
</li>
|
||||
<li>3.2. Персональные данные, разрешённые к обработке в рамках настоящей Политики
|
||||
конфиденциальности, предоставляются Пользователем путём заполнения контактной формы на Сайте:
|
||||
</li>
|
||||
<ul>
|
||||
<li>
|
||||
3.2.1 адрес электронной почты (e-mail);
|
||||
</li>
|
||||
</ul>
|
||||
<li>3.3. Электронное СМИ TDH не защищает Данные, которые автоматически передаются в процессе
|
||||
просмотра рекламных блоков и при посещении страниц.
|
||||
</li>
|
||||
|
||||
<ol>
|
||||
<li>IP адрес;</li>
|
||||
<li>информация из cookies;</li>
|
||||
<li>информация о браузере (или иной программе, которая осуществляет доступ к показу рекламы);
|
||||
</li>
|
||||
<li>время доступа;</li>
|
||||
<li>адрес страницы, на которой расположен рекламный блок;</li>
|
||||
<li>реферер (адрес предыдущей страницы).</li>
|
||||
</ol>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
3.3.1. Отключение cookies может повлечь невозможность доступа к частям Сайта.
|
||||
</li>
|
||||
<li>
|
||||
3.3.2. Сайт осуществляет сбор статистики об IP-адресах своих посетителей. Данная информация
|
||||
используется с целью выявления и решения технических проблем.
|
||||
</li>
|
||||
</ul>
|
||||
<li>
|
||||
3.4. Любая иная персональная информация, неоговоренная выше (история посещения, используемые
|
||||
браузеры и операционные системы и т.д.) подлежит надежному хранению и нераспространению, за
|
||||
исключением случаев, предусмотренных в п.п. 5.2. настоящей Политики конфиденциальности.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="privacy_sub-title">
|
||||
4. ЦЕЛИ СБОРА ПЕРСОНАЛЬНОЙ ИНФОРМАЦИИ ПОЛЬЗОВАТЕЛЯ
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
4.1. Персональные данные Пользователя Администрация Сайта может использовать в целях:
|
||||
</li>
|
||||
<ul>
|
||||
<li>
|
||||
4.1.1. Идентификации Пользователя для направления ему по электронной почте актуальных
|
||||
новостей и полезной информации от Администрации Сайта.
|
||||
</li>
|
||||
<li>
|
||||
4.1.2. Установления с Пользователем обратной связи, включая направление уведомлений,
|
||||
запросов, касающихся использования Сайта.
|
||||
</li>
|
||||
<li>
|
||||
4.1.3. Определения места нахождения Пользователя для обеспечения безопасности,
|
||||
предотвращения мошенничества.
|
||||
</li>
|
||||
<li>
|
||||
4.1.4. Подтверждения достоверности и полноты персональных данных, предоставленных
|
||||
Пользователем.
|
||||
</li>
|
||||
<li>
|
||||
4.1.5. Предоставления Пользователю эффективной клиентской и технической поддержки при
|
||||
возникновении проблем связанных с использованием Сайта.
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="privacy_sub-title">
|
||||
5. СПОСОБЫ И СРОКИ ОБРАБОТКИ ПЕРСОНАЛЬНОЙ ИНФОРМАЦИИ
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
5.1. Обработка персональных данных Пользователя осуществляется без ограничения срока, любым
|
||||
законным способом, в том числе в информационных системах персональных данных с использованием
|
||||
средств автоматизации или без использования таких средств.
|
||||
</li>
|
||||
<li>
|
||||
5.2. Персональные данные Пользователя могут быть переданы уполномоченным органам государственной
|
||||
власти Туркменистана только по основаниям и в порядке, установленным законодательством
|
||||
Туркменистана.
|
||||
</li>
|
||||
<li>
|
||||
5.3. Администрация сайта принимает необходимые организационные и технические меры для защиты
|
||||
персональной информации Пользователя от неправомерного или случайного доступа, уничтожения,
|
||||
изменения, блокирования, копирования, распространения, а также от иных неправомерных действий
|
||||
третьих лиц.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="privacy_sub-title">
|
||||
6. ОБЯЗАТЕЛЬСТВА СТОРОН
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
6.1. Пользователь обязан:
|
||||
</li>
|
||||
<ul>
|
||||
<li>
|
||||
6.1.1. Предоставить информацию о персональных данных, необходимую для пользования Сайтом.
|
||||
</li>
|
||||
<li>
|
||||
6.1.2. Обновить, дополнить предоставленную информацию о персональных данных в случае
|
||||
изменения данной информации.
|
||||
</li>
|
||||
</ul>
|
||||
<li>
|
||||
6.2. Администрация сайта обязана:
|
||||
</li>
|
||||
<ul>
|
||||
<li>
|
||||
6.2.1. Использовать полученную информацию исключительно для целей, указанных в п. 4
|
||||
настоящей Политики конфиденциальности.
|
||||
</li>
|
||||
<li>
|
||||
6.2.2. Обеспечить хранение конфиденциальной информации в тайне, не разглашать, а также не
|
||||
осуществлять продажу, обмен, опубликование, либо разглашение иными возможными способами
|
||||
переданных персональных данных Пользователя, за исключением п.п. 5.2. настоящей Политики
|
||||
Конфиденциальности.
|
||||
</li>
|
||||
<li>
|
||||
6.2.3. Принимать меры предосторожности для защиты конфиденциальности персональных данных
|
||||
Пользователя согласно порядку, обычно используемого для защиты такого рода информации в
|
||||
существующем деловом обороте.
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
<div class="privacy_sub-title">
|
||||
7. ОТВЕТСТВЕННОСТЬ СТОРОН
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
7.1. В случае утраты или разглашения Конфиденциальной информации Администрация сайта не несёт
|
||||
ответственность, если данная конфиденциальная информация:
|
||||
</li>
|
||||
<ul>
|
||||
<li>
|
||||
7.1.1. Стала публичным достоянием до её утраты или разглашения.
|
||||
</li>
|
||||
<li>
|
||||
7.1.2. Была получена от третьей стороны до момента её получения Администрацией сайта.
|
||||
</li>
|
||||
<li>
|
||||
7.1.3. Была разглашена с согласия Пользователя.
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="privacy_sub-title">
|
||||
8. РАЗРЕШЕНИЕ СПОРОВ
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
8.1. При не достижении соглашения спор будет передан на рассмотрение в судебный орган в
|
||||
соответствии с действующим законодательством Туркменистана.
|
||||
</li>
|
||||
<li>
|
||||
8.2. К настоящей Политике конфиденциальности и отношениям между Пользователем и Администрацией
|
||||
сайта применяется действующее законодательство Туркменистана.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<div class="privacy_sub-title">
|
||||
9. ДОПОЛНИТЕЛЬНЫЕ УСЛОВИЯ
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
9.1. Администрация сайта вправе вносить изменения в настоящую Политику конфиденциальности без
|
||||
согласия Пользователя.
|
||||
</li>
|
||||
<li>
|
||||
9.2. Политика конфиденциальности вступает в силу с момента ее размещения на Сайте,
|
||||
</li>
|
||||
<li>
|
||||
9.3. Все предложения или вопросы по настоящей Политике конфиденциальности следует сообщать
|
||||
<a href="#">
|
||||
https://tdh.gov.tm/ru/contact#
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
9.4. Действующая Политика конфиденциальности размещена на странице по адресу
|
||||
<a href="#">
|
||||
http://event-live.ru/more/o-proekte/
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="auto_container">
|
||||
<div class="privacy_wrap">
|
||||
<div class="privacy_title">
|
||||
ПОЛИТИКА КОНФИДЕНЦИАЛЬНОСТИ
|
||||
</div>
|
||||
<p class="privacy_text">
|
||||
Настоящая Политика конфиденциальности персональных данных (далее – Политика конфиденциальности)
|
||||
действует в отношении всей информации, которую электронное СМИ TDH (далее Сайт), расположенное на
|
||||
доменном имени https://tdh.gov.tm/, может получить о Пользователе во время использования сайта.
|
||||
</p>
|
||||
<div class="privacy_sub-title">
|
||||
1. ОПРЕДЕЛЕНИЕ ТЕРМИНОВ
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
1.1 В настоящей Политике конфиденциальности используются следующие термины:
|
||||
</li>
|
||||
<ul>
|
||||
<li>1.1.1. «Администрация сайта электронного СМИ TDH (далее – Администрация сайта)» –
|
||||
уполномоченные сотрудники на управления сайтом, которые организуют и (или) осуществляют
|
||||
обработку персональных данных, а также определяет цели обработки персональных данных, состав
|
||||
персональных данных, подлежащих обработке, действия (операции), совершаемые с персональными
|
||||
данными.
|
||||
</li>
|
||||
<li>1.1.2. «Персональные данные» - любая информация, относящаяся к прямо или косвенно
|
||||
определенному или определяемому физическому лицу (субъекту персональных данных).
|
||||
</li>
|
||||
<li>1.1.3. «Обработка персональных данных» - любое действие (операция) или совокупность действий
|
||||
(операций), совершаемых с использованием средств автоматизации или без использования таких
|
||||
средств с персональными данными, включая сбор, запись, систематизацию, накопление, хранение,
|
||||
уточнение (обновление, изменение), извлечение, использование, передачу (распространение,
|
||||
предоставление, доступ), обезличивание, блокирование, удаление, уничтожение персональных
|
||||
данных.
|
||||
</li>
|
||||
<li>1.1.4. «Конфиденциальность персональных данных» - обязательное для соблюдения Оператором или
|
||||
иным получившим доступ к персональным данным лицом требование не допускать их
|
||||
распространения без согласия субъекта персональных данных или наличия иного законного
|
||||
основания.
|
||||
</li>
|
||||
<li>1.1.5. «Пользователь сайта электронного СМИ TDH (далее Пользователь)» – лицо, имеющее доступ
|
||||
к Сайту, посредством сети Интернет и использующее Сайт</li>
|
||||
<li>1.1.6. «Cookies» — небольшой фрагмент данных, отправленный веб-сервером и хранимый на
|
||||
компьютере пользователя, который веб-клиент или веб-браузер каждый раз пересылает
|
||||
веб-серверу в HTTP-запросе при попытке открыть страницу соответствующего сайта.</li>
|
||||
<li>1.1.7. «IP-адрес» — уникальный сетевой адрес узла в компьютерной сети, построенной по
|
||||
протоколу IP.
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
<div class="privacy_sub-title">
|
||||
2. ОБЩИЕ ПОЛОЖЕНИЯ
|
||||
</div>
|
||||
<ul>
|
||||
<li>2.1. Использование Пользователем Сайта означает согласие с настоящей Политикой
|
||||
конфиденциальности и условиями обработки персональных данных Пользователя.
|
||||
</li>
|
||||
<li>2.2. В случае несогласия с условиями Политики конфиденциальности Пользователь должен прекратить
|
||||
использование Сайта.
|
||||
</li>
|
||||
<li>2.3.Настоящая Политика конфиденциальности применяется только к электронному СМИ TDH Электронное
|
||||
СМИ TDH не контролирует и не несет ответственность за сайты третьих лиц, на которые Пользователь
|
||||
может перейти по ссылкам, доступным на Сайте.
|
||||
</li>
|
||||
<li>2.4. Администрация сайта не проверяет достоверность персональных данных, предоставляемых
|
||||
Пользователем Сайта.
|
||||
</li>
|
||||
<li>2.5. Пользователь Сайта имеет полное право отозвать свои персональные данные в любой момент,
|
||||
обратившись к Администрации Сайта.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="privacy_sub-title">
|
||||
3. ПРЕДМЕТ ПОЛИТИКИ КОНФИДЕНЦИАЛЬНОСТИ
|
||||
</div>
|
||||
<ul>
|
||||
<li>3.1. Настоящая Политика конфиденциальности устанавливает обязательства Администрации Сайта по
|
||||
неразглашению и обеспечению режима защиты конфиденциальности персональных данных, которые
|
||||
Пользователь предоставляет по запросу Администрации сайта при подписке на новости Сайта..
|
||||
</li>
|
||||
<li>3.2. Персональные данные, разрешённые к обработке в рамках настоящей Политики
|
||||
конфиденциальности, предоставляются Пользователем путём заполнения контактной формы на Сайте:
|
||||
</li>
|
||||
<ul>
|
||||
<li>
|
||||
3.2.1 адрес электронной почты (e-mail);
|
||||
</li>
|
||||
</ul>
|
||||
<li>3.3. Электронное СМИ TDH не защищает Данные, которые автоматически передаются в процессе
|
||||
просмотра рекламных блоков и при посещении страниц.
|
||||
</li>
|
||||
|
||||
<ol>
|
||||
<li>IP адрес;</li>
|
||||
<li>информация из cookies;</li>
|
||||
<li>информация о браузере (или иной программе, которая осуществляет доступ к показу рекламы);
|
||||
</li>
|
||||
<li>время доступа;</li>
|
||||
<li>адрес страницы, на которой расположен рекламный блок;</li>
|
||||
<li>реферер (адрес предыдущей страницы).</li>
|
||||
</ol>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
3.3.1. Отключение cookies может повлечь невозможность доступа к частям Сайта.
|
||||
</li>
|
||||
<li>
|
||||
3.3.2. Сайт осуществляет сбор статистики об IP-адресах своих посетителей. Данная информация
|
||||
используется с целью выявления и решения технических проблем.
|
||||
</li>
|
||||
</ul>
|
||||
<li>
|
||||
3.4. Любая иная персональная информация, неоговоренная выше (история посещения, используемые
|
||||
браузеры и операционные системы и т.д.) подлежит надежному хранению и нераспространению, за
|
||||
исключением случаев, предусмотренных в п.п. 5.2. настоящей Политики конфиденциальности.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="privacy_sub-title">
|
||||
4. ЦЕЛИ СБОРА ПЕРСОНАЛЬНОЙ ИНФОРМАЦИИ ПОЛЬЗОВАТЕЛЯ
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
4.1. Персональные данные Пользователя Администрация Сайта может использовать в целях:
|
||||
</li>
|
||||
<ul>
|
||||
<li>
|
||||
4.1.1. Идентификации Пользователя для направления ему по электронной почте актуальных
|
||||
новостей и полезной информации от Администрации Сайта.
|
||||
</li>
|
||||
<li>
|
||||
4.1.2. Установления с Пользователем обратной связи, включая направление уведомлений,
|
||||
запросов, касающихся использования Сайта.
|
||||
</li>
|
||||
<li>
|
||||
4.1.3. Определения места нахождения Пользователя для обеспечения безопасности,
|
||||
предотвращения мошенничества.
|
||||
</li>
|
||||
<li>
|
||||
4.1.4. Подтверждения достоверности и полноты персональных данных, предоставленных
|
||||
Пользователем.
|
||||
</li>
|
||||
<li>
|
||||
4.1.5. Предоставления Пользователю эффективной клиентской и технической поддержки при
|
||||
возникновении проблем связанных с использованием Сайта.
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="privacy_sub-title">
|
||||
5. СПОСОБЫ И СРОКИ ОБРАБОТКИ ПЕРСОНАЛЬНОЙ ИНФОРМАЦИИ
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
5.1. Обработка персональных данных Пользователя осуществляется без ограничения срока, любым
|
||||
законным способом, в том числе в информационных системах персональных данных с использованием
|
||||
средств автоматизации или без использования таких средств.
|
||||
</li>
|
||||
<li>
|
||||
5.2. Персональные данные Пользователя могут быть переданы уполномоченным органам государственной
|
||||
власти Туркменистана только по основаниям и в порядке, установленным законодательством
|
||||
Туркменистана.
|
||||
</li>
|
||||
<li>
|
||||
5.3. Администрация сайта принимает необходимые организационные и технические меры для защиты
|
||||
персональной информации Пользователя от неправомерного или случайного доступа, уничтожения,
|
||||
изменения, блокирования, копирования, распространения, а также от иных неправомерных действий
|
||||
третьих лиц.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="privacy_sub-title">
|
||||
6. ОБЯЗАТЕЛЬСТВА СТОРОН
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
6.1. Пользователь обязан:
|
||||
</li>
|
||||
<ul>
|
||||
<li>
|
||||
6.1.1. Предоставить информацию о персональных данных, необходимую для пользования Сайтом.
|
||||
</li>
|
||||
<li>
|
||||
6.1.2. Обновить, дополнить предоставленную информацию о персональных данных в случае
|
||||
изменения данной информации.
|
||||
</li>
|
||||
</ul>
|
||||
<li>
|
||||
6.2. Администрация сайта обязана:
|
||||
</li>
|
||||
<ul>
|
||||
<li>
|
||||
6.2.1. Использовать полученную информацию исключительно для целей, указанных в п. 4
|
||||
настоящей Политики конфиденциальности.
|
||||
</li>
|
||||
<li>
|
||||
6.2.2. Обеспечить хранение конфиденциальной информации в тайне, не разглашать, а также не
|
||||
осуществлять продажу, обмен, опубликование, либо разглашение иными возможными способами
|
||||
переданных персональных данных Пользователя, за исключением п.п. 5.2. настоящей Политики
|
||||
Конфиденциальности.
|
||||
</li>
|
||||
<li>
|
||||
6.2.3. Принимать меры предосторожности для защиты конфиденциальности персональных данных
|
||||
Пользователя согласно порядку, обычно используемого для защиты такого рода информации в
|
||||
существующем деловом обороте.
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
<div class="privacy_sub-title">
|
||||
7. ОТВЕТСТВЕННОСТЬ СТОРОН
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
7.1. В случае утраты или разглашения Конфиденциальной информации Администрация сайта не несёт
|
||||
ответственность, если данная конфиденциальная информация:
|
||||
</li>
|
||||
<ul>
|
||||
<li>
|
||||
7.1.1. Стала публичным достоянием до её утраты или разглашения.
|
||||
</li>
|
||||
<li>
|
||||
7.1.2. Была получена от третьей стороны до момента её получения Администрацией сайта.
|
||||
</li>
|
||||
<li>
|
||||
7.1.3. Была разглашена с согласия Пользователя.
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="privacy_sub-title">
|
||||
8. РАЗРЕШЕНИЕ СПОРОВ
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
8.1. При не достижении соглашения спор будет передан на рассмотрение в судебный орган в
|
||||
соответствии с действующим законодательством Туркменистана.
|
||||
</li>
|
||||
<li>
|
||||
8.2. К настоящей Политике конфиденциальности и отношениям между Пользователем и Администрацией
|
||||
сайта применяется действующее законодательство Туркменистана.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<div class="privacy_sub-title">
|
||||
9. ДОПОЛНИТЕЛЬНЫЕ УСЛОВИЯ
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
9.1. Администрация сайта вправе вносить изменения в настоящую Политику конфиденциальности без
|
||||
согласия Пользователя.
|
||||
</li>
|
||||
<li>
|
||||
9.2. Политика конфиденциальности вступает в силу с момента ее размещения на Сайте,
|
||||
</li>
|
||||
<li>
|
||||
9.3. Все предложения или вопросы по настоящей Политике конфиденциальности следует сообщать
|
||||
<a href="#">
|
||||
https://tdh.gov.tm/ru/contact#
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
9.4. Действующая Политика конфиденциальности размещена на странице по адресу
|
||||
<a href="#">
|
||||
http://event-live.ru/more/o-proekte/
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -11,26 +11,26 @@ localeUrl[en] = "/archive"
|
|||
==
|
||||
<?php
|
||||
function onStart(){
|
||||
|
||||
|
||||
if(input("date")){
|
||||
$this['todayNews'] = \Indikator\News\Models\Posts::whereDate('published_at', '=', input("date"))->where("locale", App::getLocale())->where("status", 1)->where("category_id", "!=", $this->theme->colleagues_news)->orderBy('created_at', 'desc')->get();
|
||||
}else{
|
||||
$this['todayNews'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())->where("status", 1)->where("category_id", "!=", $this->theme->colleagues_news)->orderBy('published_at', 'desc')->take(6)->get();
|
||||
|
||||
}
|
||||
|
||||
$this['dateToday'] = input("date");
|
||||
|
||||
|
||||
if(input("date")){
|
||||
$this['todayNews'] = \Indikator\News\Models\Posts::whereDate('published_at', '=', input("date"))
|
||||
->where("locale", App::getLocale())->where("status", 1)
|
||||
->where("category_id", "!=", $this->theme->colleagues_news)
|
||||
->orderBy('created_at', 'desc')->get();
|
||||
}else{
|
||||
$this['todayNews'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())
|
||||
->where("status", 1)->where("category_id", "!=", $this->theme->colleagues_news)
|
||||
->orderBy('published_at', 'desc')
|
||||
->take(6)->get();
|
||||
}
|
||||
$this['dateToday'] = input("date");
|
||||
|
||||
}
|
||||
?>
|
||||
==
|
||||
<section class="section" id="intro">
|
||||
<div class="auto_container">
|
||||
<div class="which_page">
|
||||
<a href="{{ 'index'|page}}">
|
||||
|
||||
<a href="{{ 'index'|page}}">
|
||||
<div class="page_name">
|
||||
{{'Главная'|_}}
|
||||
</div>
|
||||
|
|
@ -46,7 +46,7 @@ function onStart(){
|
|||
{{'Архив'|_}}
|
||||
</div>
|
||||
<div class="main_news">
|
||||
|
||||
|
||||
{% for item in todayNews %}
|
||||
<div class="main_news-item">
|
||||
<div class="main_news-date">
|
||||
|
|
@ -63,18 +63,18 @@ function onStart(){
|
|||
{{item.title}}</a>
|
||||
</div>
|
||||
<div class="main_news-text">
|
||||
|
||||
|
||||
{{item.introductory|raw}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="right_side half full">
|
||||
<div class="title">
|
||||
{{'Календарь'|_}}
|
||||
{{'Календарь'|_}}
|
||||
</div>
|
||||
|
||||
<div class="cal">
|
||||
|
|
@ -92,9 +92,9 @@ function onStart(){
|
|||
|
||||
<script src="{{ 'assets/js/moment.min.js'|theme }}"></script>
|
||||
<script src="{{ 'assets/js/lightpick.js'|theme }}"></script>
|
||||
<script>;
|
||||
<script>
|
||||
|
||||
var picker = new Lightpick({
|
||||
let picker = new Lightpick({
|
||||
inline: true,
|
||||
selectBackward: true,
|
||||
selectForward: false,
|
||||
|
|
@ -107,4 +107,4 @@ function onStart(){
|
|||
window.location.replace("{{ ''| page}}?date=" + date.format("Y-M-D"));
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -21,12 +21,16 @@ categoryPage = "category"
|
|||
==
|
||||
<?php
|
||||
function onStart(){
|
||||
|
||||
$this["category"] = $this->param('slug');
|
||||
$this['lastNews'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())->where("status", 1)->where("category_id", "!=", $this->theme->colleagues_news)->whereNotIn('category_id', [20,21,22])->orderBy('published_at', 'desc')->limit(6)->get();
|
||||
|
||||
$this['lastNews'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())
|
||||
->where("status", 1)->where("category_id", "!=", $this->theme->colleagues_news)
|
||||
->whereNotIn('category_id', [20,21,22])
|
||||
->orderBy('published_at', 'desc')
|
||||
->limit(6)->get();
|
||||
|
||||
}
|
||||
|
||||
|
||||
function onEnd(){
|
||||
if($this->newsPosts && $this->newsPosts->category){
|
||||
$this->page->title = $this->newsPosts->category->name;
|
||||
|
|
@ -39,8 +43,7 @@ function onEnd(){
|
|||
<section class="section" id="intro">
|
||||
<div class="auto_container">
|
||||
<div class="which_page">
|
||||
<a href="{{ 'index'|page}}">
|
||||
|
||||
<a href="{{ 'index'|page}}">
|
||||
<div class="page_name">
|
||||
{{'Главная'|_}}
|
||||
</div>
|
||||
|
|
@ -73,13 +76,13 @@ function onEnd(){
|
|||
</a>
|
||||
</div>
|
||||
<div class="main_news-text">
|
||||
|
||||
|
||||
{{ item.introductory|raw }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="section_end">
|
||||
<div class="page_num">
|
||||
<a href="newsPosts.posts.previousPageUrl">
|
||||
|
|
@ -97,7 +100,7 @@ function onEnd(){
|
|||
</a>
|
||||
</div>
|
||||
<div class="page_list">
|
||||
{{(newsPosts.posts.total/newsPosts.posts.perPage)|round(0,"ceil")}} {{'страниц'|_}}
|
||||
{{(newsPosts.posts.total/newsPosts.posts.perPage)|round(0,"ceil")}} {{'страниц'|_}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -107,7 +110,7 @@ function onEnd(){
|
|||
<div class="title">
|
||||
{{'Последние новости'|_}}
|
||||
</div>
|
||||
|
||||
|
||||
{% for item in lastNews %}
|
||||
<div class="news_info">
|
||||
<div class="left_date">
|
||||
|
|
@ -115,7 +118,7 @@ function onEnd(){
|
|||
</div>
|
||||
<div class="left_info">
|
||||
<div class="left_title">
|
||||
|
||||
|
||||
<a href="{{ 'post'|page ({id: item.id, slug: item.slug})}}">{{item.category.name}}</a>
|
||||
</div>
|
||||
<div class="news_text">
|
||||
|
|
@ -123,9 +126,9 @@ function onEnd(){
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -5,18 +5,15 @@ is_hidden = 0
|
|||
==
|
||||
<?php
|
||||
function onStart(){
|
||||
|
||||
$this["channel"] = $this->param('slug');
|
||||
|
||||
|
||||
}
|
||||
?>
|
||||
==
|
||||
<div class="auto_container">
|
||||
<div class="player-wrapper">
|
||||
<div>
|
||||
<video id="webtv-video" width="100%" height="100%" controls>Loading...</video>
|
||||
</div>
|
||||
<div>
|
||||
<video id="webtv-video" width="100%" height="100%" controls>Loading...</video>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="auto_container">
|
||||
|
|
@ -75,9 +72,9 @@ function onStart(){
|
|||
<script src="{{ 'assets/js/hls.min.js'|theme }}"></script>
|
||||
<script src="{{ 'assets/js/plyr.js'|theme }}"></script>
|
||||
<script>
|
||||
|
||||
var channel = '{{ channel }}'
|
||||
|
||||
|
||||
let channel = '{{ channel }}'
|
||||
|
||||
switch(channel) {
|
||||
case "altyn_asyr":
|
||||
Altynasyr();
|
||||
|
|
@ -100,63 +97,56 @@ function onStart(){
|
|||
default:
|
||||
Altynasyr();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function Altynasyr() {
|
||||
$(function() {
|
||||
|
||||
var video_source = 'http://alpha.tv.online.tm/hls/ch001.m3u8';
|
||||
if (location.protocol == 'https:') {
|
||||
video_source = 'https://alpha.tv.online.tm/hls/ch001.m3u8';
|
||||
}
|
||||
var video = document.getElementById('webtv-video');
|
||||
if(Hls.isSupported()) {
|
||||
var hls = new Hls();
|
||||
hls.loadSource(video_source);
|
||||
hls.attachMedia(video);
|
||||
hls.on(Hls.Events.MANIFEST_PARSED,function() {
|
||||
video.play();
|
||||
let video_source = 'http://alpha.tv.online.tm/hls/ch001.m3u8';
|
||||
if (location.protocol == 'https:') {
|
||||
video_source = 'https://alpha.tv.online.tm/hls/ch001.m3u8';
|
||||
}
|
||||
let video = document.getElementById('webtv-video');
|
||||
if(Hls.isSupported()) {
|
||||
let hls = new Hls();
|
||||
hls.loadSource(video_source);
|
||||
hls.attachMedia(video);
|
||||
hls.on(Hls.Events.MANIFEST_PARSED,function() {
|
||||
video.play();
|
||||
});
|
||||
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
|
||||
video.src = video_source;
|
||||
video.addEventListener('canplay',function() {
|
||||
video.play();
|
||||
plyr.setup(video);
|
||||
});
|
||||
}
|
||||
});
|
||||
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
|
||||
video.src = video_source;
|
||||
video.addEventListener('canplay',function() {
|
||||
video.play();
|
||||
plyr.setup(video);
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
function Yaslyk() {
|
||||
|
||||
console.log(channel);
|
||||
$(function() {
|
||||
|
||||
var video_source = 'http://alpha.tv.online.tm/hls/ch002.m3u8';
|
||||
if (location.protocol == 'https:') {
|
||||
video_source = 'https://alpha.tv.online.tm/hls/ch002.m3u8';
|
||||
}
|
||||
var video = document.getElementById('webtv-video');
|
||||
if(Hls.isSupported()) {
|
||||
var hls = new Hls();
|
||||
hls.loadSource(video_source);
|
||||
hls.attachMedia(video);
|
||||
hls.on(Hls.Events.MANIFEST_PARSED,function() {
|
||||
video.play();
|
||||
let video_source = 'http://alpha.tv.online.tm/hls/ch002.m3u8';
|
||||
if (location.protocol == 'https:') {
|
||||
video_source = 'https://alpha.tv.online.tm/hls/ch002.m3u8';
|
||||
}
|
||||
let video = document.getElementById('webtv-video');
|
||||
if(Hls.isSupported()) {
|
||||
let hls = new Hls();
|
||||
hls.loadSource(video_source);
|
||||
hls.attachMedia(video);
|
||||
hls.on(Hls.Events.MANIFEST_PARSED,function() {
|
||||
video.play();
|
||||
});
|
||||
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
|
||||
video.src = video_source;
|
||||
video.addEventListener('canplay',function() {
|
||||
video.play();
|
||||
plyr.setup(video);
|
||||
});
|
||||
}
|
||||
});
|
||||
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
|
||||
video.src = video_source;
|
||||
video.addEventListener('canplay',function() {
|
||||
video.play();
|
||||
plyr.setup(video);
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -164,128 +154,128 @@ function Yaslyk() {
|
|||
function Miras() {
|
||||
$(function() {
|
||||
|
||||
var video_source = 'http://alpha.tv.online.tm/hls/ch003.m3u8';
|
||||
if (location.protocol == 'https:') {
|
||||
video_source = 'https://alpha.tv.online.tm/hls/ch003.m3u8';
|
||||
}
|
||||
var video = document.getElementById('webtv-video');
|
||||
if(Hls.isSupported()) {
|
||||
var hls = new Hls();
|
||||
hls.loadSource(video_source);
|
||||
hls.attachMedia(video);
|
||||
hls.on(Hls.Events.MANIFEST_PARSED,function() {
|
||||
video.play();
|
||||
let video_source = 'http://alpha.tv.online.tm/hls/ch003.m3u8';
|
||||
if (location.protocol == 'https:') {
|
||||
video_source = 'https://alpha.tv.online.tm/hls/ch003.m3u8';
|
||||
}
|
||||
let video = document.getElementById('webtv-video');
|
||||
if(Hls.isSupported()) {
|
||||
let hls = new Hls();
|
||||
hls.loadSource(video_source);
|
||||
hls.attachMedia(video);
|
||||
hls.on(Hls.Events.MANIFEST_PARSED,function() {
|
||||
video.play();
|
||||
});
|
||||
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
|
||||
video.src = video_source;
|
||||
video.addEventListener('canplay',function() {
|
||||
video.play();
|
||||
plyr.setup(video);
|
||||
});
|
||||
}
|
||||
});
|
||||
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
|
||||
video.src = video_source;
|
||||
video.addEventListener('canplay',function() {
|
||||
video.play();
|
||||
plyr.setup(video);
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
function Sport() {
|
||||
$(function() {
|
||||
|
||||
var video_source = 'http://alpha.tv.online.tm/hls/ch004.m3u8';
|
||||
if (location.protocol == 'https:') {
|
||||
video_source = 'https://alpha.tv.online.tm/hls/ch004.m3u8';
|
||||
}
|
||||
var video = document.getElementById('webtv-video');
|
||||
if(Hls.isSupported()) {
|
||||
var hls = new Hls();
|
||||
hls.loadSource(video_source);
|
||||
hls.attachMedia(video);
|
||||
hls.on(Hls.Events.MANIFEST_PARSED,function() {
|
||||
video.play();
|
||||
let video_source = 'http://alpha.tv.online.tm/hls/ch004.m3u8';
|
||||
if (location.protocol == 'https:') {
|
||||
video_source = 'https://alpha.tv.online.tm/hls/ch004.m3u8';
|
||||
}
|
||||
let video = document.getElementById('webtv-video');
|
||||
if(Hls.isSupported()) {
|
||||
let hls = new Hls();
|
||||
hls.loadSource(video_source);
|
||||
hls.attachMedia(video);
|
||||
hls.on(Hls.Events.MANIFEST_PARSED,function() {
|
||||
video.play();
|
||||
});
|
||||
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
|
||||
video.src = video_source;
|
||||
video.addEventListener('canplay',function() {
|
||||
video.play();
|
||||
plyr.setup(video);
|
||||
});
|
||||
}
|
||||
});
|
||||
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
|
||||
video.src = video_source;
|
||||
video.addEventListener('canplay',function() {
|
||||
video.play();
|
||||
plyr.setup(video);
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
function Owaz() {
|
||||
$(function() {
|
||||
|
||||
var video_source = 'http://alpha.tv.online.tm/hls/ch005.m3u8';
|
||||
if (location.protocol == 'https:') {
|
||||
video_source = 'https://alpha.tv.online.tm/hls/ch005.m3u8';
|
||||
}
|
||||
var video = document.getElementById('webtv-video');
|
||||
if(Hls.isSupported()) {
|
||||
var hls = new Hls();
|
||||
hls.loadSource(video_source);
|
||||
hls.attachMedia(video);
|
||||
hls.on(Hls.Events.MANIFEST_PARSED,function() {
|
||||
video.play();
|
||||
let video_source = 'http://alpha.tv.online.tm/hls/ch005.m3u8';
|
||||
if (location.protocol == 'https:') {
|
||||
video_source = 'https://alpha.tv.online.tm/hls/ch005.m3u8';
|
||||
}
|
||||
let video = document.getElementById('webtv-video');
|
||||
if(Hls.isSupported()) {
|
||||
let hls = new Hls();
|
||||
hls.loadSource(video_source);
|
||||
hls.attachMedia(video);
|
||||
hls.on(Hls.Events.MANIFEST_PARSED,function() {
|
||||
video.play();
|
||||
});
|
||||
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
|
||||
video.src = video_source;
|
||||
video.addEventListener('canplay',function() {
|
||||
video.play();
|
||||
plyr.setup(video);
|
||||
});
|
||||
}
|
||||
});
|
||||
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
|
||||
video.src = video_source;
|
||||
video.addEventListener('canplay',function() {
|
||||
video.play();
|
||||
plyr.setup(video);
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
function Ashgabat() {
|
||||
$(function() {
|
||||
|
||||
var video_source = 'http://alpha.tv.online.tm/hls/ch006.m3u8';
|
||||
if (location.protocol == 'https:') {
|
||||
video_source = 'https://alpha.tv.online.tm/hls/ch006.m3u8';
|
||||
}
|
||||
var video = document.getElementById('webtv-video');
|
||||
if(Hls.isSupported()) {
|
||||
var hls = new Hls();
|
||||
hls.loadSource(video_source);
|
||||
hls.attachMedia(video);
|
||||
hls.on(Hls.Events.MANIFEST_PARSED,function() {
|
||||
video.play();
|
||||
let video_source = 'http://alpha.tv.online.tm/hls/ch006.m3u8';
|
||||
if (location.protocol == 'https:') {
|
||||
video_source = 'https://alpha.tv.online.tm/hls/ch006.m3u8';
|
||||
}
|
||||
let video = document.getElementById('webtv-video');
|
||||
if(Hls.isSupported()) {
|
||||
let hls = new Hls();
|
||||
hls.loadSource(video_source);
|
||||
hls.attachMedia(video);
|
||||
hls.on(Hls.Events.MANIFEST_PARSED,function() {
|
||||
video.play();
|
||||
});
|
||||
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
|
||||
video.src = video_source;
|
||||
video.addEventListener('canplay',function() {
|
||||
video.play();
|
||||
plyr.setup(video);
|
||||
});
|
||||
}
|
||||
});
|
||||
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
|
||||
video.src = video_source;
|
||||
video.addEventListener('canplay',function() {
|
||||
video.play();
|
||||
plyr.setup(video);
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
function Turkmenistan() {
|
||||
$(function() {
|
||||
|
||||
var video_source = 'http://alpha.tv.online.tm/hls/ch007.m3u8';
|
||||
|
||||
if (location.protocol == 'https:') {
|
||||
video_source = 'https://alpha.tv.online.tm/hls/ch007.m3u8';
|
||||
}
|
||||
var video = document.getElementById('webtv-video');
|
||||
if(Hls.isSupported()) {
|
||||
var hls = new Hls();
|
||||
hls.loadSource(video_source);
|
||||
hls.attachMedia(video);
|
||||
hls.on(Hls.Events.MANIFEST_PARSED,function() {
|
||||
video.play();
|
||||
let video_source = 'http://alpha.tv.online.tm/hls/ch007.m3u8';
|
||||
|
||||
if (location.protocol == 'https:') {
|
||||
video_source = 'https://alpha.tv.online.tm/hls/ch007.m3u8';
|
||||
}
|
||||
let video = document.getElementById('webtv-video');
|
||||
if(Hls.isSupported()) {
|
||||
let hls = new Hls();
|
||||
hls.loadSource(video_source);
|
||||
hls.attachMedia(video);
|
||||
hls.on(Hls.Events.MANIFEST_PARSED,function() {
|
||||
video.play();
|
||||
});
|
||||
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
|
||||
video.src = video_source;
|
||||
video.addEventListener('canplay',function() {
|
||||
video.play();
|
||||
plyr.setup(video);
|
||||
});
|
||||
}
|
||||
});
|
||||
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
|
||||
video.src = video_source;
|
||||
video.addEventListener('canplay',function() {
|
||||
video.play();
|
||||
plyr.setup(video);
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
</script>
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -3,27 +3,11 @@ url = "/contact"
|
|||
layout = "default"
|
||||
is_hidden = 0
|
||||
==
|
||||
<?php
|
||||
public function onSend(){
|
||||
|
||||
|
||||
$vars = ['name' => Input::get('name') , 'email' => Input::get('email')];
|
||||
|
||||
Mail::send('admin.contact::mail.message', $vars, function($message) {
|
||||
|
||||
$message->to('tekemuradov@gmail.com', 'Admin Person');
|
||||
$message->subject(Input::get('theme'));
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
?>
|
||||
==
|
||||
<section class="section" id="intro">
|
||||
<div class="auto_container">
|
||||
<div class="which_page">
|
||||
<a href="{{ 'index'|page}}">
|
||||
|
||||
|
||||
<div class="page_name">
|
||||
{{'Главная'|_}}
|
||||
</div>
|
||||
|
|
@ -94,4 +78,4 @@ public function onSend(){
|
|||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -19,8 +19,11 @@ function onStart(){
|
|||
$gallery = Admin\Photos\Models\Photo::orderBy("date",'desc')->paginate(10);
|
||||
$this['gallery'] = $gallery;
|
||||
|
||||
|
||||
$this['lastNews'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())->where("status", 1)->where("category_id", "!=", $this->theme->colleagues_news)->whereNotIn('category_id', [20,21,22])->orderBy('published_at', 'desc')->limit(6)->get();
|
||||
$this['lastNews'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())->where("status", 1)
|
||||
->where("category_id", "!=", $this->theme->colleagues_news)
|
||||
->whereNotIn('category_id', [20,21,22])
|
||||
->orderBy('published_at', 'desc')
|
||||
->limit(6)->get();
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
@ -29,7 +32,6 @@ function onStart(){
|
|||
<div class="auto_container">
|
||||
<div class="which_page">
|
||||
<a href="{{ 'index'|page}}">
|
||||
|
||||
<div class="page_name">
|
||||
{{'Главная'|_}}
|
||||
</div>
|
||||
|
|
@ -45,16 +47,16 @@ function onStart(){
|
|||
{{'Фоторепортаж'|_}}
|
||||
</div>
|
||||
<div class="gallery_outer">
|
||||
|
||||
|
||||
{% for key, item in gallery %}
|
||||
|
||||
|
||||
<div class="gallery_item">
|
||||
<div class="gallery_img fancybox" href="{{item.getImages().first.path}}" data-fancybox="{{key}}"
|
||||
data-width="1500" data-height="1000">
|
||||
<img src="{{item.image[0].thumb(auto, 270)}}" alt="">
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div style="display: none;">
|
||||
{% for image in item.getImages().slice(1,item.getImages().size) %}
|
||||
<a href="{{image.path}}" data-fancybox="{{key}}" data-width="1500"
|
||||
|
|
@ -71,14 +73,9 @@ function onStart(){
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endfor %}
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
{% if gallery.total > 10 %}
|
||||
<div class="section_end">
|
||||
<div class="page_num">
|
||||
|
|
@ -106,7 +103,7 @@ function onStart(){
|
|||
<div class="title">
|
||||
{{'Последние новости'|_}}
|
||||
</div>
|
||||
|
||||
|
||||
{% for item in lastNews %}
|
||||
<div class="news_info">
|
||||
<div class="left_date">
|
||||
|
|
@ -122,9 +119,9 @@ function onStart(){
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -26,58 +26,57 @@ protected $translator;
|
|||
|
||||
function onStart()
|
||||
{
|
||||
|
||||
$this['currentLanguage'] = $this->activeLocale;
|
||||
|
||||
// featured news
|
||||
|
||||
$this->translator = Translator::instance();
|
||||
$this['SelectedLanguage'] = $this->activeLocale = $this->translator->getLocale();
|
||||
|
||||
$featured = \Indikator\News\Models\Posts::where("featured", true)->where("locale", App::getLocale())->where("status", 1)->orderBy('published_at', 'desc')->get()->first();
|
||||
|
||||
$this['postFeatured'] = $featured;
|
||||
// featured news
|
||||
$featured = \Indikator\News\Models\Posts::where("featured", true)
|
||||
->where("locale", App::getLocale())->where("status", 1)
|
||||
->orderBy('published_at', 'desc')
|
||||
->get()->first();
|
||||
|
||||
$this['postFeatured'] = $featured;
|
||||
if($featured->image){
|
||||
//$this['imageType'] = $featured->getImageDetails($featured->images->last->path->disk_name);
|
||||
|
||||
$this['imageType'] = $featured->image[0]["type"];
|
||||
}
|
||||
|
||||
// end featured news
|
||||
|
||||
|
||||
// last news
|
||||
|
||||
$this['lastNews'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())->where("status", 1)->where("category_id", "!=", $this->theme->colleagues_news)->whereNotIn('category_id', [20,21,22])->orderBy('published_at', 'desc')->limit(10)->get();
|
||||
|
||||
$this['lastNews'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())->where("status", 1)
|
||||
->where("category_id", "!=", $this->theme->colleagues_news)
|
||||
->whereNotIn('category_id', [20,21,22])
|
||||
->orderBy('published_at', 'desc')
|
||||
->limit(10)->get();
|
||||
// end last news
|
||||
|
||||
|
||||
// collegue News
|
||||
// collegue News
|
||||
$this['collegueNews'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())
|
||||
->where("status", 1)
|
||||
->where("category_id", $this->theme->colleagues_news)
|
||||
->orderBy('published_at', 'desc')
|
||||
->limit(9)->get();
|
||||
|
||||
$this['collegueNews'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())->where("status", 1)->where("category_id", $this->theme->colleagues_news)->orderBy('published_at', 'desc')->limit(9)->get();
|
||||
|
||||
$this["collegueNews_cat"] = \Indikator\News\Models\Categories::where("id", $this->theme->colleagues_news)->first();
|
||||
// end collegue News
|
||||
// end collegue News
|
||||
|
||||
// intro news 3rd column
|
||||
$this['intro_cat_news'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())
|
||||
->where("status", 1)
|
||||
->where("category_id", $this->theme->intro_cat_news)
|
||||
->orderBy('published_at', 'desc')->limit(10)->get();
|
||||
|
||||
$this['intro_cat_news'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())->where("status", 1)->where("category_id", $this->theme->intro_cat_news)->orderBy('published_at', 'desc')->limit(10)->get();
|
||||
|
||||
$this["intro_cat"] = \Indikator\News\Models\Categories::where("id", $this->theme->intro_cat_news)->first();
|
||||
|
||||
// end intro new
|
||||
|
||||
|
||||
}
|
||||
?>
|
||||
==
|
||||
{% set CurrentLanguage = SelectedLanguage %}
|
||||
|
||||
|
||||
<!-- Intro ===================== -->
|
||||
|
||||
|
||||
{% partial 'home_intro' %}
|
||||
<!-- partial 'year_category' -->
|
||||
<!-- partial 'year_category' -->
|
||||
{% partial 'home_categories' %}
|
||||
{% partial 'home_media' %}
|
||||
{% partial 'home_media' %}
|
||||
|
|
|
|||
|
|
@ -20,15 +20,17 @@ function onStart()
|
|||
{
|
||||
$this['currentLanguage'] = $this->activeLocale;
|
||||
|
||||
// featured news
|
||||
$this->translator = Translator::instance();
|
||||
$this['SelectedLanguage'] = $this->activeLocale = $this->translator->getLocale();
|
||||
|
||||
$featured = \Indikator\News\Models\Posts::where("featured", true)->where("locale", App::getLocale())
|
||||
->where("status", 1)->orderBy('published_at', 'desc')
|
||||
// featured news
|
||||
$featured = \Indikator\News\Models\Posts::where("featured", true)
|
||||
->where("locale", App::getLocale())
|
||||
->where("status", 1)
|
||||
->orderBy('published_at', 'desc')
|
||||
->get()->first();
|
||||
|
||||
$this['postFeatured'] = $featured;
|
||||
|
||||
$this['postFeatured'] = $featured;
|
||||
if($featured->image){
|
||||
$this['imageType'] = $featured->image[0]["type"];
|
||||
}
|
||||
|
|
@ -38,7 +40,9 @@ function onStart()
|
|||
// last news
|
||||
$this['lastNews'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())
|
||||
->where("status", 1)->where("category_id", "!=", $this->theme->colleagues_news)
|
||||
->whereNotIn('category_id', [20,21,22])->orderBy('published_at', 'desc')->limit(10)->get();
|
||||
->whereNotIn('category_id', [20,21,22])
|
||||
->orderBy('published_at', 'desc')
|
||||
->limit(10)->get();
|
||||
// end last news
|
||||
|
||||
$this['partners'] = \Admin\Partners\Models\Partner::where('type', 'partner')->get();
|
||||
|
|
@ -47,11 +51,12 @@ function onStart()
|
|||
// intro news 3rd column
|
||||
$this['intro_cat_news'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())
|
||||
->where("status", 1)->where("category_id", $this->theme->intro_cat_news)
|
||||
->orderBy('published_at', 'desc')->limit(10)->get();
|
||||
|
||||
->orderBy('published_at', 'desc')
|
||||
->limit(10)->get();
|
||||
|
||||
$this["intro_cat"] = \Indikator\News\Models\Categories::where("id", $this->theme->intro_cat_news)->first();
|
||||
// end intro new
|
||||
|
||||
|
||||
}
|
||||
?>
|
||||
==
|
||||
|
|
@ -60,4 +65,4 @@ function onStart()
|
|||
{% partial 'home_new_intro' %}
|
||||
{% partial 'home_new_banner_news' %}
|
||||
{% partial 'home_new_last_news' %}
|
||||
{% partial 'home_n_new_media' %}
|
||||
{% partial 'home_n_new_media' %}
|
||||
|
|
|
|||
|
|
@ -8,20 +8,20 @@ is_hidden = 0
|
|||
<p>google <a href="https://play.google.com/store/apps/details?id=com.tpsadvertising.digital.tdh">play market</a></p>
|
||||
<p>apple <a href="https://apps.apple.com/ru/app/tdh-%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8/id1554832462">app store</a></p>
|
||||
<script>
|
||||
var userAgent = navigator.userAgent || navigator.vendor || window.opera;
|
||||
let userAgent = navigator.userAgent || navigator.vendor || window.opera;
|
||||
|
||||
// Windows Phone must come first because its UA also contains "Android"
|
||||
if (/windows phone/i.test(userAgent)) {
|
||||
console.log("Windows Phone");
|
||||
}
|
||||
// Windows Phone must come first because its UA also contains "Android"
|
||||
if (/windows phone/i.test(userAgent)) {
|
||||
console.log("Windows Phone");
|
||||
}
|
||||
|
||||
if (/android/i.test(userAgent)) {
|
||||
location.replace('https://play.google.com/store/apps/details?id=com.tpsadvertising.digital.tdh');
|
||||
}
|
||||
if (/android/i.test(userAgent)) {
|
||||
location.replace('https://play.google.com/store/apps/details?id=com.tpsadvertising.digital.tdh');
|
||||
}
|
||||
|
||||
// iOS detection from: http://stackoverflow.com/a/9039885/177710
|
||||
if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
|
||||
location.replace('https://apps.apple.com/ru/app/tdh-%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8/id1554832462');
|
||||
}
|
||||
// iOS detection from: http://stackoverflow.com/a/9039885/177710
|
||||
if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
|
||||
location.replace('https://apps.apple.com/ru/app/tdh-%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8/id1554832462');
|
||||
}
|
||||
|
||||
</script>
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -9,9 +9,11 @@ id = "{{ :id }}"
|
|||
==
|
||||
<?php
|
||||
function onStart(){
|
||||
|
||||
$this['lastNews'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())->where("status", 1)->where("category_id", "!=", $this->theme->colleagues_news)->whereNotIn('category_id', [20,21,22])->orderBy('published_at', 'desc')->limit(10)->get();
|
||||
|
||||
$this['lastNews'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())
|
||||
->where("status", 1)->where("category_id", "!=", $this->theme->colleagues_news)
|
||||
->whereNotIn('category_id', [20,21,22])
|
||||
->orderBy('published_at', 'desc')
|
||||
->limit(10)->get();
|
||||
}
|
||||
?>
|
||||
==
|
||||
|
|
@ -21,27 +23,24 @@ function onStart(){
|
|||
<div class="auto_container">
|
||||
<div class="which_page">
|
||||
<a href="{{ 'index'|page}}" class="page_name">
|
||||
|
||||
<div>
|
||||
{{'Главная'|_}}
|
||||
</div>
|
||||
</a>
|
||||
<div class="slash">\</div>
|
||||
<a href="{{ 'category'|page({ slug: post.category.slug })}}" class="page_name">
|
||||
|
||||
|
||||
<div>
|
||||
{{ post.category.name }}
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
<div class="slash">\</div>
|
||||
<div class="page_name">
|
||||
{{ post.title }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="section_wrapper">
|
||||
|
||||
|
||||
<div class="center">
|
||||
<div class="title">
|
||||
{{ post.category.name }}
|
||||
|
|
@ -65,9 +64,9 @@ function onStart(){
|
|||
<span>
|
||||
{{ post.statistics }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% if post.image %}
|
||||
{% if post.image|length > 1 %}
|
||||
<div class="multiple_slider">
|
||||
|
|
@ -80,9 +79,9 @@ function onStart(){
|
|||
{% for key, item in post.image %}
|
||||
{% if key != 0%}
|
||||
<a href="{{ url('/') }}{{item.photo|media}}" class="multiple_item" data-fancybox="gallery">
|
||||
|
||||
|
||||
<img src="{{ url('/') }}{{item.photo|media}}" alt="">
|
||||
|
||||
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
|
@ -117,23 +116,21 @@ function onStart(){
|
|||
<img src="{{ post.images[0].path }}" alt="">
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
|
||||
|
||||
{% endif %}
|
||||
|
||||
|
||||
<div {% if post.published_at |date('U') > '2021-02-01'|date('U') %} class="news_page-text" {% else %} class="para_wrap" {% endif %}>
|
||||
<p class="para_text">
|
||||
{{ post.content|raw }}
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="right_side break">
|
||||
<div class="title">
|
||||
{{'Последние новости'|_}}
|
||||
</div>
|
||||
|
||||
|
||||
<div class="theme">
|
||||
<div class="theme-inner">
|
||||
{% for item in lastNews %}
|
||||
|
|
@ -150,7 +147,7 @@ function onStart(){
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="theme_btn">
|
||||
|
|
@ -195,4 +192,4 @@ function onStart(){
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -9,34 +9,21 @@ localeTitle[en] = "Search"
|
|||
localeUrl[ru] = "/search"
|
||||
localeUrl[en] = "/search"
|
||||
|
||||
[newsPosts]
|
||||
pageNumber = "{{ :page }}"
|
||||
postsPerPage = 10
|
||||
noPostsMessage = "No posts found"
|
||||
sortOrder = "published_at desc"
|
||||
postFeatured = 0
|
||||
postPage = "archive"
|
||||
categoryPage = "archive"
|
||||
==
|
||||
<?php
|
||||
function onStart(){
|
||||
$this['search_results'] = \Indikator\News\Models\Posts::search(
|
||||
input("query"))->orderBy('published_at', 'desc')->paginate(10);
|
||||
|
||||
|
||||
//$this['search_results'] = \Indikator\News\Models\Posts::searchWhere(input("q"))->where("locale", App::getLocale())->orderBy('created_at', 'desc')->paginate(10);
|
||||
//$search_results = \Indikator\News\Models\Posts::searchWhere(input("search"))->orderBy('created_at', 'desc')->get();
|
||||
|
||||
//dd($search_results);
|
||||
|
||||
$this['query'] = input('q');
|
||||
|
||||
}
|
||||
$this['query'] = input("query");
|
||||
}
|
||||
?>
|
||||
==
|
||||
<section class="section" id="intro">
|
||||
<div class="auto_container">
|
||||
<div class="which_page">
|
||||
<a href="{{ 'index'|page}}">
|
||||
|
||||
|
||||
<div class="page_name">
|
||||
{{'Главная'|_}}
|
||||
</div>
|
||||
|
|
@ -52,53 +39,52 @@ function onStart(){
|
|||
{{'Результат поиска'|_}}
|
||||
</div>
|
||||
<div class="main_news">
|
||||
{% for item in newsPosts.posts %}
|
||||
<div class="main_news-item">
|
||||
<div class="main_news-date">
|
||||
<span>
|
||||
{{ item.published_at| date("d.m") }}
|
||||
</span>
|
||||
<span>
|
||||
{{ item.published_at| date("Y") }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="main_news-content">
|
||||
<div class="main_news-title">
|
||||
{% for item in search_results %}
|
||||
<div class="main_news-item">
|
||||
<div class="main_news-date">
|
||||
<span>
|
||||
{{ item.published_at| date("d.m") }}
|
||||
</span>
|
||||
<span>
|
||||
{{ item.published_at| date("Y") }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="main_news-content">
|
||||
<div class="main_news-title">
|
||||
|
||||
<a href="{{ 'post'|page ({id: item.id, slug: item.slug})}}">
|
||||
{{item.title}}
|
||||
</a>
|
||||
</div>
|
||||
<div class="main_news-text">
|
||||
|
||||
{{ item.introductory|raw }}
|
||||
<a href="{{ 'post'|page ({id: item.id, slug: item.slug})}}">
|
||||
{{item.title}}
|
||||
</a>
|
||||
</div>
|
||||
<div class="main_news-text">
|
||||
|
||||
{{ item.introductory|raw }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
{% if newsPosts.posts.total > 10 %}
|
||||
{% if search_results.total > 10 %}
|
||||
<div class="section_end">
|
||||
<div class="page_num">
|
||||
<a href="{{newsPosts.posts.previousPageUrl}}{{'&q='~query}}">
|
||||
<a href="{{search_results.previousPageUrl}}">
|
||||
<div class="direct_btn">
|
||||
<img src="{{ 'assets/images/left.svg'|theme }}" alt="">
|
||||
</div>
|
||||
</a>
|
||||
<form action="" method="GET">
|
||||
<input type="text" name="page" value="{{newsPosts.posts.currentPage}}" class="input_page">
|
||||
<input type="hidden" name="query" value="{{query}}" />
|
||||
<input type="text" name="page" value="{{search_results.currentPage}}" class="input_page">
|
||||
</form>
|
||||
<a href="{{newsPosts.posts.nextPageUrl}}{{'&q='~query}}">
|
||||
<a href="{{search_results.nextPageUrl}}">
|
||||
<div class="direct_btn">
|
||||
<img src="{{ 'assets/images/right.svg'|theme }}" alt="">
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="page_list">
|
||||
{{(newsPosts.posts.total/newsPosts.posts.perPage)|round(0,"ceil")}} {{'страниц'|_}}
|
||||
{{(search_results.total/search_results.perPage)|round(0,"ceil")}} {{'страниц'|_}}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
|
@ -109,16 +95,16 @@ function onStart(){
|
|||
</div>
|
||||
<form class="form" method="GET">
|
||||
<div class="input">
|
||||
<input type="text" name="q" placeholder="Поиск">
|
||||
<input type="text" name="query" placeholder="Поиск">
|
||||
</div>
|
||||
<button class="search">
|
||||
<img src="{{ 'assets/images/lupa.svg'|theme }}" alt="">
|
||||
</button>
|
||||
</form>
|
||||
<div class="found_news">
|
||||
{{'По вашему запросу было найдено'|_}} <span class="quantity_num">{{newsPosts.posts.total}}</span> {{'статей'|_}}
|
||||
{{'По вашему запросу было найдено'|_}} <span class="quantity_num">{{search_results.total}}</span> {{'статей'|_}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
|
|
|||
|
|
@ -15,12 +15,14 @@ localeMeta_description[en] = "Top news of Turkmenistan. News by tag Video Report
|
|||
==
|
||||
<?php
|
||||
function onStart(){
|
||||
|
||||
$this['videos'] = Admin\Videos\Models\Video::orderBy('date','desc')->paginate(10);
|
||||
|
||||
|
||||
$this['lastNews'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())->where("status", 1)->where("category_id", "!=", $this->theme->colleagues_news)->whereNotIn('category_id', [20,21,22])->orderBy('published_at', 'desc')->limit(6)->get();
|
||||
|
||||
$this['lastNews'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())
|
||||
->where("status", 1)
|
||||
->where("category_id", "!=", $this->theme->colleagues_news)
|
||||
->whereNotIn('category_id', [20,21,22])
|
||||
->orderBy('published_at', 'desc')
|
||||
->limit(6)->get();
|
||||
}
|
||||
?>
|
||||
==
|
||||
|
|
@ -51,9 +53,6 @@ function onStart(){
|
|||
<div class="gallery_video" data-src="{{item.video[0].path}}">
|
||||
<img src="{{item.image[0].thumb(350, auto)}}" alt="">
|
||||
|
||||
<!-- <div class="video_view" data-src="{{item.video[0].path}}">
|
||||
{{'Просмотреть'|_}}
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="player_bg">
|
||||
<div class="player">
|
||||
|
|
@ -71,8 +70,6 @@ function onStart(){
|
|||
<input type="range" name="volume" class="player__slider" min="0" max="1"
|
||||
step="0.05" value="1">
|
||||
</div>
|
||||
|
||||
|
||||
<button class="player__button fullscreen bigger" title="FullScreen">🞕</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -112,7 +109,7 @@ function onStart(){
|
|||
{{(videos.total/videos.perPage)|round(0,"ceil")}} {{'страниц'|_}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="right_side break">
|
||||
|
|
@ -145,77 +142,73 @@ function onStart(){
|
|||
|
||||
<script>
|
||||
|
||||
|
||||
// Video Player
|
||||
const video = document.querySelector('.viewer');
|
||||
const toggle = document.querySelector('.toggle');
|
||||
const volume = document.querySelector('.volume');
|
||||
const skipButtons = document.querySelectorAll('[data-skip]');
|
||||
const ranges = document.querySelectorAll('.player__slider');
|
||||
const progress = document.querySelector('.progress');
|
||||
const progressBar = document.querySelector('.progress__filled');
|
||||
const fullscreen = document.querySelector('.fullscreen');
|
||||
// Video Player
|
||||
const video = document.querySelector('.viewer');
|
||||
const toggle = document.querySelector('.toggle');
|
||||
const volume = document.querySelector('.volume');
|
||||
const skipButtons = document.querySelectorAll('[data-skip]');
|
||||
const ranges = document.querySelectorAll('.player__slider');
|
||||
const progress = document.querySelector('.progress');
|
||||
const progressBar = document.querySelector('.progress__filled');
|
||||
const fullscreen = document.querySelector('.fullscreen');
|
||||
|
||||
|
||||
// defining functions
|
||||
function togglePlay() {
|
||||
// toggle for video play and pause
|
||||
const playOrPause = video.paused ? 'play' : 'pause';
|
||||
video[playOrPause]();
|
||||
// toggle for icon change when play or pause
|
||||
playOrPause === 'play' ? toggle.textContent = '❚ ❚' : toggle.textContent = '►';
|
||||
}
|
||||
// defining functions
|
||||
function togglePlay() {
|
||||
// toggle for video play and pause
|
||||
const playOrPause = video.paused ? 'play' : 'pause';
|
||||
video[playOrPause]();
|
||||
// toggle for icon change when play or pause
|
||||
playOrPause === 'play' ? toggle.textContent = '❚ ❚' : toggle.textContent = '►';
|
||||
}
|
||||
|
||||
function skip() {
|
||||
// add or substract the skip time to current time of video
|
||||
video.currentTime += parseFloat(this.dataset.skip);
|
||||
}
|
||||
function skip() {
|
||||
// add or substract the skip time to current time of video
|
||||
video.currentTime += parseFloat(this.dataset.skip);
|
||||
}
|
||||
|
||||
function handleRangeChange() {
|
||||
// Change the video's range value
|
||||
video[this.name] = this.value;
|
||||
}
|
||||
function handleRangeChange() {
|
||||
// Change the video's range value
|
||||
video[this.name] = this.value;
|
||||
}
|
||||
|
||||
function handleProgress() {
|
||||
// convert video's current time into percentage
|
||||
const percent = (video.currentTime / video.duration) * 100;
|
||||
// append it to the flexBasis property (CSS)
|
||||
progressBar.style.flexBasis = `${percent}%`;
|
||||
}
|
||||
function handleProgress() {
|
||||
// convert video's current time into percentage
|
||||
const percent = (video.currentTime / video.duration) * 100;
|
||||
// append it to the flexBasis property (CSS)
|
||||
progressBar.style.flexBasis = `${percent}%`;
|
||||
}
|
||||
|
||||
function scrub(e) {
|
||||
const scrubTime = (e.offsetX / progress.offsetWidth) * video.duration;
|
||||
video.currentTime = scrubTime;
|
||||
}
|
||||
function scrub(e) {
|
||||
video.currentTime = (e.offsetX / progress.offsetWidth) * video.duration;
|
||||
}
|
||||
|
||||
function handleFullScreen() {
|
||||
video.requestFullscreen();
|
||||
}
|
||||
function handleFullScreen() {
|
||||
video.requestFullscreen();
|
||||
}
|
||||
|
||||
// Play or Pause events(On video click)
|
||||
video.addEventListener('click', togglePlay);
|
||||
// (On button click)
|
||||
toggle.addEventListener('click', togglePlay);
|
||||
// Play or Pause events(On video click)
|
||||
video.addEventListener('click', togglePlay);
|
||||
// (On button click)
|
||||
toggle.addEventListener('click', togglePlay);
|
||||
|
||||
// skipping video back and forth
|
||||
skipButtons.forEach(button => button.addEventListener('click', skip));
|
||||
// skipping video back and forth
|
||||
skipButtons.forEach(button => button.addEventListener('click', skip));
|
||||
|
||||
// volume or fast forward events
|
||||
ranges.forEach(range => range.addEventListener('change', handleRangeChange));
|
||||
// volume or fast forward events
|
||||
ranges.forEach(range => range.addEventListener('change', handleRangeChange));
|
||||
|
||||
// Change progress wrt time
|
||||
video.addEventListener('timeupdate', handleProgress);
|
||||
// Change progress wrt time
|
||||
video.addEventListener('timeupdate', handleProgress);
|
||||
|
||||
// event on clicking progress bar
|
||||
let mouseDown = false;
|
||||
progress.addEventListener('click', scrub);
|
||||
progress.addEventListener('mousemove', (e) => mouseDown && scrub(e));
|
||||
progress.addEventListener('mousedown', () => mouseDown = true);
|
||||
progress.addEventListener('mouseup', () => mouseDown = false);
|
||||
// event on clicking progress bar
|
||||
let mouseDown = false;
|
||||
progress.addEventListener('click', scrub);
|
||||
progress.addEventListener('mousemove', (e) => mouseDown && scrub(e));
|
||||
progress.addEventListener('mousedown', () => mouseDown = true);
|
||||
progress.addEventListener('mouseup', () => mouseDown = false);
|
||||
|
||||
// add full screen event
|
||||
fullscreen.addEventListener('click', handleFullScreen);
|
||||
// add full screen event
|
||||
fullscreen.addEventListener('click', handleFullScreen);
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -5,30 +5,34 @@ is_hidden = 0
|
|||
==
|
||||
<?php
|
||||
function onStart(){
|
||||
|
||||
//phpinfo();
|
||||
|
||||
$month = Input::get('month');
|
||||
$year = Input::get('year');
|
||||
|
||||
|
||||
$paginate = 15;
|
||||
|
||||
|
||||
if(isset($month)){
|
||||
$this['month'] = $month;
|
||||
}
|
||||
if(isset($year)){
|
||||
$this['year'] = $year;
|
||||
}
|
||||
|
||||
|
||||
if(isset($month) && isset($year)){
|
||||
$this['news'] = Admin\WeeklyNews\Models\WeeklyNews::where("month", $month)->where("year", $year)->orderBy('year', 'DESC')->orderBy('month', 'DESC')->orderBy('week', 'DESC')->paginate($paginate);
|
||||
$this['news'] = Admin\WeeklyNews\Models\WeeklyNews::where("month", $month)
|
||||
->where("year", $year)->orderBy('year', 'DESC')
|
||||
->orderBy('month', 'DESC')
|
||||
->orderBy('week', 'DESC')->paginate($paginate);
|
||||
}else if(isset($month) || isset($year)){
|
||||
$this['news'] = Admin\WeeklyNews\Models\WeeklyNews::where("month", $month)->orWhere("year", $year)->orderBy('year', 'DESC')->orderBy('month', 'DESC')->orderBy('week', 'DESC')->paginate($paginate);
|
||||
$this['news'] = Admin\WeeklyNews\Models\WeeklyNews::where("month", $month)
|
||||
->orWhere("year", $year)
|
||||
->orderBy('year', 'DESC')->orderBy('month', 'DESC')-
|
||||
>orderBy('week', 'DESC')->paginate($paginate);
|
||||
}else{
|
||||
$this['news'] = Admin\WeeklyNews\Models\WeeklyNews::orderBy('year', 'DESC')->orderBy('month', 'DESC')->orderBy('week', 'DESC')->paginate($paginate);
|
||||
$this['news'] = Admin\WeeklyNews\Models\WeeklyNews::orderBy('year', 'DESC')
|
||||
->orderBy('month', 'DESC')->orderBy('week', 'DESC')
|
||||
->paginate($paginate);
|
||||
}
|
||||
|
||||
//dd(Admin\WeeklyNews\Models\WeeklyNews::all());
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
@ -78,9 +82,9 @@ function onStart(){
|
|||
{{'November'|_}}
|
||||
{% elseif month ==12 %}
|
||||
{{'December'|_}}
|
||||
|
||||
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% else %}
|
||||
{{'Month'|_}}
|
||||
{% endif %}
|
||||
|
|
@ -99,7 +103,7 @@ function onStart(){
|
|||
<option value="12">{{'December'|_}}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="select">
|
||||
<select name="year" onchange="onYearSelect(this)">
|
||||
<option value="">
|
||||
|
|
@ -108,20 +112,17 @@ function onStart(){
|
|||
{% else %}
|
||||
{{'Year'|_}}
|
||||
{% endif %}
|
||||
|
||||
|
||||
</option>
|
||||
<option value="2021">2021</option>
|
||||
<!-- <option value="2020">2020</option>
|
||||
<option value="2019">2019</option> -->
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="magazines">
|
||||
|
||||
|
||||
{% for key, item in news %}
|
||||
<div class="magazine_item">
|
||||
<div class="magazine_photo">
|
||||
|
|
@ -143,10 +144,10 @@ function onStart(){
|
|||
{% elseif activeLocale == "en" %}
|
||||
<a href="{{item.pdf_en.getPath()}}" class="magazine_btn" download> {{'Скачать'|_}} </a>
|
||||
{% endif %}
|
||||
|
||||
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
|
||||
</div>
|
||||
{% if news.total > 15 %}
|
||||
<div class="section_end">
|
||||
|
|
@ -174,20 +175,13 @@ function onStart(){
|
|||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
//if({{month}}){
|
||||
// var month = {{month}};
|
||||
//}
|
||||
//var year = {{year}};
|
||||
|
||||
var url_string = window.location.href;
|
||||
var url = new URL(url_string);
|
||||
var month = url.searchParams.get("month");
|
||||
var year = url.searchParams.get("year");
|
||||
let url_string = window.location.href;
|
||||
let url = new URL(url_string);
|
||||
let month = url.searchParams.get("month");
|
||||
let year = url.searchParams.get("year");
|
||||
console.log("month: " + month + "\n" + "year: " + year);
|
||||
|
||||
function onMonthSelect(month){
|
||||
|
|
@ -198,9 +192,9 @@ function onStart(){
|
|||
}else{
|
||||
window.location.replace('{{"weekly-news"|page}}?month=' + month.value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
function onYearSelect(year){
|
||||
window.location.replace('{{"weekly-news"|page}}?year=' + year.value);
|
||||
|
||||
|
|
@ -209,81 +203,81 @@ function onStart(){
|
|||
}else{
|
||||
window.location.replace('{{"weekly-news"|page}}?year=' + year.value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<script>
|
||||
// select box ====================
|
||||
<script>
|
||||
// select box ====================
|
||||
|
||||
var x, i, j, l, ll, selElmnt, a, b, c;
|
||||
x = document.getElementsByClassName("custom-select");
|
||||
l = x.length;
|
||||
for (i = 0; i < l; i++) {
|
||||
selElmnt = x[i].getElementsByTagName("select")[0];
|
||||
ll = selElmnt.length;
|
||||
a = document.createElement("DIV");
|
||||
a.setAttribute("class", "select-selected");
|
||||
a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;
|
||||
x[i].appendChild(a);
|
||||
b = document.createElement("DIV");
|
||||
b.setAttribute("class", "select-items select-hide");
|
||||
for (j = 1; j < ll; j++) {
|
||||
c = document.createElement("DIV");
|
||||
c.innerHTML = selElmnt.options[j].innerHTML;
|
||||
c.addEventListener("click", function (e) {
|
||||
var y, i, k, s, h, sl, yl;
|
||||
s = this.parentNode.parentNode.getElementsByTagName("select")[0];
|
||||
sl = s.length;
|
||||
h = this.parentNode.previousSibling;
|
||||
for (i = 0; i < sl; i++) {
|
||||
if (s.options[i].innerHTML == this.innerHTML) {
|
||||
s.selectedIndex = i;
|
||||
h.innerHTML = this.innerHTML;
|
||||
let x, i, j, l, ll, selElmnt, a, b, c;
|
||||
x = document.getElementsByClassName("custom-select");
|
||||
l = x.length;
|
||||
for (i = 0; i < l; i++) {
|
||||
selElmnt = x[i].getElementsByTagName("select")[0];
|
||||
ll = selElmnt.length;
|
||||
a = document.createElement("DIV");
|
||||
a.setAttribute("class", "select-selected");
|
||||
a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;
|
||||
x[i].appendChild(a);
|
||||
b = document.createElement("DIV");
|
||||
b.setAttribute("class", "select-items select-hide");
|
||||
for (j = 1; j < ll; j++) {
|
||||
c = document.createElement("DIV");
|
||||
c.innerHTML = selElmnt.options[j].innerHTML;
|
||||
c.addEventListener("click", function (e) {
|
||||
let y, i, k, s, h, sl, yl;
|
||||
s = this.parentNode.parentNode.getElementsByTagName("select")[0];
|
||||
sl = s.length;
|
||||
h = this.parentNode.previousSibling;
|
||||
for (i = 0; i < sl; i++) {
|
||||
if (s.options[i].innerHTML == this.innerHTML) {
|
||||
s.selectedIndex = i;
|
||||
h.innerHTML = this.innerHTML;
|
||||
|
||||
y = this.parentNode.getElementsByClassName("same-as-selected");
|
||||
yl = y.length;
|
||||
for (k = 0; k < yl; k++) {
|
||||
y[k].removeAttribute("class");
|
||||
}
|
||||
|
||||
this.setAttribute("class", "same-as-selected");
|
||||
break;
|
||||
y = this.parentNode.getElementsByClassName("same-as-selected");
|
||||
yl = y.length;
|
||||
for (k = 0; k < yl; k++) {
|
||||
y[k].removeAttribute("class");
|
||||
}
|
||||
|
||||
this.setAttribute("class", "same-as-selected");
|
||||
break;
|
||||
}
|
||||
h.click();
|
||||
});
|
||||
b.appendChild(c);
|
||||
}
|
||||
x[i].appendChild(b);
|
||||
a.addEventListener("click", function (e) {
|
||||
e.stopPropagation();
|
||||
closeAllSelect(this);
|
||||
this.nextSibling.classList.toggle("select-hide");
|
||||
this.classList.toggle("select-arrow-active");
|
||||
}
|
||||
h.click();
|
||||
});
|
||||
b.appendChild(c);
|
||||
}
|
||||
function closeAllSelect(elmnt) {
|
||||
var x, y, i, xl, yl, arrNo = [];
|
||||
x = document.getElementsByClassName("select-items");
|
||||
y = document.getElementsByClassName("select-selected");
|
||||
xl = x.length;
|
||||
yl = y.length;
|
||||
for (i = 0; i < yl; i++) {
|
||||
if (elmnt == y[i]) {
|
||||
arrNo.push(i)
|
||||
} else {
|
||||
y[i].classList.remove("select-arrow-active");
|
||||
}
|
||||
}
|
||||
for (i = 0; i < xl; i++) {
|
||||
if (arrNo.indexOf(i)) {
|
||||
x[i].classList.add("select-hide");
|
||||
}
|
||||
x[i].appendChild(b);
|
||||
a.addEventListener("click", function (e) {
|
||||
e.stopPropagation();
|
||||
closeAllSelect(this);
|
||||
this.nextSibling.classList.toggle("select-hide");
|
||||
this.classList.toggle("select-arrow-active");
|
||||
});
|
||||
}
|
||||
function closeAllSelect(elmnt) {
|
||||
let x, y, i, xl, yl, arrNo = [];
|
||||
x = document.getElementsByClassName("select-items");
|
||||
y = document.getElementsByClassName("select-selected");
|
||||
xl = x.length;
|
||||
yl = y.length;
|
||||
for (i = 0; i < yl; i++) {
|
||||
if (elmnt == y[i]) {
|
||||
arrNo.push(i)
|
||||
} else {
|
||||
y[i].classList.remove("select-arrow-active");
|
||||
}
|
||||
}
|
||||
document.addEventListener("click", closeAllSelect);
|
||||
for (i = 0; i < xl; i++) {
|
||||
if (arrNo.indexOf(i)) {
|
||||
x[i].classList.add("select-hide");
|
||||
}
|
||||
}
|
||||
}
|
||||
document.addEventListener("click", closeAllSelect);
|
||||
|
||||
// select box end ====================
|
||||
</script>
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
function onStart(){
|
||||
$categories = \Indikator\News\Models\Categories::where("hidden", 2)->where("status", 1)->limit(6)->get();
|
||||
$this["categories"] = $categories;
|
||||
|
||||
}
|
||||
?>
|
||||
==
|
||||
|
|
@ -16,11 +15,11 @@ function onStart(){
|
|||
<img src="{{ logo.path }}" alt="">
|
||||
</a>
|
||||
<div class="head__right">
|
||||
|
||||
|
||||
<form class="search__form" action="{{ 'search'|page }}" method="GET">
|
||||
{{form_token()}}
|
||||
{{form_token()}}
|
||||
<div class="input__wrap">
|
||||
<input type="text" class="for__search" name="q" placeholder="{{'Поиск'|_}}">
|
||||
<input type="text" class="for__search" name="query" placeholder="{{'Поиск'|_}}">
|
||||
<button type="submit" class="input__magnify">
|
||||
<img src="{{ 'assets/images/lupa.svg'|theme }}" alt="">
|
||||
</button>
|
||||
|
|
@ -49,7 +48,7 @@ function onStart(){
|
|||
</a>
|
||||
<form action="{{ 'search'|page }}" method="GET" class="mobile__form">
|
||||
<div class="mobile_input__wrap">
|
||||
<input type="text" type="text" name="q" placeholder="{{'Поиск'|_}}">
|
||||
<input type="text" type="text" name="query" placeholder="{{'Поиск'|_}}">
|
||||
<button type="submit" class="mobile__magnify">
|
||||
<img src="{{ 'assets/images/lupa.svg'|theme }}" alt="">
|
||||
</button>
|
||||
|
|
@ -72,7 +71,6 @@ function onStart(){
|
|||
{% for item in categories %}
|
||||
<a href="{{ 'category'|page({ slug: item.slug })}}" class="nav__link">{{item.name}}</a>
|
||||
{% endfor %}
|
||||
<!-- <a href="/{{data}}/rss.xml" class="nav__link" target="blank">RSS</a> -->
|
||||
</div>
|
||||
<div class="nav__col">
|
||||
<a href="{{ 'archive'|page}}" class="nav__group">
|
||||
|
|
@ -101,12 +99,12 @@ function onStart(){
|
|||
{{'Фоторепортаж '|_}}
|
||||
</a>
|
||||
<a href="{{ 'videos'|page}}" class="link__media">
|
||||
{{'Видеорепортаж '|_}}
|
||||
{{'Видеорепортаж '|_}}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="nav__group">
|
||||
{% if this.page.id == 'post' %}
|
||||
{% if this.page.id == 'post' %}
|
||||
<div class="new__lang">
|
||||
<a href="{{ url('/tk') }}" class="lang__item">
|
||||
<img src="{{ 'assets/images/lang_tm.png'|theme }}" alt="">
|
||||
|
|
@ -118,20 +116,20 @@ function onStart(){
|
|||
<img src="{{ 'assets/images/lang_en.png'|theme }}" alt="">
|
||||
</a>
|
||||
</div>
|
||||
{% else %}
|
||||
|
||||
{% else %}
|
||||
|
||||
<div class="new__lang">
|
||||
<a href="#" class="lang__item" data-request="onSwitchLocale" data-request-data="locale: 'tk'"> <img src="{{ 'assets/images/lang_tm.png'|theme }}" alt=""> </a>
|
||||
<a href="#" class="lang__item" data-request="onSwitchLocale" data-request-data="locale: 'ru'"> <img src="{{ 'assets/images/lang_ru.png'|theme }}" alt=""> </a>
|
||||
<a href="#" class="lang__item" data-request="onSwitchLocale" data-request-data="locale: 'en'"> <img src="{{ 'assets/images/lang_en.png'|theme }}" alt=""> </a>
|
||||
<a href="#" class="lang__item" data-request="onSwitchLocale" data-request-data="locale: 'en'"> <img src="{{ 'assets/images/lang_en.png'|theme }}" alt=""> </a>
|
||||
</div>
|
||||
|
||||
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<!-- Navs ============================================================== -->
|
||||
<!-- Navs ============================================================== -->
|
||||
|
|
|
|||
|
|
@ -1,13 +1,16 @@
|
|||
==
|
||||
<?php
|
||||
function onStart(){
|
||||
|
||||
$this['categories'] = \Indikator\News\Models\Categories::orderBy("sort_order")->where("id", "!=", $this->theme->politics_news)->limit(4)->get();
|
||||
|
||||
|
||||
$this['categories'] = \Indikator\News\Models\Categories::orderBy("sort_order")
|
||||
->where("id", "!=", $this->theme->politics_news)->limit(4)->get();
|
||||
|
||||
$this['interesting'] = Admin\Interesting\Models\Interesing::all();
|
||||
$this['news'] = Admin\WeeklyNews\Models\WeeklyNews::orderBy('created_at', 'desc')->get()->first();
|
||||
|
||||
$this['mainNews'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())->where("category_id", $this->theme->main_news)->orderBy('published_at', 'desc')->limit(4)->get();
|
||||
$this['mainNews'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())
|
||||
->where("category_id", $this->theme->main_news)
|
||||
->orderBy('published_at', 'desc')->limit(4)->get();
|
||||
$this["main_news_cat"] = \Indikator\News\Models\Categories::where("id", $this->theme->main_news)->first();
|
||||
}
|
||||
?>
|
||||
|
|
@ -34,7 +37,7 @@ function onStart(){
|
|||
<img src="{{ 'assets/images/placeholder.jpg'|theme }}" alt="">
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
</div>
|
||||
<a href="{{ 'post'|page ({id: item.id, slug: item.slug})}}" class="foreign__text">
|
||||
{{item.title}}
|
||||
|
|
@ -55,7 +58,7 @@ function onStart(){
|
|||
{% set post_banner_link = attribute(this.theme, 'post_banner_link_' ~ activeLocale) %}
|
||||
<a target="_blank" href="{{post_banner_link}}" class="advert__photo">
|
||||
{% set post_banner = attribute(this.theme, 'post_banner_' ~ activeLocale) %}
|
||||
|
||||
|
||||
<img src="{{ post_banner.path }}" alt="">
|
||||
</a>
|
||||
</div>
|
||||
|
|
@ -76,7 +79,7 @@ function onStart(){
|
|||
<img src="{{ 'assets/images/arrow-right.svg'|theme }}" alt="">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="recent__content">
|
||||
{% for post in item.getPosts(3) %}
|
||||
<div class="recent__item">
|
||||
|
|
@ -90,22 +93,19 @@ function onStart(){
|
|||
<img src="{{ 'assets/images/placeholder.jpg'|theme }}" alt="">
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
</div>
|
||||
<div class="recent__info">
|
||||
<!-- <div class="recent__time">
|
||||
{{ post.published_at| date("d.m") }}
|
||||
</div> -->
|
||||
<a href="{{ ''| page}}/post/{{post.id}}/{{post.slug}}" class="recent__text">
|
||||
{{ post.title }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -126,8 +126,6 @@ function onStart(){
|
|||
</div>
|
||||
<!-- Advert end ======================================================= -->
|
||||
|
||||
|
||||
|
||||
<div class="recent">
|
||||
<div class="auto_container">
|
||||
<div class="recent__inner">
|
||||
|
|
@ -141,7 +139,7 @@ function onStart(){
|
|||
<img src="{{ 'assets/images/arrow-right.svg'|theme }}" alt="">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="recent__content">
|
||||
{% for post in item.getPosts(3) %}
|
||||
<div class="recent__item">
|
||||
|
|
@ -158,7 +156,7 @@ function onStart(){
|
|||
</div>
|
||||
<div class="recent__info">
|
||||
<!-- <div class="recent__time">
|
||||
{{ post.published_at| date("d.m") }}
|
||||
{{ post.published_at| date("d.m") }}
|
||||
</div> -->
|
||||
<a href="{{ ''| page}}/post/{{post.id}}/{{post.slug}}" class="recent__text">
|
||||
{{ post.title }}
|
||||
|
|
@ -166,10 +164,10 @@ function onStart(){
|
|||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -186,4 +184,4 @@ function onStart(){
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- New Banner end =================================================== -->
|
||||
<!-- New Banner end =================================================== -->
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<div class="new__intro" id="intro">
|
||||
<div class="auto_container">
|
||||
<div class="intro__inner">
|
||||
<div {% if imageType == 'vertical' %} class="event__vertical" {% else %} class="event__horizontal" {% endif %}>
|
||||
<div {% if imageType == 'vertical' %} class="event__vertical" {% else %} class="event__horizontal" {% endif %}>
|
||||
<div class="title">
|
||||
{{'В центре событий'|_}}
|
||||
</div>
|
||||
|
|
@ -47,34 +47,33 @@
|
|||
{{item.title}}
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="other__news">
|
||||
<div class="title">
|
||||
<a href="{{ 'category'|page({ slug: intro_cat.slug })}}">
|
||||
{{intro_cat.name}}
|
||||
</a>
|
||||
<a href="{{ 'category'|page({ slug: intro_cat.slug })}}">
|
||||
<img src="{{ 'assets/images/arrow-right.svg'|theme }}" alt="">
|
||||
</a>
|
||||
</div>
|
||||
<div {% if imageType == 'vertical' %} class="news__content" {% else %} class="horizontal_news__content" {% endif %}>
|
||||
{% for item in intro_cat_news %}
|
||||
<div class="content__item">
|
||||
<a href="{{ ''| page}}/post/{{item.id}}/{{item.slug}}" class="content__title">
|
||||
{{ item.published_at| date("d.m") }}
|
||||
</a>
|
||||
<a href="{{ ''| page}}/post/{{item.id}}/{{item.slug}}" class="content__text">
|
||||
{{item.title}}
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
<div class="other__news">
|
||||
<div class="title">
|
||||
<a href="{{ 'category'|page({ slug: intro_cat.slug })}}">
|
||||
{{intro_cat.name}}
|
||||
</a>
|
||||
<a href="{{ 'category'|page({ slug: intro_cat.slug })}}">
|
||||
<img src="{{ 'assets/images/arrow-right.svg'|theme }}" alt="">
|
||||
</a>
|
||||
</div>
|
||||
<div {% if imageType == 'vertical' %} class="news__content" {% else %} class="horizontal_news__content" {% endif %}>
|
||||
{% for item in intro_cat_news %}
|
||||
<div class="content__item">
|
||||
<a href="{{ ''| page}}/post/{{item.id}}/{{item.slug}}" class="content__title">
|
||||
{{ item.published_at| date("d.m") }}
|
||||
</a>
|
||||
<a href="{{ ''| page}}/post/{{item.id}}/{{item.slug}}" class="content__text">
|
||||
{{item.title}}
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- New Intro end ==================================================== -->
|
||||
<!-- New Intro end ==================================================== -->
|
||||
|
|
|
|||
|
|
@ -1,112 +1,93 @@
|
|||
==
|
||||
<?php
|
||||
function onStart(){
|
||||
|
||||
|
||||
$this['gallery'] = Admin\Photos\Models\Photo::orderBy("date", "desc")->limit(2)->get();
|
||||
$this['videos'] = Admin\Videos\Models\Video::orderBy("date", "desc")->limit(2)->get();
|
||||
}
|
||||
?>
|
||||
==
|
||||
<!-- Media Content ==================================================== -->
|
||||
<div class="Media">
|
||||
<div class="auto_container">
|
||||
<div class="media_inner">
|
||||
<div class="media">
|
||||
<div class="photo">
|
||||
<div class="title">
|
||||
<a href="{{ 'gallery'|page}}">{{'Фоторепортаж'|_}}</a>
|
||||
<a href="{{ 'gallery'|page}}">
|
||||
<img src="{{ 'assets/images/arrow-right.svg'|theme }}" alt="">
|
||||
</a>
|
||||
</div>
|
||||
<div class="gallery">
|
||||
{% for key, item in gallery %}
|
||||
<div class="item">
|
||||
<div class="item_img fancybox" href="{{item.getImages().first.path}}" data-fancybox="{{key}}"
|
||||
data-width="1500" data-height="1000">
|
||||
<img src="{{item.image[0].thumb(auto, 270)}}" alt="">
|
||||
|
||||
<!-- <h3 class="photo_view">
|
||||
<a class="fancybox" href="{{item.getImages().first.path}}" data-fancybox="{{key}}"
|
||||
data-width="1500" data-height="1000"><i
|
||||
class="icon-camera"></i> {{'Просмотреть'|_}}</a>
|
||||
</h3> -->
|
||||
</div>
|
||||
|
||||
<div style="display: none;">
|
||||
{% for image in item.getImages().slice(1,item.getImages().size) %}
|
||||
<a href="{{image.path}}" data-fancybox-arrows="true" data-arrows="true" data-fancybox="{{key}}" data-width="1500"
|
||||
data-height="1000" data-thumb="{{image.path}}"></a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="item_text">
|
||||
{{ item.title }}
|
||||
</div>
|
||||
<!-- <div class="item_date">
|
||||
{{ item.date| date("d.m.Y") }}
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="Media">
|
||||
<div class="auto_container">
|
||||
<div class="media_inner">
|
||||
<div class="media">
|
||||
<div class="photo">
|
||||
<div class="title">
|
||||
<a href="{{ 'gallery'|page}}">{{'Фоторепортаж'|_}}</a>
|
||||
<a href="{{ 'gallery'|page}}">
|
||||
<img src="{{ 'assets/images/arrow-right.svg'|theme }}" alt="">
|
||||
</a>
|
||||
</div>
|
||||
<div class="video">
|
||||
<div class="title">
|
||||
<a href="{{ 'videos'|page}}">{{'Видеорепортаж'|_}}</a>
|
||||
<a href="{{ 'videos'|page}}">
|
||||
<img src="{{ 'assets/images/arrow-right.svg'|theme }}" alt="">
|
||||
</a>
|
||||
</div>
|
||||
<div class="gallery">
|
||||
{% for item in videos %}
|
||||
<div class="gallery">
|
||||
{% for key, item in gallery %}
|
||||
<div class="item">
|
||||
<div class="item_img video_item" data-src="{{item.video[0].path}}">
|
||||
<img src="{{item.image[0].thumb(350, auto)}}" alt="">
|
||||
|
||||
<!-- <div class="video_view" data-src="{{item.video[0].path}}">
|
||||
{{'Просмотреть'|_}}
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
<div class="player_bg">
|
||||
<div class="player">
|
||||
<video class="player__video viewer">
|
||||
<!-- <source url="video/3.mp4"> -->
|
||||
</video>
|
||||
|
||||
<div class="player__controls">
|
||||
<div class="progress">
|
||||
<div class="progress__filled"></div>
|
||||
</div>
|
||||
<button class="player__button toggle playeer" title="Toggle Play">►</button>
|
||||
<div class="control_item">
|
||||
<img src="{{ 'assets/images/sound.svg'|theme }}" alt="" class="volume">
|
||||
<input type="range" name="volume" class="player__slider" min="0" max="1"
|
||||
step="0.05" value="1">
|
||||
</div>
|
||||
<button class="player__button fullscreen bigger" title="FullScreen">🞕</button>
|
||||
<div class="item_img fancybox" href="{{item.getImages().first.path}}" data-fancybox="{{key}}"
|
||||
data-width="1500" data-height="1000">
|
||||
<img src="{{item.image[0].thumb(auto, 270)}}" alt="">
|
||||
|
||||
</div>
|
||||
|
||||
<div style="display: none;">
|
||||
{% for image in item.getImages().slice(1,item.getImages().size) %}
|
||||
<a href="{{image.path}}" data-fancybox-arrows="true" data-arrows="true" data-fancybox="{{key}}" data-width="1500"
|
||||
data-height="1000" data-thumb="{{image.path}}"></a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="item_text">
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="video">
|
||||
<div class="title">
|
||||
<a href="{{ 'videos'|page}}">{{'Видеорепортаж'|_}}</a>
|
||||
<a href="{{ 'videos'|page}}">
|
||||
<img src="{{ 'assets/images/arrow-right.svg'|theme }}" alt="">
|
||||
</a>
|
||||
</div>
|
||||
<div class="gallery">
|
||||
{% for item in videos %}
|
||||
<div class="item">
|
||||
<div class="item_img video_item" data-src="{{item.video[0].path}}">
|
||||
<img src="{{item.image[0].thumb(350, auto)}}" alt="">
|
||||
</div>
|
||||
|
||||
<div class="player_bg">
|
||||
<div class="player">
|
||||
<video class="player__video viewer"></video>
|
||||
|
||||
<div class="player__controls">
|
||||
<div class="progress">
|
||||
<div class="progress__filled"></div>
|
||||
</div>
|
||||
<button class="player__button toggle playeer" title="Toggle Play">►</button>
|
||||
<div class="control_item">
|
||||
<img src="{{ 'assets/images/sound.svg'|theme }}" alt="" class="volume">
|
||||
<input type="range" name="volume" class="player__slider" min="0" max="1"
|
||||
step="0.05" value="1">
|
||||
</div>
|
||||
<button class="player__button fullscreen bigger" title="FullScreen">🞕</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="item_text">
|
||||
{{ item.title }}
|
||||
</div>
|
||||
<!-- <div class="item_date">
|
||||
{{ item.date| date("d.m.Y") }}
|
||||
</div> -->
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
|
||||
<div class="item_text">
|
||||
{{ item.title }}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Media Content end ================================================ -->
|
||||
</div>
|
||||
<!-- Media Content end ================================================ -->
|
||||
|
||||
<!-- Channel ===================== -->
|
||||
<div class="auto_container">
|
||||
|
|
@ -158,4 +139,4 @@ function onStart(){
|
|||
</div><!-- chanel__items -->
|
||||
</div> <!-- channel__inner -->
|
||||
</div><!-- channel -->
|
||||
</div> <!-- container -->
|
||||
</div> <!-- container -->
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ function onStart(){
|
|||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
|
||||
<div class="media_video">
|
||||
<a href="{{'videos'|page}}" class="title">
|
||||
<span>
|
||||
|
|
@ -77,7 +77,7 @@ function onStart(){
|
|||
<div class="web_item-photo">
|
||||
<img src="{{ item.image.path }}" alt="web_item-photo">
|
||||
</div>
|
||||
|
||||
|
||||
<h4 class="web_item-title">
|
||||
{{ item.title }}
|
||||
</h4>
|
||||
|
|
@ -93,21 +93,21 @@ function onStart(){
|
|||
<script>
|
||||
|
||||
function openImageModal(images){
|
||||
var media_wrapper = document.getElementById('media_section');
|
||||
|
||||
var modalItems = [];
|
||||
let media_wrapper = document.getElementById('media_section');
|
||||
|
||||
let modalItems = [];
|
||||
for (let i = 0; i < images.length / 12; i++) {
|
||||
var modal_images = [];
|
||||
let modal_images = [];
|
||||
images.slice(i*12,(i+1)*12).forEach(function(image, index) {
|
||||
var image =
|
||||
let img =
|
||||
`
|
||||
<a class="fancybox modal_gal-item" href="${image.path}" data-fancybox="gallery">
|
||||
<img src="${image.path}" alt="" />
|
||||
</a>
|
||||
`
|
||||
modal_images += image;
|
||||
modal_images += img;
|
||||
});
|
||||
var modalItem =
|
||||
let modalItem =
|
||||
`
|
||||
<div class="modal_gal-group">
|
||||
<div class="box">
|
||||
|
|
@ -117,7 +117,7 @@ function onStart(){
|
|||
`;
|
||||
modalItems += modalItem;
|
||||
}
|
||||
var gallery_modal =
|
||||
let gallery_modal =
|
||||
`<div class="modal modal-photo mod modClose active" id='image-modal' >
|
||||
<div class="modal_gal">
|
||||
<div class="modal_gal-box owl-carousel owl-theme">
|
||||
|
|
@ -126,9 +126,9 @@ function onStart(){
|
|||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
|
||||
media_wrapper.insertAdjacentHTML('afterEnd', gallery_modal);
|
||||
|
||||
|
||||
$('.owl-carousel').owlCarousel({
|
||||
lazyLoad:true,
|
||||
loop: false,
|
||||
|
|
@ -137,11 +137,11 @@ function onStart(){
|
|||
items: 1,
|
||||
dots: false,
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
$('.fancybox.modal_gal-item').fancybox({
|
||||
loop: true,
|
||||
|
||||
|
||||
thumbs: {
|
||||
autoStart: true,
|
||||
axis: 'x',
|
||||
|
|
@ -149,35 +149,32 @@ function onStart(){
|
|||
buttons: [
|
||||
"close"
|
||||
],
|
||||
|
||||
|
||||
afterShow: function () {
|
||||
$('.fancybox-toolbar').appendTo('.fancybox-slide--current > div');
|
||||
},
|
||||
|
||||
|
||||
'beforeClose': function () {
|
||||
$('.modal-photo').removeClass("disable");
|
||||
},
|
||||
|
||||
|
||||
})
|
||||
|
||||
|
||||
$('.to-top').click(function () {
|
||||
$('body,html').animate({
|
||||
scrollTop: 0
|
||||
}, 100);
|
||||
});
|
||||
}
|
||||
|
||||
window.addEventListener('click', function(e){
|
||||
//if (document.getElementById('image-modal').contains(e.target) && !e.target.closest('.modal_gal') && !e.target.closest('.owl-nav')){
|
||||
// document.getElementById('image-modal').remove();
|
||||
//}
|
||||
|
||||
|
||||
window.addEventListener('click', function(e){
|
||||
|
||||
if (document.getElementById('image-modal') != undefined) {
|
||||
if (document.getElementById('image-modal').contains(e.target) && !e.target.closest('.modal_gal') && !e.target.closest('.owl-nav')) {
|
||||
document.getElementById('image-modal').remove();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
let media_modal = document.getElementById('image-modal')
|
||||
if (media_modal != undefined) {
|
||||
if (document.getElementById('image-modal').contains(e.target) && !e.target.closest('.modal_gal') && !e
|
||||
|
|
@ -190,4 +187,4 @@ function onStart(){
|
|||
|
||||
</script>
|
||||
|
||||
<!-- Modal gallery ============================================ -->
|
||||
<!-- Modal gallery ============================================ -->
|
||||
|
|
|
|||
|
|
@ -1,63 +1,63 @@
|
|||
==
|
||||
<!-- New Intro ========================================================= -->
|
||||
<div class="new__intro" id="intro">
|
||||
<div class="auto_container">
|
||||
<div class="intro__inner">
|
||||
<div {% if imageType == 'vertical' %} class="event__vertical wow fadeIn" data-wow-duration=".5s" data-wow-delay=".1s" {% else %} class="event__horizontal wow fadeIn" data-wow-duration=".5s" data-wow-delay=".1s"{% endif %}>
|
||||
<div class="title">
|
||||
{{'В центре событий'|_}}
|
||||
</div>
|
||||
<div {% if imageType == 'vertical' %} class="event__content" {% endif %}>
|
||||
{% if postFeatured.image %}
|
||||
<div class="event__photo">
|
||||
<img src="{{ url('/') }}{{imagetype == 'vertical' ? postFeatured.image[0].photo|media : postFeatured.image[0].photo|media|resize(1080, 385)}}" alt="">
|
||||
<div class="new__intro" id="intro">
|
||||
<div class="auto_container">
|
||||
<div class="intro__inner">
|
||||
<div {% if imageType == 'vertical' %} class="event__vertical wow fadeIn" data-wow-duration=".5s" data-wow-delay=".1s" {% else %} class="event__horizontal wow fadeIn" data-wow-duration=".5s" data-wow-delay=".1s"{% endif %}>
|
||||
<div class="title">
|
||||
{{'В центре событий'|_}}
|
||||
</div>
|
||||
<div {% if imageType == 'vertical' %} class="event__content" {% endif %}>
|
||||
{% if postFeatured.image %}
|
||||
<div class="event__photo">
|
||||
<img src="{{ url('/') }}{{imagetype == 'vertical' ? postFeatured.image[0].photo|media : postFeatured.image[0].photo|media|resize(1080, 385)}}" alt="">
|
||||
</div>
|
||||
{% endif %}
|
||||
<div {% if imageType == 'vertical' %} class="event__info"{% endif %}>
|
||||
<a href="{{ 'post'|page ({id: postFeatured.id, slug: postFeatured.slug})}}" class="event__title">
|
||||
{{ postFeatured.title }}
|
||||
</a>
|
||||
<div class="event__text">
|
||||
{{ postFeatured.introductory|raw }}
|
||||
</div>
|
||||
<div class="event__end">
|
||||
<div class="event__time">
|
||||
{{ postFeatured.published_at| date("d.m.Y") }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div {% if imageType == 'vertical' %} class="event__info"{% endif %}>
|
||||
<a href="{{ 'post'|page ({id: postFeatured.id, slug: postFeatured.slug})}}" class="event__title">
|
||||
{{ postFeatured.title }}
|
||||
<a href="{{ 'post'|page ({id: postFeatured.id, slug: postFeatured.slug})}}" class="event__link">
|
||||
{{'Узнать больше'|_}}
|
||||
</a>
|
||||
<div class="event__text">
|
||||
{{ postFeatured.introductory|raw }}
|
||||
</div>
|
||||
<div class="event__end">
|
||||
<div class="event__time">
|
||||
{{ postFeatured.published_at| date("d.m.Y") }}
|
||||
</div>
|
||||
<a href="{{ 'post'|page ({id: postFeatured.id, slug: postFeatured.slug})}}" class="event__link">
|
||||
{{'Узнать больше'|_}}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="extra__news wow fadeIn" data-wow-duration=".5s" data-wow-delay=".1s">
|
||||
<div class="other__news">
|
||||
<div class="title">
|
||||
<a href="{{ 'category'|page({ slug: intro_cat.slug })}}">
|
||||
{{intro_cat.name}}
|
||||
</a>
|
||||
<a href="{{ 'category'|page({ slug: intro_cat.slug })}}">
|
||||
<img src="{{ 'assets/images/arrow-right.svg'|theme }}" alt="">
|
||||
</a>
|
||||
</div>
|
||||
<div {% if imageType == 'vertical' %} class="news__content" {% else %} class="horizontal_news__content" {% endif %}>
|
||||
{% for item in intro_cat_news %}
|
||||
<div class="content__item">
|
||||
<a href="{{ 'post'|page ({id: item.id, slug: item.slug})}}" class="content__title">
|
||||
{{ item.published_at| date("d.m") }}
|
||||
</a>
|
||||
<a href="{{ 'post'|page ({id: item.id, slug: item.slug})}}" class="content__text">
|
||||
{{item.title}}
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<div class="extra__news wow fadeIn" data-wow-duration=".5s" data-wow-delay=".1s">
|
||||
<div class="other__news">
|
||||
<div class="title">
|
||||
<a href="{{ 'category'|page({ slug: intro_cat.slug })}}">
|
||||
{{intro_cat.name}}
|
||||
</a>
|
||||
<a href="{{ 'category'|page({ slug: intro_cat.slug })}}">
|
||||
<img src="{{ 'assets/images/arrow-right.svg'|theme }}" alt="">
|
||||
</a>
|
||||
</div>
|
||||
<div {% if imageType == 'vertical' %} class="news__content" {% else %} class="horizontal_news__content" {% endif %}>
|
||||
{% for item in intro_cat_news %}
|
||||
<div class="content__item">
|
||||
<a href="{{ 'post'|page ({id: item.id, slug: item.slug})}}" class="content__title">
|
||||
{{ item.published_at| date("d.m") }}
|
||||
</a>
|
||||
<a href="{{ 'post'|page ({id: item.id, slug: item.slug})}}" class="content__text">
|
||||
{{item.title}}
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- New Intro end ==================================================== -->
|
||||
</div>
|
||||
<!-- New Intro end ==================================================== -->
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
==
|
||||
<?php
|
||||
function onStart(){
|
||||
|
||||
$this['categories'] = \Indikator\News\Models\Categories::orderBy("sort_order")->where("id", "!=", $this->theme->politics_news)->limit(8)->get();
|
||||
|
||||
$this['categories'] = \Indikator\News\Models\Categories::orderBy("sort_order")
|
||||
->where("id", "!=", $this->theme->politics_news)->limit(8)->get();
|
||||
|
||||
$last_categories = $this['categories']->slice(0, 4)->pluck('id')->toArray();
|
||||
$this['last_category_posts'] = \Indikator\News\Models\Posts::whereIn('category_id', $last_categories)->where("locale", App::getLocale())->orderBy("published_at", "desc")->limit(4)->get();
|
||||
$this['last_category_posts'] = \Indikator\News\Models\Posts::whereIn('category_id', $last_categories)
|
||||
->where("locale", App::getLocale())
|
||||
->orderBy("published_at", "desc")->limit(4)->get();
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
@ -37,7 +39,7 @@ function onStart(){
|
|||
{{item.title}}
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="theme_btn">
|
||||
|
|
@ -95,7 +97,7 @@ function onStart(){
|
|||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
|
||||
<div class="latest_item-info">
|
||||
<h4 class="latest_item-title">
|
||||
{{ post.title }}
|
||||
|
|
@ -143,4 +145,4 @@ function onStart(){
|
|||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- New Banner end =================================================== -->
|
||||
<!-- New Banner end =================================================== -->
|
||||
|
|
|
|||
|
|
@ -2,10 +2,18 @@
|
|||
<?php
|
||||
function onStart()
|
||||
{
|
||||
$this['news'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())->where("status", 1)->where("category_id", $this->theme->year_category)->orderBy('published_at', 'desc')->get()->first();
|
||||
$this['news'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())
|
||||
->where("status", 1)->where("category_id", $this->theme->year_category)
|
||||
->orderBy('published_at', 'desc')
|
||||
->get()->first();
|
||||
$this["cat"] = \Indikator\News\Models\Categories::where("id", $this->theme->year_category)->first();
|
||||
|
||||
$this['news_second'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())->where("status", 1)->where("category_id", $this->theme->year_category_second)->orderBy('published_at', 'desc')->get()->first();
|
||||
$this['news_second'] = \Indikator\News\Models\Posts::where("locale", App::getLocale())
|
||||
->where("status", 1)
|
||||
->where("category_id", $this->theme->year_category_second)
|
||||
->orderBy('published_at', 'desc')
|
||||
->get()->first();
|
||||
|
||||
$this["cat_second"] = \Indikator\News\Models\Categories::where("id", $this->theme->year_category_second)->first();
|
||||
}
|
||||
?>
|
||||
|
|
@ -15,7 +23,7 @@ function onStart()
|
|||
<div class="auto_container">
|
||||
<div class="universary__inner">
|
||||
<div class="title">
|
||||
|
||||
|
||||
</div>
|
||||
<div class="univer__wrap">
|
||||
<div class="universary__emblem">
|
||||
|
|
@ -28,9 +36,6 @@ function onStart()
|
|||
<img src="{{attribute(this.theme, 'year_category_image').path}}" alt="">
|
||||
</a>
|
||||
<div class="univer__info new_univer_info">
|
||||
<!-- <div class="univer__time">
|
||||
{{ news.published_at| date("d.m") }}
|
||||
</div> -->
|
||||
<a href="{{ ''| page}}/post/{{news.id}}/{{news.slug}}" class="univer__text">
|
||||
{{ news.title }}
|
||||
</a>
|
||||
|
|
@ -42,9 +47,6 @@ function onStart()
|
|||
<img src="{{attribute(this.theme, 'year_category_second_image').path}}" alt="">
|
||||
</a>
|
||||
<div class="univer__info new_univer_info">
|
||||
<!-- <div class="univer__time">
|
||||
{{ news_second.published_at| date("d.m") }}
|
||||
</div> -->
|
||||
<a href="{{ ''| page}}/post/{{news_second.id}}/{{news_second.slug}}" class="univer__text">
|
||||
{{ news_second.title }}
|
||||
</a>
|
||||
|
|
@ -55,4 +57,4 @@ function onStart()
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Universary end =================================================== -->
|
||||
<!-- Universary end =================================================== -->
|
||||
|
|
|
|||
Loading…
Reference in New Issue