Various Improvements:

- Metatags based on subblog and/or article
 - Drawer close button
 - RCC: media upload
 - RCC subpages: back button
This commit is contained in:
mmk2410 2015-11-22 00:59:07 +01:00
parent c910225e7d
commit c242062cd9
12 changed files with 216 additions and 26 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
nbproject/
.idea/

View file

@ -5,3 +5,5 @@
This is the official Rangitaki logo.
![The Rangitaki logo](media/example.png)
It is saved in the example blog directory.

View file

@ -33,18 +33,48 @@ $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)
// Fetching necessary information about the current article
// Set blog to "main" if on main blog, else to $getblog. This variable is needed later
if ($getblog == "") {
$blog = "main";
} else {
$blog = $getblog;
}
$articlesdir = "./articles/$blog/"; // generate a variable with the articles directory
// Fetching the articles title
if (isset($getarticle)) {
$articletitle = ArticleGenerator::getTitle($articlesdir, $getarticle . '.md');
}
// Make sure that the entry has a title, because main.md hasn't one
if (empty($blogmainname)) {
$blogmaintitle = $blogtitle;
} else {
$blogmaintitle = $blogmainname;
}
if (isset($getblog)) {
$subblogtitle = BlogListGenerator::getName('./blogs/' . $getblog . '.md');
} else {
$subblogtitle = $blogmaintitle;
}
// Generate title for the html head
if (isset($getarticle)) {
$hd_subblog_title = $articletitle . ' - ' . $subblogtitle;
} else {
$hd_subblog_title = $subblogtitle;
}
?>
<head>
<meta charset="utf-8">
<title><?php echo $blogtitle; // Setting the blog article?></title>
<title><?php echo $hd_subblog_title; ?></title>
<!--Metatags-->
<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-->
<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport'/>
<!-- OpenGraph meta tags -->
<meta property="og:title" content="<?php echo $blogtitle; ?>"/>
<meta property="og:title" content="<?php echo $hd_subblog_title; ?>"/>
<meta property="og:type" content="website"/>
<meta property="og:url" content="<?php echo $url; ?>"/>
<meta property="og:image" content="<?php echo $favicon; ?>"/>
@ -53,7 +83,7 @@ $url = "http://" . filter_input(INPUT_SERVER, "HTTP_HOST") . filter_input(INPUT_
<!-- 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:title" content="<?php echo $hd_subblog_title; ?>"/>
<meta name="twitter:description" content="<?php echo $blogdescription; ?>"/>
<meta name="twitter:image" content="<?php echo $favicon; ?>"/>
<meta name="twitter:url" content="<?php echo $url; ?>"/>
@ -86,27 +116,24 @@ if ($nav_drawer == "yes") {
?>
<div class="overlay"></div> <!-- Darken the background when fading the drawer in. See also the JS file-->
<div class="nav">
<div class="nav-close">
<img src="./res/img/close-dark.svg" class="nav-close-img" alt="Close"/>
</div>
<div class="divider"></div>
<?php
$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', '.', '..'
echo "<section>";
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"
foreach ($blogs as $navblog) { // iterating through the blogs/ directory
if (strlen($navblog) >= 3 && substr($navblog, -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
if ($navblog != "main.md") { // excluding main blog
BlogListGenerator::listBlog("./blogs/", $navblog, $blogtitle); // creating navigation item
}
} else {
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
if (empty($blogmainname)) {
$blogmaintitle = $blogtitle;
} else {
$blogmaintitle = $blogmainname;
}
BlogListGenerator::listBlog("./blogs/", $blog, $blogmaintitle); // creating navigation item
if ($getblog . ".md" != $navblog) { // Check if $blog is current blog -> this blog will be excluded
BlogListGenerator::listBlog("./blogs/", $navblog, $blogmaintitle); // creating navigation item
}
}
}
@ -128,12 +155,6 @@ if ($nav_drawer == "yes") {
<?php
} // Endif from line 97; Yes, I really should think about alternative syntax...
// Set blog to "main" if on main blog, else to $getblog. This variable is needed later
if ($getblog == "") {
$blog = "main";
} else {
$blog = $getblog;
}
?>
<div class="main"> <!-- Main page with content -->
<div class="header">
@ -181,7 +202,6 @@ if ($getblog == "") {
<?php
}
}
$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
@ -216,8 +236,7 @@ if ($getblog == "") {
?>
<div class="fabmenu">
<div class="subfab"><!--Email subfab-->
<a href='mailto:?subject=
<?php echo $blogtitle; ?>&body=<?php echo $BLOGLANG['Check out this blog']; ?>: <?php echo $url; ?>'
<a href='mailto:?subject=<?php echo $blogtitle; ?>&body=<?php echo $BLOGLANG['Check out this blog']; ?>: <?php echo $url; ?>'
target="blank">
<img src="./res/img/email.svg" class="subfab-img"/>
</a>

View file

@ -110,6 +110,16 @@ THE SOFTWARE.
<input id="button" type="submit" value="Post" class="button"/>
</form>
</section>
<section class="card">
<div class="headline">Media Upload</div>
<form enctype="multipart/form-data" action="media/" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000000000" />
<input id="" name="userfile" type="file" value="Choose a file" />
<br>
<br>
<input id="button" type="submit" value="Upload" class="button"/>
</form>
</section>
<?php
} else {
?>

60
rcc/media/index.php Normal file
View file

@ -0,0 +1,60 @@
<!DOCTYPE html>
<!--
The MIT License
Copyright 2015 mmk2410.
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:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
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.
-->
<html>
<head>
<meta charset="UTF-8">
<title>Rangitaki Control Center</title>
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
<link rel="stylesheet" href="../res/rcc.css" />
</head>
<body>
<div class="header">
<a href="../" class="title">Rangitaki Control Center</a>
</div>
<div class="main">
<section class="card">
<div class="headline">File Upload</div>
<?php
session_start();
if($_SESSION['login']) {
if ($_FILES['userfile']['name'] == "") {
echo "<p>You have to choose a file!</p>";
} else {
$uploaddir = "../../media/";
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "<p>The post was successfully uploaded and is now published.</p>";
} else {
echo "<p>During the uploading process an error occured! <br> Error Code:" . ($_FILES['userfile']['error'] . "</p>");
}
}
?><a href="../" class="button">GO BACK</a><?php
}
?>
</section>
</div>
</body>
</html>

View file

@ -61,6 +61,7 @@ EOD;
} else {
echo "Some error happend, while publishing.";
}
?><a href="../" class="button">GO BACK</a><?php
}
?>
</section>

