2015-02-21 21:04:03 +01:00
<! DOCTYPE HTML >
2015-03-27 07:04:23 +01:00
<!--
2015-07-05 18:02:19 +02:00
Rangitaki
GitHub : https :// github . com / mmk2410 / Rangitaki
Web : https :// marcel - kapfer . de / rangitaki
Twitter : @ Rangitaki
Google +: + Rangitaki
-->
<!--
COPYRIGHT ( c ) 2015 mmk2410
2015-03-27 07:04:23 +01:00
2015-07-05 18:02:19 +02:00
MIT License
2015-03-27 07:04:23 +01:00
2015-07-05 18:02:19 +02:00
Permission is hereby granted , free of charge , to any person obtaining
a copy of this software and associated documentation files ( the
" Software " ), to deal in the Software without restriction , including
without limitation the rights to use , copy , modify , merge , publish ,
distribute , sublicense , and / or sell copies of the Software , and to
permit persons to whom the Software is furnished to do so , subject to
the following conditions :
2015-03-27 07:04:23 +01:00
2015-07-05 18:02:19 +02:00
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software .
2015-03-27 07:04:23 +01:00
2015-07-05 18:02:19 +02:00
THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND ,
EXPRESS OR IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY , FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT . IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM , DAMAGES OR OTHER LIABILITY , WHETHER IN AN ACTION
OF CONTRACT , TORT OR OTHERWISE , ARISING FROM , OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE .
2015-03-27 07:04:23 +01:00
-->
2015-02-21 21:04:03 +01:00
< html >
2015-06-18 20:45:49 +02:00
< ? php
2015-07-25 09:34:51 +02:00
/**
* Rangitaki PHP Blogging engine
*/
// Getting necessary php files
require 'config.php' ; // Config file (this must be the first line)
require './lang/' . $language . " .php " ; // Language file
require_once 'res/php/Parsedown.php' ; // The soul of the beast: Parsedown
require_once 'res/php/ArticleGenerator.php' ; // The article generator
require_once './res/php/BlogListGenerator.php' ; // and the blog list generator
// Getting some variables ($_GET and $_SERVER)
$getblog = filter_input ( INPUT_GET , " blog " ); // getting the blog variable
$getarticle = filter_input ( INPUT_GET , " article " ); // getting the article variable
$gettag = filter_input ( INPUT_GET , " tag " ); // getting the tag variable
$url = " http:// " . filter_input ( INPUT_SERVER , " HTTP_HOST " ) . filter_input ( INPUT_SERVER , " REQUEST_URI " ); // getting the url (used for sharing)
2015-06-18 20:45:49 +02:00
?>
2015-02-21 21:04:03 +01:00
2015-06-18 20:45:49 +02:00
< head >
2015-07-25 09:34:51 +02:00
< meta charset = " utf-8 " >
< title >< ? php echo $blogtitle ; // Setting the blog article?></title>
2015-06-18 20:45:49 +02:00
<!-- Metatags -->
2015-07-25 09:34:51 +02:00
< meta name = " author " content = " <?php echo $blogauthor ; // Setting the blog author ?> " />
< meta name = " description " content = " <?php echo $blogdescription ; // the blog description ?> " />
<!-- Meta tag for responsive ui -->
2015-06-18 20:45:49 +02:00
< meta content = 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name = 'viewport' />
2015-07-05 18:02:19 +02:00
<!-- OpenGraph meta tags -->
< meta property = " og:title " content = " <?php echo $blogtitle ; ?> " />
< meta property = " og:type " content = " website " />
< meta property = " og:url " content = " <?php echo $url ; ?> " />
< meta property = " og:image " content = " <?php echo $favicon ; ?> " />
< meta property = " og:description " content = " <?php echo $blogdescription ; ?> " />
< meta property = " og:locale:alternate " content = " <?php echo $lang ; ?> " />
<!-- Twitter meta tags -->
< meta name = " twitter:card " content = " summary " />
< meta name = " twitter:site " content = " <?php echo $twitter ; ?> " />
< meta name = " twitter:title " content = " <?php echo $blogtitle ; ?> " />
< meta name = " twitter:description " content = " <?php echo $blogdescription ; ?> " />
< meta name = " twitter:image " content = " <?php echo $favicon ; ?> " />
< meta name = " twitter:url " content = " <?php echo $url ; ?> " />
2015-07-25 09:34:51 +02:00
<!-- CSS files -->
2015-06-18 20:45:49 +02:00
< link rel = " stylesheet " type = " text/css " href = " res/css/rangitaki.css " />
2015-07-25 09:34:51 +02:00
< link rel = " stylesheet " type = " text/css " href = " themes/<?php echo $theme ; // getting the theme stylesheet?>.css " />
2015-06-15 11:27:57 +02:00
< ? php
2015-07-25 09:34:51 +02:00
// Checking if the drawer is enabled
2015-06-18 20:45:49 +02:00
if ( $nav_drawer == 'no' ) {
2015-07-25 09:34:51 +02:00
// Loading additional stylesheet for disabling the drawer?>
2015-06-18 20:45:49 +02:00
< link rel = " stylesheet " type = " text/css " href = " res/css/no-nav.css " />
< ? php
}
?>
2015-07-25 09:34:51 +02:00
< link href = '//fonts.googleapis.com/css?family=Roboto:400,500,700,300,400italic,100,100italic,900' rel = 'stylesheet' type = 'text/css' > <!-- Font -->
< link rel = " stylesheet " href = " ./res/css/github-gist.css " > <!-- stylesheet for code highlighting -->
<!-- Favicons -->
< link rel = " shortcut icon " type = " image/x-icon " href = " <?php echo $favicon ; ?> " />
< link rel = " apple-touch-icon-precomposed " href = " <?php echo $favicon ; ?> " >
<!-- JavaScript Pt . 1 : HightlightJS ( get and load ) : Code highlighting -->
2015-06-18 20:45:49 +02:00
< script src = " ./res/js/highlight.pack.js " ></ script >
< script > hljs . initHighlightingOnLoad (); </ script >
</ head >
< body >
2015-07-25 09:34:51 +02:00
< ? php
// Checking if the navigation drawer is enabled. If not -> skip it
if ( $nav_drawer == " yes " ) {
?>
< div class = " overlay " ></ div > <!-- Darken the background when fading the drawer in . See also the JS file -->
2015-06-18 20:45:49 +02:00
< div class = " nav " >
< div class = " divider " ></ div >
< ? php
2015-07-25 09:34:51 +02:00
$blogs = scandir ( " ./blogs/ " ); // Getting everything from the blog directory
if ( ! isset ( $getarticle ) && ! isset ( $gettag ) && sizeof ( $blogs ) > 3 ) { // Checking if not in article or tag view and if there are more the one blog. The 3 is for these three array entries: 'main.md', '.', '..'
2015-06-18 20:45:49 +02:00
echo " <section> " ;
2015-07-25 09:34:51 +02:00
echo " <div class='nav-item-static'> " . $BLOGLANG [ 'Blogs on' ] . " $blogtitle :</div> " ; // 1. Set localized string 2. Set blogtitle
foreach ( $blogs as $blog ) { // iterating through the blogs/ directory
if ( strlen ( $blog ) >= 3 && substr ( $blog , - 3 ) == " .md " ) { // check if filename is larger than three chars and if the file ends with ".md"
if ( $getblog == " " ) { // Run when on main blog
if ( $blog != " main.md " ) { // excluding main blog
BlogListGenerator :: listBlog ( " ./blogs/ " , $blog , $blogtitle ); // creating navigation item
2015-06-18 20:45:49 +02:00
}
} else {
2015-07-25 09:34:51 +02:00
if ( $getblog . " .md " != $blog ) { // Check if $blog is current blog -> this blog will be excluded
// Make sure that the entry has a title, because main.md hasn't one
2015-07-03 10:59:54 +02:00
if ( empty ( $blogmainname )) {
2015-07-03 10:21:20 +02:00
$blogmaintitle = $blogtitle ;
} else {
$blogmaintitle = $blogmainname ;
}
2015-07-25 09:34:51 +02:00
BlogListGenerator :: listBlog ( " ./blogs/ " , $blog , $blogmaintitle ); // creating navigation item
2015-06-18 20:45:49 +02:00
}
2015-06-15 11:27:57 +02:00
}
2015-06-11 17:32:58 +02:00
}
}
2015-06-18 20:45:49 +02:00
echo " </section> " ;
2015-07-25 09:34:51 +02:00
} elseif ( isset ( $getarticle ) || isset ( $gettag )) { // If viewing a blog or a tag
2015-06-18 20:45:49 +02:00
?>
2015-07-25 09:34:51 +02:00
< a class = " nav-item " onclick = " goBack() " > Go back </ a > <!-- Set a back item instead of the blogs . -->
2015-06-18 20:45:49 +02:00
< ? php
2015-06-11 17:32:58 +02:00
}
2015-07-25 09:34:51 +02:00
if ( $bloghome == " yes " ) { // If a blog home is existend
2015-06-15 11:27:57 +02:00
?>
2015-07-25 09:34:51 +02:00
< div class = " divider " ></ div >
< a class = " nav-item " href = " <?php echo $bloghomeurl ; ?> " >< ? php echo $bloghomename ; ?> </a>
< ? php
}
?>
</ div > <!-- End of the navigation drawer -->
< ? php
} // Endif from line 97; Yes, I really should think about alternative syntax...
2015-06-18 20:45:49 +02:00
2015-07-25 09:34:51 +02:00
// Set blog to "main" if on main blog, else to $getblog. This variable is needed later
2015-06-18 20:45:49 +02:00
if ( $getblog == " " ) {
2015-06-11 17:32:58 +02:00
$blog = " main " ;
} else {
2015-06-18 20:45:49 +02:00
$blog = $getblog ;
2015-06-11 17:32:58 +02:00
}
2015-06-18 20:45:49 +02:00
?>
2015-07-25 09:34:51 +02:00
< div class = " main " > <!-- Main page with content -->
< div class = " header " > <!-- Action Bar , but since there isn ' t much action I call it header . One day a search feature would be nice ...-->
< img src = " ./res/img/menu.svg " class = " nav-img " /> <!-- Ham , ham , hamburger -->
<!-- Blog title with subblog title and links to each one -->
< nobr >< span class = " title " >< a href = " ./ " >< ? php echo $blogtitle ; ?> <!-- link to main blog-->
2015-07-03 10:59:54 +02:00
< ? php
2015-07-25 09:34:51 +02:00
if ( empty ( $getblog )) { // if not on a subblog
2015-07-03 10:59:54 +02:00
if ( ! empty ( $blogmainname )) {
2015-07-25 09:34:51 +02:00
echo " › " . $blogmainname ; // If you see a › (square) here : This is not a bug, but a missing sign in your font
2015-07-03 10:59:54 +02:00
}
2015-07-25 09:34:51 +02:00
} else { // On subblog: set also a link to the subblog
2015-07-03 10:59:54 +02:00
?>
</ a >
2015-07-03 14:37:32 +02:00
› < a href = " <?php echo " ./ ? blog = $getblog " ?> " >
2015-07-03 10:59:54 +02:00
< ? php
2015-07-25 09:34:51 +02:00
echo BlogListGenerator :: getName ( " ./blogs/ $getblog .md " ); // get the blog name
2015-07-03 10:59:54 +02:00
}
?>
</ a >
</ span >
</ nobr >
2015-07-25 09:34:51 +02:00
< div class = " fadeout " ></ div > <!-- if the blog name is to long ( especially on mobile devices ), a fadeout fades the test out at the end of the header -->
2015-06-18 20:45:49 +02:00
</ div >
< ? php
2015-07-25 09:34:51 +02:00
// Blog Intro text
if ( file_exists ( " blogs/ $blog .md " ) && $getarticle == " " && $blogintro == " yes " && $gettag == " " ) { // only shown if not in article or tag view and if the blogintro is enabled
$file = file_get_contents ( " blogs/ $blog .md " ); // get content of the blog file
$file = $file . " \n " ; // add a line break. necessary if the editor didn't make one while saving
$file = substr ( $file , strpos ( $file , " \n " )); // basically removing the first line, which contains the blog title
if ( $file != " " && $file != " \n " && $file != " " ) { // if the file is now neither empty nor only has a linebreak nor exists of an space
2015-06-18 20:45:49 +02:00
?>
< section class = " card " >
< div class = " articletext " >
2015-07-25 09:34:51 +02:00
< ? php // generate the html text from the markdown file
2015-06-18 20:45:49 +02:00
$intro = Parsedown :: instance ()
2015-07-25 09:34:51 +02:00
-> setBreaksEnabled ( true ) // with linebreaks
2015-06-18 20:45:49 +02:00
-> text ( $file );
2015-07-25 09:34:51 +02:00
echo $intro ; // PRINTS THE SH****
2015-06-18 20:45:49 +02:00
?>
</ div >
</ section >
< ? php
2015-06-15 11:27:57 +02:00
}
}
2015-07-25 09:34:51 +02:00
$articlesdir = " ./articles/ $blog / " ; // generate a variable with the articles directory
// TAG VIEW
if ( isset ( $gettag )) { // if there's a tag -> tag view
$articles = scandir ( $articlesdir , 1 ); // save the content of the directory in the articles variable
foreach ( $articles as $article ) { // iterate through all articles
$tags = ArticleGenerator :: getTags ( $articlesdir , $article ); // get the article tags
if ( in_array ( $gettag , $tags )) { // if the article has the requested tag
if ( strlen ( $article ) >= 3 && substr ( $article , - 3 ) == " .md " ) { // check if the file is a article file
ArticleGenerator :: newArticle ( $articlesdir , $article , $getblog ); // generate the article
2015-06-15 11:27:57 +02:00
}
}
}
2015-07-25 09:34:51 +02:00
} elseif ( $getarticle == " " ) { // NORMAL VIEW if there's no article request -> normal view
$articles = scandir ( $articlesdir , 1 ); // save the content of the directory in the articles variable
foreach ( $articles as $article ) { // iterate through this variable
if ( strlen ( $article ) >= 3 && substr ( $article , - 3 ) == " .md " ) { // check if the file is a article file
ArticleGenerator :: newArticle ( $articlesdir , $article , $getblog ); // generate the article
2015-06-12 10:31:28 +02:00
}
}
2015-07-25 09:34:51 +02:00
} elseif ( isset ( $getarticle )) { // ARTICLE VIEW
ArticleGenerator :: newArticle ( $articlesdir , $getarticle . " .md " , $getblog ); // generate the requested article
include './res/php/Disqus.php' ; // include disques
} else { // SOMETHING STRANGE: THIS SHOULDN'T HAPPEN
echo " Some error occured, please go back. " ;
2015-06-12 10:31:28 +02:00
}
2015-06-18 20:45:49 +02:00
?>
2015-06-15 11:27:57 +02:00
< div class = " footer " >
2015-07-25 09:34:51 +02:00
< ? php echo $blogfooter ; //print the blog footer?>
2015-06-15 11:27:57 +02:00
</ div >
2015-07-03 14:37:32 +02:00
< ? php
2015-07-25 09:34:51 +02:00
// show the fab if it's enabled
2015-07-03 14:37:32 +02:00
if ( $sharefab == " yes " ) {
?>
< div class = " fabmenu " >
2015-07-25 09:34:51 +02:00
< div class = " subfab " ><!-- Email subfab -->
< a href = ' mailto : ? subject =
< ? php echo $blogtitle ; ?> &body=<?php echo $BLOGLANG['Check out this blog']; ?>: <?php echo $url; ?>'
target = " blank " >
2015-07-03 14:37:32 +02:00
< img src = " ./res/img/email.svg " class = " subfab-img " />
</ a >
</ div >
2015-07-25 09:34:51 +02:00
< div class = " subfab " ><!-- twitter subfav -->
< a href = 'https://twitter.com/intent/tweet?text=<?php echo $BLOGLANG[' Check out ']; ?>: <?php echo $url; ?>&original_referer=' target = " blank " >
2015-07-03 14:37:32 +02:00
< img src = " ./res/img/twitter.svg " class = " subfab-img " />
</ a >
</ div >
2015-07-25 09:34:51 +02:00
< div class = " subfab " ><!-- gplus subfab -->
2015-07-03 14:37:32 +02:00
< a href = 'https://plus.google.com/share?url=<?php echo $url; ?>&hl=en-US' target = " blank " >
< img src = " ./res/img/gplus.svg " class = " subfab-img " />
</ a >
</ div >
2015-07-25 09:34:51 +02:00
< div class = " subfab " ><!-- facebook subfab -->
2015-07-03 14:37:32 +02:00
< a href = 'https://www.facebook.com/sharer/sharer.php?u=<?php echo $url; ?>&t=<?php echo "echo $blogtitle" ?>' target = " blank " >
< img src = " ./res/img/facebook.svg " class = " subfab-img " />
</ a >
</ div >
2015-07-25 09:34:51 +02:00
< div class = " fab " ><!-- share fab -->
2015-07-03 14:37:32 +02:00
< img src = " ./res/img/share.svg " class = " fab-img " alt = " Share " />
</ div >
2015-06-15 11:27:57 +02:00
</ div >
2015-07-03 14:37:32 +02:00
< ? php
}
?>
2015-02-21 21:04:03 +01:00
</ div >
2015-07-25 09:34:51 +02:00
< script src = " ./res/js/jquery-2.1.4.min.js " ></ script > <!-- include jquery -->
< script src = " ./res/js/app.js " ></ script > <!-- include main javascript -->
2015-06-18 20:45:49 +02:00
< ? php
2015-07-25 09:34:51 +02:00
require './res/php/GoogleAnalytics.php' ; // include google analytics
2015-06-18 20:45:49 +02:00
?>
2015-02-21 21:04:03 +01:00
</ body >
</ html >