|
|
- {>header}
-
- <script src="https://code.jquery.com/jquery-3.3.1.min.js"
- integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
- crossorigin="anonymous">
- </script>
-
- <script>
-
- var postsToLoad= [];
-
- /**
- * 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="/content/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>';
- }
-
- 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
- Prism.highlightAll();
-
- //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.shift());
- }
- lazyLoad();
- }
-
- $(document).ready(function()
- {
- runAjax("/api/getPostsIds/{categoryID}",
- (idsList)=>
- {
- postsToLoad=idsList;
- },
- (err)=>
- {
- console.log(err);
- reject();
- });
- });
-
-
- </script>
-
- <br><br><br><br><br>
- <div class="container">
-
- <div class="row">
- <div class="col-md-8 col-12">
- {for post in posts}
- <div class="blogPost">
- {if post.hasPicture}
- <img src="/content/headerImages/{post.picture_url}" style="width:100%;">
- {/if}
-
- <div class="p-4">
- <h3><b>{post.name}</b></h3>
- <h5>
- <span class="w3-opacity">{post.published}</span>
- </h5>
-
- {post.blogBody}
-
- {if preview}
- <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>
- {/if}
-
- </div>
-
- </div>
- <br>
- <br>
- {else}
- <div class="row p-lg-0">
- <h1 class="align-content-center">Page Not Found</h1>
- <div class="align-content-center">
- <img src="/includes/img/404.jpg" alt="Page not found" width="70%" />
- </div>
- </div>
- <br><br>
- {/for}
-
- <div id="newPosts"></div>
-
- {if preview}
- <div class="justify-content-center w-100 blogPost" id="morePostsBtn">
- <a class="btn btn-secondary btn-lg btn-block text-white w-100 text-center" id="readMore"
- onclick="loadMore()"><b>More Posts »</b></a>
-
-
- </div>
- {/if}
- <br>
- </div>
- <div class="col-md-4 col-12">
- {>sideBar}
- </div>
- </div>
-
- </div>
-
- {footer}
|