View file

@ -2,6 +2,9 @@ window.onload = function () {
var t = document.getElementsByTagName('textarea')[0];
var offset = !window.opera ? (t.offsetHeight - t.clientHeight) : (t.offsetHeight + parseInt(window.getComputedStyle(t, null).getPropertyValue('border-top-width')));
/**
* The following three code clocks are for proper resizing of the input textarea
*/
var resize = function (t) {
t.style.height = 'auto';
t.style.height = (t.scrollHeight + offset ) + 'px';

View file

@ -52,6 +52,7 @@ THE SOFTWARE.
echo "<p>During the uploading process an error occured! <br> Error Code:" . ($_FILES['userfile']['error'] . "</p>");
}
}
?><a href="../" class="button">GO BACK</a><?php
}
?>
</section>

View file

@ -97,7 +97,6 @@ body{
height: 100%;
top: 0;
left: -301px;
padding-top: 64px;
z-index: 40;
}
@ -113,6 +112,15 @@ body{
transition: background-color 125ms ease-in-out 0ms;
}
.nav-close {
cursor: pointer;
}
.nav-close-img{ /* the hamburger icon */
height: 35px;
padding: 12px;
}
.nav-item{ /* additional setting for clickable nav items */
cursor: pointer;
}
@ -229,6 +237,15 @@ body{
.nav{ /* always show navigation bar */
left: 0;
padding-top: 64px;
}
.nav-close-img {
display: none;
}
.nav-close {
display: none;
}
.nav-img{ /* always hide navigation bar icon*/

60
res/img/close-dark.svg Normal file
View file

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
fill="#000000"
height="48"
viewBox="0 0 24 24"
width="48"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="close-dark.svg">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="3830"
inkscape:window-height="2074"
id="namedview8"
showgrid="false"
inkscape:zoom="13.906433"
inkscape:cx="-29.993443"
inkscape:cy="32.765779"
inkscape:window-x="0"
inkscape:window-y="81"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<path
d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"
id="path4"
style="fill:#565656;fill-opacity:1" />
<path
d="M0 0h24v24H0z"
fill="none"
id="path6" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -40,7 +40,7 @@ var main = function () { // main function; called below
);
var navOpen = false; // nav hidden at begin
$('.nav-img, .overlay').click( // action on hamburger click
$('.nav-img, .overlay, .nav-close').click( // action on hamburger click
function () {
if (!(navOpen)) { // if nav is hidden
openNav(); // open the nav drawer

View file

@ -133,4 +133,20 @@ class ArticleGenerator
return $tags; // remove that array
}
/**
* A function to get an article title as a string
*
* @param string $directory The directory where the article files are stored
* @param string $articlefile The name of the article file
* @return string
*/
function getTitle($directory, $articlefile)
{
$article = file_get_contents($directory . $articlefile); // get the article
if (substr($article, 0, 6) == "%TITLE") { // detect and remove the title
$title = substr($article, 8, strpos($article, "\n") - 8); // get this title
return $title; // remove that array
}
}
}