init
|
@ -0,0 +1,33 @@
|
|||
kind: pipeline
|
||||
type: docker
|
||||
name: default
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
event:
|
||||
- push
|
||||
|
||||
steps:
|
||||
- name: deploy
|
||||
image: mdenis/php-ssh:latest
|
||||
environment:
|
||||
SSH_KEY:
|
||||
from_secret: ssh_key
|
||||
commands:
|
||||
- eval `ssh-agent -s`
|
||||
- mkdir ~/.ssh
|
||||
- echo "$${SSH_KEY}" > ~/.ssh/id_rsa
|
||||
- chmod 600 ~/.ssh/id_rsa
|
||||
- ssh-add ~/.ssh/id_rsa
|
||||
- ssh-keyscan -H medvid.cc >> ~/.ssh/known_hosts
|
||||
- dep deploy
|
||||
|
||||
- name: notify
|
||||
image: drillster/drone-email
|
||||
environment:
|
||||
PLUGIN_FROM: "git@medvid.cc"
|
||||
PLUGIN_HOST: "mail.medvid.cc"
|
||||
PLUGIN_USERNAME: "git@medvid.cc"
|
||||
PLUGIN_PASSWORD:
|
||||
from_secret: email_password
|
|
@ -6,5 +6,6 @@ node_modules/
|
|||
js/*.map
|
||||
js/ts.js
|
||||
|
||||
vendor/
|
||||
dist/
|
||||
webpack/manifest.json
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
[![Build Status](https://drone.medvid.cc/api/badges/DenysMedvid/new.mdenis.org/status.svg?ref=refs/heads/master)](https://drone.medvid.cc/DenysMedvid/new.mdenis.org)
|
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
|
||||
namespace Deployer;
|
||||
|
||||
require 'recipe/common.php';
|
||||
|
||||
set('application', 'medvid.cc');
|
||||
set('repository', 'gitea@git.medvid.cc:DenysMedvid/new.mdenis.org.git');
|
||||
set('git_tty', false);
|
||||
set('keep_releases', 2);
|
||||
set('shared_files', []);
|
||||
set('shared_dirs', []);
|
||||
set('clear_paths', [
|
||||
'Docker',
|
||||
'.git',
|
||||
'.gitignore',
|
||||
'deploy.php',
|
||||
'.drone.yml',
|
||||
]);
|
||||
set('writable_dirs', []);
|
||||
set('allow_anonymous_stats', false);
|
||||
set('use_atomic_symlink', true);
|
||||
|
||||
host('medvid.cc')
|
||||
->user('dmedved')
|
||||
->set('deploy_path', '/var/www/{{application}}');
|
||||
|
||||
desc('Deploy your project');
|
||||
|
||||
task('deploy', [
|
||||
'deploy:info',
|
||||
'deploy:prepare',
|
||||
'deploy:lock',
|
||||
'deploy:release',
|
||||
'deploy:add_keys',
|
||||
'deploy:update_code',
|
||||
'deploy:shared',
|
||||
'deploy:writable',
|
||||
// 'deploy:vendors',
|
||||
'deploy:clear_paths',
|
||||
'deploy:ownership',
|
||||
'deploy:symlink',
|
||||
'deploy:unlock',
|
||||
'cleanup',
|
||||
'success',
|
||||
]);
|
||||
|
||||
task('deploy:add_keys', function () {
|
||||
run('ssh-add ~/.ssh/medvid_cc');
|
||||
});
|
||||
|
||||
task('deploy:ownership', function () {
|
||||
run('chown dmedved:nginx -h /var/www/{{application}}/current');
|
||||
run('chown dmedved:nginx -R /var/www/{{application}}/shared');
|
||||
run('chown dmedved:nginx -R /var/www/{{application}}/releases');
|
||||
});
|
||||
|
||||
// [Optional] If deploy fails automatically unlock.
|
||||
after('deploy:failed', 'deploy:unlock');
|
|
@ -1,10 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" class="no-js">
|
||||
<head>
|
||||
<script src="vendors.bundle.js"></script>
|
||||
<script src="application.bundle.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="content"></div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,9 @@
|
|||
FROM php:7.4-cli
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
openssh-client curl bash
|
||||
|
||||
RUN cd /root \
|
||||
&& curl -LO https://deployer.org/deployer.phar \
|
||||
&& mv deployer.phar /usr/local/bin/dep \
|
||||
&& chmod +x /usr/local/bin/dep
|
28
package.json
|
@ -1,28 +0,0 @@
|
|||
{
|
||||
"name": "new.mdenis.org",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "src/app.ts",
|
||||
"dependencies": {
|
||||
"ts-loader": "^8.0.18",
|
||||
"typescript": "^4.2.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"css-loader": "^5.1.2",
|
||||
"file-loader": "^6.2.0",
|
||||
"sass": "^1.32.8",
|
||||
"sass-loader": "^11.0.1",
|
||||
"webpack": "^5.25.0",
|
||||
"webpack-cli": "^4.5.0",
|
||||
"webpack-dev-server": "^3.11.2"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "npm run test",
|
||||
"clean": "rimraf dist",
|
||||
"build-dll": "rimraf dist && webpack-cli -c webpack/webpack.dll.js --mode=development",
|
||||
"start": "webpack-cli serve --config webpack/webpack.dev.js",
|
||||
"build": "rimraf dist && webpack-cli -c webpack/webpack.dll.js --mode=production && webpack-cli -c webpack/webpack.prod.js --mode=production"
|
||||
},
|
||||
"author": "Denis Medved",
|
||||
"license": "ISC"
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
console.log('hello');
|
|
@ -1,217 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" class="no-js">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>BreezyCV - Resume / CV / vCard Template</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
|
||||
<meta name="description" content="BreezyCV - Resume / CV / vCard Template" />
|
||||
<meta name="keywords" content="vcard, resposnive, retina, resume, jquery, css3, bootstrap, portfolio" />
|
||||
<meta name="author" content="lmpixels" />
|
||||
<link rel="shortcut icon" href="favicon.ico">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="css/reset.css" type="text/css">
|
||||
<link rel="stylesheet" href="css/bootstrap-grid.min.css" type="text/css">
|
||||
<link rel="stylesheet" href="css/animations.css" type="text/css">
|
||||
<link rel="stylesheet" href="css/perfect-scrollbar.css" type="text/css">
|
||||
<link rel="stylesheet" href="css/owl.carousel.css" type="text/css">
|
||||
<link rel="stylesheet" href="css/magnific-popup.css" type="text/css">
|
||||
<link rel="stylesheet" href="css/main.css" type="text/css">
|
||||
|
||||
<script src="js/modernizr.custom.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- Animated Background -->
|
||||
<div class="lm-animated-bg" style="background-image: url(img/main_bg.png);"></div>
|
||||
<!-- /Animated Background -->
|
||||
|
||||
<!-- Loading animation -->
|
||||
<div class="preloader">
|
||||
<div class="preloader-animation">
|
||||
<div class="preloader-spinner">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /Loading animation -->
|
||||
|
||||
<div class="page">
|
||||
<div class="page-content">
|
||||
|
||||
<header id="site_header" class="header mobile-menu-hide">
|
||||
<div class="header-content">
|
||||
<div class="header-photo">
|
||||
<img src="img/main_photo.jpg" alt="Alex Smith">
|
||||
</div>
|
||||
<div class="header-titles">
|
||||
<h2>Alex Smith</h2>
|
||||
<h4>Web Designer</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ul class="main-menu">
|
||||
<li class="active">
|
||||
<a href="index.html#about-me" class="nav-anim">
|
||||
<span class="menu-icon lnr lnr-home"></span>
|
||||
<span class="link-text">About Me</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html#resume" class="nav-anim">
|
||||
<span class="menu-icon lnr lnr-graduation-hat"></span>
|
||||
<span class="link-text">Resume</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html#portfolio" class="nav-anim">
|
||||
<span class="menu-icon lnr lnr-briefcase"></span>
|
||||
<span class="link-text">Portfolio</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html#blog" class="nav-anim">
|
||||
<span class="menu-icon lnr lnr-book"></span>
|
||||
<span class="link-text">Blog</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html#contact" class="nav-anim">
|
||||
<span class="menu-icon lnr lnr-envelope"></span>
|
||||
<span class="link-text">Contact</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="social-links">
|
||||
<ul>
|
||||
<li><a href="#" target="_blank"><i class="fab fa-linkedin-in"></i></a></li>
|
||||
<li><a href="#" target="_blank"><i class="fab fa-facebook-f"></i></a></li>
|
||||
<li><a href="#" target="_blank"><i class="fab fa-twitter"></i></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="header-buttons">
|
||||
<a href="#" target="_blank" class="btn btn-primary">Download CV</a>
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
<!-- Mobile Navigation -->
|
||||
<div class="menu-toggle">
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</div>
|
||||
<!-- End Mobile Navigation -->
|
||||
|
||||
<div class="content-area single-page-area">
|
||||
<div class="single-page-content">
|
||||
|
||||
<article class="post">
|
||||
|
||||
<div class="post-thumbnail">
|
||||
<img src="img/blog/blog_post_1_full.jpg" alt="image">
|
||||
</div>
|
||||
|
||||
<div class="post-content">
|
||||
<!-- /Entry header -->
|
||||
<header class="entry-header">
|
||||
<!-- Entry meta -->
|
||||
<div class="entry-meta entry-meta-top">
|
||||
<span><a href="#" rel="category tag">UI</a></span>
|
||||
</div>
|
||||
<!-- /Entry meta -->
|
||||
|
||||
<h2 class="entry-title">Best Practices for Animated Progress Indicators</h2>
|
||||
</header>
|
||||
<!-- /Entry header -->
|
||||
|
||||
<!-- Entry content -->
|
||||
<div class="entry-content">
|
||||
<div class="row">
|
||||
<div class=" col-xs-12 col-sm-12 ">
|
||||
<div class="col-inner">
|
||||
<p>Nulla nulla nisl, sodales ac nulla ac, consequat vulputate purus. Curabitur tincidunt ipsum vel nibh rutrum accumsan. Nunc ullamcorper posuere leo, vitae aliquet risus pharetra in. Integer turpis eros, iaculis et mi non, pulvinar egestas leo. Etiam sagittis ex turpis, vitae cursus tortor interdum eu. Quisque ultrices nunc eget erat vestibulum euismod. Ut mauris nisi, facilisis at arcu nec, facilisis porttitor lorem.</p><p>Vivamus vitae neque molestie, porta libero sed, tincidunt leo. In nec posuere odio, id rhoncus lorem. Proin id erat ut dolor condimentum viverra. Praesent viverra sed dolor ac luctus. Praesent placerat id lorem quis lacinia.</p>
|
||||
|
||||
<blockquote class="quote">Maecenas id finibus felis. Etiam vitae nibh et felis efficitur pellentesque. Mauris suscipit sapien nunc, a lacinia nibh feugiat ut. In hac habitasse platea dictumst.
|
||||
<footer class="quote-author">
|
||||
<span>Larry L. Johnson</span>
|
||||
</footer>
|
||||
</blockquote>
|
||||
|
||||
<p>Etiam interdum vulputate risus, vitae elementum neque consectetur sed. Donec at risus dui. Ut in suscipit neque. Vestibulum sit amet lobortis magna, commodo venenatis ante. Cras molestie, ex a auctor lacinia, risus est aliquam risus, sit amet semper purus tortor id ante. Donec lacus ipsum, porttitor et libero a, fringilla auctor quam. Sed in nisl id libero tincidunt aliquet. Aenean dui ipsum, auctor ut leo ut, semper dignissim lacus. Suspendisse faucibus viverra consequat. Maecenas efficitur massa vel eros sagittis dapibus. Nam lobortis mi in turpis hendrerit eleifend. Nulla non massa felis.</p>
|
||||
|
||||
<p>Donec sit amet dolor ante. Vivamus vel massa accumsan, faucibus quam quis, convallis velit. Aliquam erat volutpat. Integer imperdiet diam quis arcu venenatis, quis sagittis nibh rhoncus. Donec non nisi scelerisque, sodales metus quis, accumsan mauris. Curabitur volutpat risus rutrum erat condimentum tristique. Nullam at felis diam. Quisque dictum felis non ante pretium mollis. Aliquam turpis neque, varius nec diam a, aliquam pulvinar diam. Interdum et malesuada fames ac ante ipsum primis in faucibus. Sed ipsum libero, aliquet sed bibendum faucibus, semper a dui.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /Entry content -->
|
||||
|
||||
<div class="entry-meta entry-meta-bottom">
|
||||
<div class="date-author">
|
||||
<span class="entry-date">
|
||||
<a href="#" rel="bookmark">
|
||||
<i class="far fa-clock"></i> <span class="entry-date"> March 16, 2020</span>
|
||||
</a>
|
||||
</span>
|
||||
<span class="author vcard">
|
||||
<a class="url fn n" href="#" rel="author"> <i class="fas fa-user"></i> LMPixels</a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- Share Buttons -->
|
||||
<div class="entry-share btn-group share-buttons">
|
||||
<a href="#" onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600');return false;" class="btn" target="_blank" title="Share on Facebook">
|
||||
<i class="fab fa-facebook-f"></i>
|
||||
</a>
|
||||
|
||||
<a href="#" onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600');return false;" class="btn" target="_blank" title="Share on Twitter">
|
||||
<i class="fab fa-twitter"></i>
|
||||
</a>
|
||||
|
||||
<a href="#" onclick="javascript:window.open(this.href,'', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');return false;" class="btn" title="Share on LinkedIn">
|
||||
<i class="fab fa-linkedin-in"></i>
|
||||
</a>
|
||||
</div>
|
||||
<!-- /Share Buttons -->
|
||||
</div>
|
||||
|
||||
<div class="post-tags">
|
||||
<div class="tags">
|
||||
<a href="#" rel="tag">animate</a>
|
||||
<a href="#" rel="tag">bar</a>
|
||||
<a href="#" rel="tag">design</a>
|
||||
<a href="#" rel="tag">progress</a>
|
||||
<a href="#" rel="tag">ui</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="js/jquery-2.1.3.min.js"></script>
|
||||
<script src="js/modernizr.custom.js"></script>
|
||||
<script src="js/animating.js"></script>
|
||||
|
||||
<script src="js/imagesloaded.pkgd.min.js"></script>
|
||||
<script src='https://www.google.com/recaptcha/api.js'></script>
|
||||
|
||||
<script src='js/perfect-scrollbar.min.js'></script>
|
||||
<script src='js/jquery.shuffle.min.js'></script>
|
||||
<script src='js/masonry.pkgd.min.js'></script>
|
||||
<script src='js/owl.carousel.min.js'></script>
|
||||
<script src="js/jquery.magnific-popup.min.js"></script>
|
||||
|
||||
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCrDf32aQTCVENBhFJbMBKOUTiUAABtC2o"></script>
|
||||
<script src="js/jquery.googlemap.js"></script>
|
||||
<script src="js/validator.js"></script>
|
||||
<script src="js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,80 +0,0 @@
|
|||
<?php
|
||||
|
||||
// configure
|
||||
$from = 'info@yourdomain.com'; // Replace it with Your Hosting Admin email. REQUIRED!
|
||||
$sendTo = 'your@mail.com'; // Replace it with Your email. REQUIRED!
|
||||
$subject = 'New message from contact form';
|
||||
$fields = array('name' => 'Name', 'email' => 'Email', 'subject' => 'Subject', 'message' => 'Message'); // array variable name => Text to appear in the email. If you added or deleted a field in the contact form, edit this array.
|
||||
$okMessage = 'Contact form successfully submitted. Thank you, I will get back to you soon!';
|
||||
$errorMessage = 'There was an error while submitting the form. Please try again later';
|
||||
|
||||
// let's do the sending
|
||||
|
||||
if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])):
|
||||
//your site secret key
|
||||
$secret = '6LdqmCAUAAAAANONcPUkgVpTSGGqm60cabVMVaON';
|
||||
//get verify response data
|
||||
|
||||
$c = curl_init('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
|
||||
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
|
||||
$verifyResponse = curl_exec($c);
|
||||
|
||||
$responseData = json_decode($verifyResponse);
|
||||
if($responseData->success):
|
||||
|
||||
try
|
||||
{
|
||||
$emailText = nl2br("You have new message from Contact Form\n");
|
||||
|
||||
foreach ($_POST as $key => $value) {
|
||||
|
||||
if (isset($fields[$key])) {
|
||||
$emailText .= nl2br("$fields[$key]: $value\n");
|
||||
}
|
||||
}
|
||||
|
||||
$headers = array('Content-Type: text/html; charset="UTF-8";',
|
||||
'From: ' . $from,
|
||||
'Reply-To: ' . $from,
|
||||
'Return-Path: ' . $from,
|
||||
);
|
||||
|
||||
mail($sendTo, $subject, $emailText, implode("\n", $headers));
|
||||
|
||||
$responseArray = array('type' => 'success', 'message' => $okMessage);
|
||||
}
|
||||
catch (\Exception $e)
|
||||
{
|
||||
$responseArray = array('type' => 'danger', 'message' => $errorMessage);
|
||||
}
|
||||
|
||||
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
|
||||
$encoded = json_encode($responseArray);
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
echo $encoded;
|
||||
}
|
||||
else {
|
||||
echo $responseArray['message'];
|
||||
}
|
||||
|
||||
else:
|
||||
$errorMessage = 'Robot verification failed, please try again.';
|
||||
$responseArray = array('type' => 'danger', 'message' => $errorMessage);
|
||||
$encoded = json_encode($responseArray);
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
echo $encoded;
|
||||
endif;
|
||||
else:
|
||||
$errorMessage = 'Please click on the reCAPTCHA box.';
|
||||
$responseArray = array('type' => 'danger', 'message' => $errorMessage);
|
||||
$encoded = json_encode($responseArray);
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
echo $encoded;
|
||||
endif;
|
||||
|
2901
src/css/main.css
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB |
1135
src/index.html
|
@ -1,360 +0,0 @@
|
|||
$(function() {
|
||||
|
||||
$.fn.googleMap = function(params) {
|
||||
params = $.extend( {
|
||||
zoom : 10,
|
||||
coords : [48.895651, 2.290569],
|
||||
type : "ROADMAP",
|
||||
debug : false,
|
||||
langage : "english",
|
||||
overviewMapControl: false,
|
||||
streetViewControl: false,
|
||||
scrollwheel: false,
|
||||
mapTypeControl: false
|
||||
}, params);
|
||||
|
||||
switch(params.type) {
|
||||
case 'ROADMAP':
|
||||
case 'SATELLITE':
|
||||
case 'HYBRID':
|
||||
case 'TERRAIN':
|
||||
params.type = google.maps.MapTypeId[params.type];
|
||||
break;
|
||||
default:
|
||||
params.type = google.maps.MapTypeId.ROADMAP;
|
||||
break;
|
||||
}
|
||||
|
||||
this.each(function() {
|
||||
|
||||
var map = new google.maps.Map(this, {
|
||||
zoom: params.zoom,
|
||||
center: new google.maps.LatLng(params.coords[0], params.coords[1]),
|
||||
mapTypeId: params.type,
|
||||
scrollwheel: params.scrollwheel,
|
||||
streetViewControl: params.streetViewControl,
|
||||
overviewMapControl: params.overviewMapControl,
|
||||
mapTypeControl: params.mapTypeControl
|
||||
|
||||
});
|
||||
|
||||
$(this).data('googleMap', map);
|
||||
$(this).data('googleLang', params.langage);
|
||||
$(this).data('googleDebug', params.debug);
|
||||
$(this).data('googleMarker', new Array());
|
||||
$(this).data('googleBound', new google.maps.LatLngBounds());
|
||||
});
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
$.fn.addMarker = function(params) {
|
||||
params = $.extend( {
|
||||
coords : false,
|
||||
address : false,
|
||||
url : false,
|
||||
id : false,
|
||||
icon : false,
|
||||
draggable : false,
|
||||
title : "",
|
||||
text : "",
|
||||
success : function() {}
|
||||
}, params);
|
||||
|
||||
this.each(function() {
|
||||
$this = $(this);
|
||||
|
||||
if(!$this.data('googleMap')) {
|
||||
if($this.data('googleDebug'))
|
||||
console.error("jQuery googleMap : Unable to add a marker where there is no map !");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!params.coords && !params.address) {
|
||||
if($this.data('googleDebug'))
|
||||
console.error("jQuery googleMap : Unable to add a marker if you don't tell us where !");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if(params.address && typeof params.address == "string") {
|
||||
|
||||
var geocodeAsync = function($that) {
|
||||
|
||||
var geocoder = new google.maps.Geocoder();
|
||||
|
||||
geocoder.geocode({
|
||||
address : params.address,
|
||||
bounds : $that.data('googleBound'),
|
||||
language : $that.data('googleLang')
|
||||
}, function(results, status) {
|
||||
|
||||
if (status == google.maps.GeocoderStatus.OK) {
|
||||
$that.data('googleBound').extend(results[0].geometry.location);
|
||||
|
||||
if(params.icon) {
|
||||
var marker = new google.maps.Marker({
|
||||
map: $this.data('googleMap'),
|
||||
position: results[0].geometry.location,
|
||||
title: params.title,
|
||||
icon: params.icon,
|
||||
draggable: params.draggable
|
||||
});
|
||||
} else {
|
||||
var marker = new google.maps.Marker({
|
||||
map: $that.data('googleMap'),
|
||||
position: results[0].geometry.location,
|
||||
title: params.title,
|
||||
draggable: params.draggable
|
||||
});
|
||||
}
|
||||
|
||||
if(params.draggable) {
|
||||
google.maps.event.addListener(marker, 'dragend', function() {
|
||||
var location = marker.getPosition();
|
||||
|
||||
var coords = {};
|
||||
|
||||
coords.lat = location.lat();
|
||||
coords.lon = location.lng();
|
||||
|
||||
params.success(coords, $this);
|
||||
});
|
||||
}
|
||||
|
||||
if(params.title != "" && params.text != "" && !params.url) {
|
||||
var infowindow = new google.maps.InfoWindow({
|
||||
content: "<h1>"+params.title+"</h1>"+params.text
|
||||
});
|
||||
|
||||
var map = $that.data('googleMap');
|
||||
|
||||
google.maps.event.addListener(marker, 'click', function() {
|
||||
infowindow.open(map, marker);
|
||||
});
|
||||
} else if(params.url) {
|
||||
google.maps.event.addListener(marker, 'click', function() {
|
||||
document.location = params.url;
|
||||
});
|
||||
}
|
||||
|
||||
if(!params.id) {
|
||||
$that.data('googleMarker').push(marker);
|
||||
} else {
|
||||
$that.data('googleMarker')[params.id] = marker;
|
||||
}
|
||||
|
||||
if($that.data('googleMarker').length == 1) {
|
||||
$that.data('googleMap').setCenter(results[0].geometry.location);
|
||||
$that.data('googleMap').setZoom($that.data('googleMap').getZoom());
|
||||
} else {
|
||||
$that.data('googleMap').fitBounds($that.data('googleBound'));
|
||||
}
|
||||
|
||||
var coords = {};
|
||||
coords.lat = results[0].geometry.location.lat();
|
||||
coords.lon = results[0].geometry.location.lng();
|
||||
|
||||
params.success(coords, $this);
|
||||
|
||||
} else {
|
||||
if($this.data('googleDebug'))
|
||||
console.error("jQuery googleMap : Unable to find the place asked for the marker ("+status+")");
|
||||
}
|
||||
});
|
||||
}($this);
|
||||
} else {
|
||||
$this.data('googleBound').extend(new google.maps.LatLng(params.coords[0], params.coords[1]));
|
||||
|
||||
if(params.icon) {
|
||||
var marker = new google.maps.Marker({
|
||||
map: $this.data('googleMap'),
|
||||
position: new google.maps.LatLng(params.coords[0], params.coords[1]),
|
||||
title: params.title,
|
||||
icon: params.icon,
|
||||
draggable: params.draggable
|
||||
});
|
||||
} else {
|
||||
var marker = new google.maps.Marker({
|
||||
map: $this.data('googleMap'),
|
||||
position: new google.maps.LatLng(params.coords[0], params.coords[1]),
|
||||
title: params.title,
|
||||
draggable: params.draggable
|
||||
});
|
||||
}
|
||||
|
||||
if(params.title != "" && params.text != "" && !params.url) {
|
||||
var infowindow = new google.maps.InfoWindow({
|
||||
content: "<h1>"+params.title+"</h1>"+params.text
|
||||
});
|
||||
|
||||
var map = $this.data('googleMap');
|
||||
|
||||
google.maps.event.addListener(marker, 'click', function() {
|
||||
infowindow.open(map, marker);
|
||||
});
|
||||
} else if(params.url) {
|
||||
google.maps.event.addListener(marker, 'click', function() {
|
||||
document.location = params.url;
|
||||
});
|
||||
}
|
||||
|
||||
if(params.draggable) {
|
||||
google.maps.event.addListener(marker, 'dragend', function() {
|
||||
var location = marker.getPosition();
|
||||
|
||||
var coords = {};
|
||||
|
||||
coords.lat = location.lat();
|
||||
coords.lon = location.lng();
|
||||
|
||||
params.success(coords, $this);
|
||||
});
|
||||
}
|
||||
|
||||
if(!params.id) {
|
||||
$this.data('googleMarker').push(marker);
|
||||
} else {
|
||||
$this.data('googleMarker')[params.id] = marker;
|
||||
}
|
||||
|
||||
if($this.data('googleMarker').length == 1) {
|
||||
$this.data('googleMap').setCenter(new google.maps.LatLng(params.coords[0], params.coords[1]));
|
||||
$this.data('googleMap').setZoom($this.data('googleMap').getZoom());
|
||||
} else {
|
||||
$this.data('googleMap').fitBounds($this.data('googleBound'));
|
||||
}
|
||||
|
||||
params.success({
|
||||
lat: params.coords[0],
|
||||
lon: params.coords[1]
|
||||
}, $this);
|
||||
}
|
||||
});
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
$.fn.removeMarker = function(id) {
|
||||
this.each(function() {
|
||||
var $this = $(this);
|
||||
|
||||
if(!$this.data('googleMap')) {
|
||||
if($this.data('googleDebug'))
|
||||
console.log("jQuery googleMap : Unable to delete a marker where there is no map !");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
var $markers = $this.data('googleMarker');
|
||||
|
||||
if(typeof $markers[id] != 'undefined') {
|
||||
$markers[id].setMap(null);
|
||||
|
||||
if($this.data('googleDebug'))
|
||||
console.log('jQuery googleMap : marker deleted');
|
||||
|
||||
return true;
|
||||
} else {
|
||||
if($this.data('googleDebug'))
|
||||
console.error("jQuery googleMap : Unable to delete a marker if it not exists !");
|
||||
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$.fn.addWay = function(params) {
|
||||
params = $.extend( {
|
||||
start : false,
|
||||
end : false,
|
||||
step : [],
|
||||
route : false,
|
||||
langage : 'english'
|
||||
}, params);
|
||||
|
||||
var direction = new google.maps.DirectionsService({
|
||||
region: "fr"
|
||||
});
|
||||
|
||||
var way = new google.maps.DirectionsRenderer({
|
||||
draggable: true,
|
||||
map: $(this).data('googleMap'),
|
||||
panel: document.getElementById(params.route),
|
||||
provideTripAlternatives: true
|
||||
});
|
||||
|
||||
document.getElementById.innerHTML = "";
|
||||
|
||||
var waypoints = [];
|
||||
|
||||
for(var i in params.step) {
|
||||
var step;
|
||||
if(typeof params.step[i] == "object") {
|
||||
step = new google.maps.LatLng(params.step[i][0], params.step[i][1]);
|
||||
} else {
|
||||
step = params.step[i];
|
||||
}
|
||||
|
||||
waypoints.push({
|
||||
location: step,
|
||||
stopover: true
|
||||
});
|
||||
}
|
||||
|
||||
if(typeof params.end != "object") {
|
||||
var geocodeAsync = function($that) {
|
||||
var geocoder = new google.maps.Geocoder();
|
||||
|
||||
geocoder.geocode({
|
||||
address : params.end,
|
||||
bounds : $that.data('googleBound'),
|
||||
language : params.langage
|
||||
}, function(results, status) {
|
||||
if (status == google.maps.GeocoderStatus.OK) {
|
||||
var request = {
|
||||
origin: params.start,
|
||||
destination: results[0].geometry.location,
|
||||
travelMode: google.maps.DirectionsTravelMode.DRIVING,
|
||||
region: "fr",
|
||||
waypoints: waypoints
|
||||
};
|
||||
|
||||
direction.route(request, function(response, status) {
|
||||
if (status == google.maps.DirectionsStatus.OK) {
|
||||
way.setDirections(response);
|
||||
} else {
|
||||
if($that.data('googleDebug'))
|
||||
console.error("jQuery googleMap : Unable to find the place asked for the route ("+response+")");
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
if($that.data('googleDebug'))
|
||||
console.error("jQuery googleMap : Address not found");
|
||||
}
|
||||
});
|
||||
}($(this));
|
||||
} else {
|
||||
var request = {
|
||||
origin: params.start,
|
||||
destination: new google.maps.LatLng(params.end[0], params.end[1]),
|
||||
travelMode: google.maps.DirectionsTravelMode.DRIVING,
|
||||
region: "fr",
|
||||
waypoints: waypoints
|
||||
};
|
||||
|
||||
direction.route(request, function(response, status) {
|
||||
if (status == google.maps.DirectionsStatus.OK) {
|
||||
way.setDirections(response);
|
||||
} else {
|
||||
if($(this).data('googleDebug'))
|
||||
console.error("jQuery googleMap : Address not found");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
});
|
|
@ -1,98 +0,0 @@
|
|||
<div id="ajax-page" class="ajax-page-content">
|
||||
<div class="ajax-page-wrapper">
|
||||
<div class="ajax-page-nav">
|
||||
<div class="nav-item ajax-page-prev-next">
|
||||
<a class="ajax-page-load" href="portfolio-3.html"><i class="lnr lnr-chevron-left"></i></a>
|
||||
<a class="ajax-page-load" href="portfolio-2.html"><i class="lnr lnr-chevron-right"></i></a>
|
||||
</div>
|
||||
<div class="nav-item ajax-page-close-button">
|
||||
<a id="ajax-page-close-button" href="#"><i class="lnr lnr-cross"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ajax-page-title">
|
||||
<h1>Portfolio Project 1</h1>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-8 col-md-8 portfolio-block">
|
||||
<div class="owl-carousel portfolio-page-carousel">
|
||||
<div class="item">
|
||||
<img src="img/portfolio/full/1.jpg" alt="" />
|
||||
</div>
|
||||
<div class="item">
|
||||
<img src="img/portfolio/full/2.jpg" alt="" />
|
||||
</div>
|
||||
<div class="item">
|
||||
<img src="img/portfolio/full/3.jpg" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="portfolio-page-video embed-responsive embed-responsive-16by9">
|
||||
<iframe class="embed-responsive-item" src="https://player.vimeo.com/video/97102654?autoplay=0"></iframe>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(function($){
|
||||
$('.portfolio-page-carousel').imagesLoaded(function(){
|
||||
$('.portfolio-page-carousel').owlCarousel({
|
||||
smartSpeed:1200,
|
||||
items: 1,
|
||||
loop: true,
|
||||
dots: true,
|
||||
nav: true,
|
||||
navText: false,
|
||||
margin: 10,
|
||||
autoHeight:true
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-4 col-md-4 portfolio-block">
|
||||
<!-- Project Description -->
|
||||
<div class="project-description">
|
||||
<div class="block-title">
|
||||
<h3>Description</h3>
|
||||
</div>
|
||||
<ul class="project-general-info">
|
||||
<li><p><i class="fa fa-user"></i> Alex Smith</p></li>
|
||||
<li><p><i class="fa fa-globe"></i> <a href="#" target="_blank">www.project-site.com</a></p></li>
|
||||
<li><p><i class="fa fa-calendar"></i> 25 december, 2016</p></li>
|
||||
</ul>
|
||||
|
||||
<p class="text-justify">Aliquam euismod aliquam massa, quis eleifend dui sodales vitae. Interdum et malesuada fames ac ante ipsum primis in faucibus.</p>
|
||||
<!-- /Project Description -->
|
||||
|
||||
<!-- Technology -->
|
||||
<div class="tags-block">
|
||||
<div class="block-title">
|
||||
<h3>Technology</h3>
|
||||
</div>
|
||||
<ul class="tags">
|
||||
<li><a>HTML5</a></li>
|
||||
<li><a>CSS3</a></li>
|
||||
<li><a>jQuery</a></li>
|
||||
<li><a>Ajax</a></li>
|
||||
<li><a>PHP5</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- /Technology -->
|
||||
|
||||
<!-- Share Buttons -->
|
||||
<div class="btn-group share-buttons">
|
||||
<div class="block-title">
|
||||
<h3>Share</h3>
|
||||
</div>
|
||||
<a href="#" target="_blank" class="btn"><i class="fab fa-facebook-f"></i> </a>
|
||||
<a href="#" target="_blank" class="btn"><i class="fab fa-twitter"></i> </a>
|
||||
<a href="#" target="_blank" class="btn"><i class="fab fa-dribbble"></i> </a>
|
||||
</div>
|
||||
<!-- /Share Buttons -->
|
||||
</div>
|
||||
<!-- Project Description -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -1,98 +0,0 @@
|
|||
<div id="ajax-page" class="ajax-page-content">
|
||||
<div class="ajax-page-wrapper">
|
||||
<div class="ajax-page-nav">
|
||||
<div class="nav-item ajax-page-prev-next">
|
||||
<a class="ajax-page-load" href="portfolio-1.html"><i class="lnr lnr-chevron-left"></i></a>
|
||||
<a class="ajax-page-load" href="portfolio-3.html"><i class="lnr lnr-chevron-right"></i></a>
|
||||
</div>
|
||||
<div class="nav-item ajax-page-close-button">
|
||||
<a id="ajax-page-close-button" href="#"><i class="lnr lnr-cross"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ajax-page-title">
|
||||
<h1>Portfolio Project 2</h1>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-8 col-md-8 portfolio-block">
|
||||
<div class="owl-carousel portfolio-page-carousel">
|
||||
<div class="item">
|
||||
<img src="img/portfolio/full/1.jpg" alt="" />
|
||||
</div>
|
||||
<div class="item">
|
||||
<img src="img/portfolio/full/2.jpg" alt="" />
|
||||
</div>
|
||||
<div class="item">
|
||||
<img src="img/portfolio/full/3.jpg" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="portfolio-page-video embed-responsive embed-responsive-16by9">
|
||||
<iframe class="embed-responsive-item" src="https://player.vimeo.com/video/97102654?autoplay=0"></iframe>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(function($){
|
||||
$('.portfolio-page-carousel').imagesLoaded(function(){
|
||||
$('.portfolio-page-carousel').owlCarousel({
|
||||
smartSpeed:1200,
|
||||
items: 1,
|
||||
loop: true,
|
||||
dots: true,
|
||||
nav: true,
|
||||
navText: false,
|
||||
margin: 10,
|
||||
autoHeight:true
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-4 col-md-4 portfolio-block">
|
||||
<!-- Project Description -->
|
||||
<div class="project-description">
|
||||
<div class="block-title">
|
||||
<h3>Description</h3>
|
||||
</div>
|
||||
<ul class="project-general-info">
|
||||
<li><p><i class="fa fa-user"></i> Alex Smith</p></li>
|
||||
<li><p><i class="fa fa-globe"></i> <a href="#" target="_blank">www.project-site.com</a></p></li>
|
||||
<li><p><i class="fa fa-calendar"></i> 25 december, 2016</p></li>
|
||||
</ul>
|
||||
|
||||
<p class="text-justify">Aliquam euismod aliquam massa, quis eleifend dui sodales vitae. Interdum et malesuada fames ac ante ipsum primis in faucibus.</p>
|
||||
<!-- /Project Description -->
|
||||
|
||||
<!-- Technology -->
|
||||
<div class="tags-block">
|
||||
<div class="block-title">
|
||||
<h3>Technology</h3>
|
||||
</div>
|
||||
<ul class="tags">
|
||||
<li><a>HTML5</a></li>
|
||||
<li><a>CSS3</a></li>
|
||||
<li><a>jQuery</a></li>
|
||||
<li><a>Ajax</a></li>
|
||||
<li><a>PHP5</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- /Technology -->
|
||||
|
||||
<!-- Share Buttons -->
|
||||
<div class="btn-group share-buttons">
|
||||
<div class="block-title">
|
||||
<h3>Share</h3>
|
||||
</div>
|
||||
<a href="#" target="_blank" class="btn"><i class="fab fa-facebook-f"></i> </a>
|
||||
<a href="#" target="_blank" class="btn"><i class="fab fa-twitter"></i> </a>
|
||||
<a href="#" target="_blank" class="btn"><i class="fab fa-dribbble"></i> </a>
|
||||
</div>
|
||||
<!-- /Share Buttons -->
|
||||
</div>
|
||||
<!-- Project Description -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -1,98 +0,0 @@
|
|||
<div id="ajax-page" class="ajax-page-content">
|
||||
<div class="ajax-page-wrapper">
|
||||
<div class="ajax-page-nav">
|
||||
<div class="nav-item ajax-page-prev-next">
|
||||
<a class="ajax-page-load" href="portfolio-2.html"><i class="lnr lnr-chevron-left"></i></a>
|
||||
<a class="ajax-page-load" href="portfolio-1.html"><i class="lnr lnr-chevron-right"></i></a>
|
||||
</div>
|
||||
<div class="nav-item ajax-page-close-button">
|
||||
<a id="ajax-page-close-button" href="#"><i class="lnr lnr-cross"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ajax-page-title">
|
||||
<h1>Portfolio Project 3</h1>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-8 col-md-8 portfolio-block">
|
||||
<div class="owl-carousel portfolio-page-carousel">
|
||||
<div class="item">
|
||||
<img src="img/portfolio/full/1.jpg" alt="" />
|
||||
</div>
|
||||
<div class="item">
|
||||
<img src="img/portfolio/full/2.jpg" alt="" />
|
||||
</div>
|
||||
<div class="item">
|
||||
<img src="img/portfolio/full/3.jpg" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="portfolio-page-video embed-responsive embed-responsive-16by9">
|
||||
<iframe class="embed-responsive-item" src="https://player.vimeo.com/video/97102654?autoplay=0"></iframe>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(function($){
|
||||
$('.portfolio-page-carousel').imagesLoaded(function(){
|
||||
$('.portfolio-page-carousel').owlCarousel({
|
||||
smartSpeed:1200,
|
||||
items: 1,
|
||||
loop: true,
|
||||
dots: true,
|
||||
nav: true,
|
||||
navText: false,
|
||||
margin: 10,
|
||||
autoHeight:true
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-4 col-md-4 portfolio-block">
|
||||
<!-- Project Description -->
|
||||
<div class="project-description">
|
||||
<div class="block-title">
|
||||
<h3>Description</h3>
|
||||
</div>
|
||||
<ul class="project-general-info">
|
||||
<li><p><i class="fa fa-user"></i> Alex Smith</p></li>
|
||||
<li><p><i class="fa fa-globe"></i> <a href="#" target="_blank">www.project-site.com</a></p></li>
|
||||
<li><p><i class="fa fa-calendar"></i> 25 december, 2016</p></li>
|
||||
</ul>
|
||||
|
||||
<p class="text-justify">Aliquam euismod aliquam massa, quis eleifend dui sodales vitae. Interdum et malesuada fames ac ante ipsum primis in faucibus.</p>
|
||||
<!-- /Project Description -->
|
||||
|
||||
<!-- Technology -->
|
||||
<div class="tags-block">
|
||||
<div class="block-title">
|
||||
<h3>Technology</h3>
|
||||
</div>
|
||||
<ul class="tags">
|
||||
<li><a>HTML5</a></li>
|
||||
<li><a>CSS3</a></li>
|
||||
<li><a>jQuery</a></li>
|
||||
<li><a>Ajax</a></li>
|
||||
<li><a>PHP5</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- /Technology -->
|
||||
|
||||
<!-- Share Buttons -->
|
||||
<div class="btn-group share-buttons">
|
||||
<div class="block-title">
|
||||
<h3>Share</h3>
|
||||
</div>
|
||||
<a href="#" target="_blank" class="btn"><i class="fab fa-facebook-f"></i> </a>
|
||||
<a href="#" target="_blank" class="btn"><i class="fab fa-twitter"></i> </a>
|
||||
<a href="#" target="_blank" class="btn"><i class="fab fa-dribbble"></i> </a>
|
||||
</div>
|
||||
<!-- /Share Buttons -->
|
||||
</div>
|
||||
<!-- Project Description -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -1,8 +0,0 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"outDir": "./dist/",
|
||||
"module": "es6",
|
||||
"target": "ES2020",
|
||||
"jsx": "react",
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 699 KiB After Width: | Height: | Size: 699 KiB |
Before Width: | Height: | Size: 141 KiB After Width: | Height: | Size: 141 KiB |
Before Width: | Height: | Size: 829 KiB After Width: | Height: | Size: 829 KiB |
Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 201 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 201 KiB |
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 160 KiB |