|
@ -1,4 +1,116 @@ |
|
|
{>header} |
|
|
{>header} |
|
|
|
|
|
|
|
|
|
|
|
<script src="https://code.jquery.com/jquery-3.3.1.min.js" |
|
|
|
|
|
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" |
|
|
|
|
|
crossorigin="anonymous"> |
|
|
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
|
|
<script> |
|
|
|
|
|
|
|
|
|
|
|
var postsToLoad= [1,3,4,5,6,7,8,12]; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* Runs a get request using ajax |
|
|
|
|
|
*/ |
|
|
|
|
|
function runAjax(url, successCallBack, errorCallBack) |
|
|
|
|
|
{ |
|
|
|
|
|
console.log(url); |
|
|
|
|
|
$.ajax({ |
|
|
|
|
|
type:'GET', |
|
|
|
|
|
url: url, |
|
|
|
|
|
crossDomain: true, |
|
|
|
|
|
dataType: "json", |
|
|
|
|
|
success: successCallBack, |
|
|
|
|
|
error:errorCallBack, |
|
|
|
|
|
timeout: 3000 |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** Lazy loads youtube videos on the page |
|
|
|
|
|
*/ |
|
|
|
|
|
function lazyLoad() |
|
|
|
|
|
{ |
|
|
|
|
|
var youtube = document.querySelectorAll( ".youtube" ); |
|
|
|
|
|
|
|
|
|
|
|
for (var i = 0; i < youtube.length; i++) { |
|
|
|
|
|
|
|
|
|
|
|
var source = "https://img.youtube.com/vi/"+ youtube[i].dataset.embed +"/sddefault.jpg"; |
|
|
|
|
|
|
|
|
|
|
|
var image = new Image(); |
|
|
|
|
|
image.src = source; |
|
|
|
|
|
image.addEventListener( "load", function() { |
|
|
|
|
|
youtube[ i ].appendChild( image ); |
|
|
|
|
|
}( i ) ); |
|
|
|
|
|
|
|
|
|
|
|
youtube[i].addEventListener( "click", function() { |
|
|
|
|
|
|
|
|
|
|
|
var iframe = document.createElement( "iframe" ); |
|
|
|
|
|
|
|
|
|
|
|
iframe.setAttribute( "frameborder", "0" ); |
|
|
|
|
|
iframe.setAttribute( "allowfullscreen", "" ); |
|
|
|
|
|
iframe.setAttribute( "src", "https://www.youtube.com/embed/"+ this.dataset.embed +"?rel=0&showinfo=0&autoplay=1" ); |
|
|
|
|
|
|
|
|
|
|
|
this.innerHTML = ""; |
|
|
|
|
|
this.appendChild( iframe ); |
|
|
|
|
|
} ); |
|
|
|
|
|
}; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function buildPostHTML(post) |
|
|
|
|
|
{ |
|
|
|
|
|
var pic = ''; |
|
|
|
|
|
if(post.hasPicture) |
|
|
|
|
|
{ |
|
|
|
|
|
pic = '<img src="/blogContent/headerImages/' + post.picture_url + '" style="width:100%;">'; |
|
|
|
|
|
} |
|
|
|
|
|
return '<div class="blogPost">' + pic + '<div class="p-4"><b><h3>' + post.name + '</h3></b><h5>' + post.published + '</span></h5><div>' + post.blogBody + '<p class="text-center"><a class="btn btn-secondary btn-lg text-white" href="https://jrtechs.net/' + post.categoryURL + '"/"' + post.url + '"><b>Read More »</b></a></p></div></div></div><br><br><br>'; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function addPosts(id) |
|
|
|
|
|
{ |
|
|
|
|
|
return new Promise(function(resolve, reject) |
|
|
|
|
|
{ |
|
|
|
|
|
runAjax("api/preview/" + id, |
|
|
|
|
|
(html)=> |
|
|
|
|
|
{ |
|
|
|
|
|
var content = buildPostHTML(html) |
|
|
|
|
|
|
|
|
|
|
|
$("#newPosts").append(content); |
|
|
|
|
|
//lazy loads youtube videos |
|
|
|
|
|
lazyLoad(); |
|
|
|
|
|
|
|
|
|
|
|
//highlights code |
|
|
|
|
|
document.querySelectorAll('pre code').forEach((block) => { |
|
|
|
|
|
hljs.highlightBlock(block); |
|
|
|
|
|
}); |
|
|
|
|
|
//renders latex math |
|
|
|
|
|
MathJax.Hub.Queue(["Typeset",MathJax.Hub]); |
|
|
|
|
|
resolve(); |
|
|
|
|
|
}, |
|
|
|
|
|
(err)=> |
|
|
|
|
|
{ |
|
|
|
|
|
console.log(err); |
|
|
|
|
|
reject(); |
|
|
|
|
|
}); |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
async function loadMore() |
|
|
|
|
|
{ |
|
|
|
|
|
for(var i = 0; i < 3; i++) |
|
|
|
|
|
{ |
|
|
|
|
|
if(postsToLoad.length == 0) |
|
|
|
|
|
{ |
|
|
|
|
|
$('#morePostsBtn').html(''); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
await addPosts(postsToLoad.pop()); |
|
|
|
|
|
} |
|
|
|
|
|
console.log("Wham"); |
|
|
|
|
|
} |
|
|
|
|
|
</script> |
|
|
|
|
|
|
|
|
<br><br><br><br><br> |
|
|
<br><br><br><br><br> |
|
|
<div class="container"> |
|
|
<div class="container"> |
|
|
|
|
|
|
|
@ -40,7 +152,18 @@ |
|
|
<br><br> |
|
|
<br><br> |
|
|
{/for} |
|
|
{/for} |
|
|
|
|
|
|
|
|
{>paginationTemplate} |
|
|
|
|
|
|
|
|
<div id="newPosts"></div> |
|
|
|
|
|
|
|
|
|
|
|
{if preview} |
|
|
|
|
|
<div class="row justify-content-center w-100" id="morePostsBtn"> |
|
|
|
|
|
<div class="col-md-6 col-12"> |
|
|
|
|
|
<p class="text-center"> |
|
|
|
|
|
<a class="btn btn-secondary btn-lg text-white" id="readMore" |
|
|
|
|
|
onclick="loadMore()"><b>More Posts »</b></a> |
|
|
|
|
|
</p> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
{/if} |
|
|
<br> |
|
|
<br> |
|
|
</div> |
|
|
</div> |
|
|
<div class="col-md-4 col-12"> |
|
|
<div class="col-md-4 col-12"> |
|
|