Add global layout and homepage

This commit is contained in:
floppydiskette 2023-06-13 23:07:20 +01:00 committed by Frankie B
parent a464ef4c0e
commit 8e627b1671
33 changed files with 612 additions and 158 deletions

View file

@ -14,21 +14,8 @@
|
*/
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
'scheme' => 'https',
],
'postmark' => [
'token' => env('POSTMARK_TOKEN'),
],
'ses' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
'lastfm' => [
'key' => env('LASTFM_KEY'),
'user' => env('LASTFM_USER')
]
];

77
public/css/dark.css Normal file
View file

@ -0,0 +1,77 @@
/*
This stylesheet contains only colors which are
different depending on theme. All other styles have
been moved to global.css and imported below.
*/
@import url('global.css');
html {
color-scheme: dark;
}
div.project pre {
border: 1px solid #666666
}
body {
color: #ddd;
background-color: #333;
}
h1 {
color: #fff;
}
h2 {
color: #fff;
}
h3 {
color: #fff;
}
div.preview pre, div.project pre {
background-color: #222;
color: #ccc;
}
a {
color: #99f;
text-decoration: none
}
.header {
color: #fff;
}
.header .pagetree {
color: #fff;
}
.header .pagetree .title {
color: #fff
}
/*table td {
border: 1px solid black
}*/
/*table.skami {
border-color: #eeeeee
}*/
table.skami .semiused {
color: #ccc;
background-color: #444;
border-color: #FFF;
}
table.skami .unused {
color: #bbb;
background-color: #555
}
table {
border-color: #fff
}

311
public/css/global.css Normal file
View file

@ -0,0 +1,311 @@
/*
This stylesheet contains all styles which are
the same across both themes.
*/
ul {
list-style-type: square;
}
table.banner {
margin-left: auto;
margin-right: auto;
border: 2px solid #E04A38;
background-color: #E6897E;
width: 95%;
/* Passes both WCAG AA and WCAG AAA contrast tests */
color: #0F0F0F;
}
td.banner {
padding: 5px;
}
a.bannerlink {
color: #0F0F0F;
}
a.bannerlink:hover {
text-decoration: underline;
}
div.page {
min-width: 700px;
max-width: 1024px;
/*margin-left: 0.5em;
margin-right: 0.5em;*/
padding-left: 0.5em;
padding-right: 0.5em;
margin: auto
}
h1.inline {
font-family: sans-serif;
font-weight: normal;
margin-top: 0em;
clear: none;
font-size: 100%;
display: inline
}
h1.inline:before {
content: ""
}
h1:before {
content: "> "
}
h2:before {
content: ">> "
}
h3:before {
content: ">>> "
}
.toplinks span:after {
content: " >"
}
h1, h2, h3 {
font-family: Monospace;
font-weight: normal;
margin-top: 1em;
clear: left
}
img {
border: none;
max-width: 100%;
}
img.right {
float: right;
margin-left: 0.5em
}
table.form, td.form {
border: none;
}
div.preview {
display: inline-block;
width: 30em;
max-width: 100%;
text-align: center;
vertical-align: top;
margin-bottom: 2em
}
div.project {
display: inline-block;
width: 40em;
max-width: 100%;
text-align: center;
vertical-align: top;
margin-bottom: 2em
}
div.preview .heading .name, div.project .heading .name {
font-size: 120%
}
div.preview img, div.project img {
width: auto;
max-width: 90%;
max-height: 15em
}
div.preview pre.small, div.project pre.small {
font-size: 75%;
overflow: hidden
}
pre {
display: inline;
max-width: 95%;
overflow: auto
}
.header a {
text-decoration: none
}
nav {
margin-bottom: 0.3em
}
div.ddate {
text-align: center
}
div.note {
font-style: italic
}
table {
border-collapse: collapse
}
table.noborder td {
border: none
}
table.skami a {
text-decoration: none
}
table.weather th {
font-weight: normal
}
table.weather td {
font-weight: bold;
text-align: right
}
.project .name {
font-weight: bold
}
.toplinks a {
margin-right: 0.5em;
text-decoration: none
}
div.inlinepage {
margin-top: 2em;
border: 0;
padding: 0
}
div.pheader {
font-size: 120%
}
div.pheader span.date {
margin-right: 1em;
font-weight: normal
}
div.pheader a {
font-weight: bold;
text-decoration: none
}
div.rss {
position: absolute;
top: 1em;
right: 1em
}
div.archived {
margin-top: 0.5em
}
div.archived span.date {
font-style: italic;
margin-right: 0.2em
}
video {
max-width: 100%
}
.toplinks span {
display: block;
text-align: right;
float: left;
width: 8em;
margin-right: 0.5em
}
.deprecated {
line-height: 140%;
width: 100%;
color: #aa0000;
text-align: center;
padding-bottom: 0.5em;
border-bottom: 2px dashed #aa0000
}
.project .attributes {
font-style: italic
}
.project .attribbracket {
margin-left: 0.5em
}
.toplinks {
line-height: 140%;
width: 100%;
padding-top: 0.5em;
padding-bottom: 0.5em;
border-bottom: 1px solid #cccccc
}
table td {
border: 1px solid white
}
td {
padding: 3px;
vertical-align: top;
}
table.skami {
border-color: #eeeeee !important
}
.header .pagetree {
font-size: 80%;
display: block;
text-align: center;
width: 100%;
padding-top: 0.1em;
padding-bottom: 0.1em;
border-top: 1px solid #cccccc
}
.header {
font-size: 100%;
font-weight: normal;
padding-bottom: 0em;
border-bottom: 1px solid #cccccc;
text-align: center
}
div.preview pre, div.project pre {
display: inline-block;
text-align: left;
padding: 0.2em;
max-width: 90%
}
h1 {
font-size: 150%
}
h2 {
font-size: 130%
}
h3 {
font-size: 115%
}
body {
font-family: sans-serif;
margin: 0px;
}
table.computers {
width: 100%;
}
td.computer {
width: 50%;
border: 0px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

View file

@ -0,0 +1,67 @@
<?php
$cfg = app('config')->get('services')['lastfm'];
$curl_current = curl_init();
curl_setopt_array($curl_current, [
CURLOPT_URL => "https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=".$cfg['user']."&nowplaying=true&format=json&api_key=".$cfg['key'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$current_response = curl_exec($curl_current);
$err = curl_error($curl_current);
curl_close($curl_current);
if ($err) {
die("cURL Error #:" . $err);
}
$current_response = json_decode($current_response, true);
$nowplaying = $current_response['recenttracks']['track'][0];
$tracks_to_show = 10;
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://ws.audioscrobbler.com/2.0/?method=user.gettoptracks&user=".$cfg['user']."&format=json&period=7day&api_key=".$cfg['key'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$toptracks = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
die("cURL Error #:" . $err);
}
$toptracks = json_decode($toptracks, true);
$tracks = $toptracks['toptracks']['track'];
$count = 0;
?>
<h1>Last.fm <small>(<a href="https://www.last.fm/user/{{ $cfg['user']}}">Profile</a>)</small></h1>
<b>Last/Current Track:</b> <a href="{{ $nowplaying['url'] }}">{{ $nowplaying['name'] }} {{ $nowplaying['artist']['#text'] }}</a>
<h2>Top {{ $tracks_to_show }} Tracks (Last 7 days)</h2>
<ol>
@foreach ($tracks as $track)
@if ($count >= $tracks_to_show)
</ol>
@break
@endif
<li>
<a href="{{ $track['url'] }}">{{ $track['name'] }} {{ $track['artist']['name'] }}</a>
<small>({{$track['playcount']}} plays)</small>
</li>
<?php $count++ ?>
@endforeach

View file

@ -0,0 +1,68 @@
<?php
$curl_current = curl_init();
curl_setopt_array($curl_current, [
CURLOPT_URL => "http://weather.diskfloppy.me/data/weatherData.json",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 300,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$current_response = curl_exec($curl_current);
$err = curl_error($curl_current);
curl_close($curl_current);
$curl_current = curl_init();
curl_setopt_array($curl_current, [
CURLOPT_URL => "http://weather.diskfloppy.me/data/got.txt",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 300,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$last_update = curl_exec($curl_current);
$err = curl_error($curl_current);
curl_close($curl_current);
if ($err) {
die("cURL Error: " . $err);
}
$current_response = json_decode($current_response, true);
$weather_data = $current_response['data']['conditions'][0];
$windDirDeg = $weather_data['wind_dir_last'];
$windDir = "";
// W I N D
if (349 <= $windDirDeg || $windDirDeg <= 11) { $windDir = "N"; }
else if (12 <= $windDirDeg && $windDirDeg <= 33) { $windDir = "NNE"; }
else if (34 <= $windDirDeg && $windDirDeg <= 56) { $windDir = "NE"; }
else if (57 <= $windDirDeg && $windDirDeg <= 78) { $windDir = "ENE"; }
else if (79 <= $windDirDeg && $windDirDeg <= 101) { $windDir = "E"; }
else if (102 <= $windDirDeg && $windDirDeg <= 123) { $windDir = "ESE"; }
else if (124 <= $windDirDeg && $windDirDeg <= 146) { $windDir = "SE"; }
else if (147 <= $windDirDeg && $windDirDeg <= 168) { $windDir = "SSE"; }
else if (169 <= $windDirDeg && $windDirDeg <= 191) { $windDir = "S"; }
else if (192 <= $windDirDeg && $windDirDeg <= 213) { $windDir = "SSW"; }
else if (214 <= $windDirDeg && $windDirDeg <= 236) { $windDir = "SW"; }
else if (237 <= $windDirDeg && $windDirDeg <= 258) { $windDir = "WSW"; }
else if (259 <= $windDirDeg && $windDirDeg <= 281) { $windDir = "W"; }
else if (282 <= $windDirDeg && $windDirDeg <= 303) { $windDir = "WNE"; }
else if (304 <= $windDirDeg && $windDirDeg <= 326) { $windDir = "NW"; }
else if (327 <= $windDirDeg && $windDirDeg <= 348) { $windDir = "WNW"; }
?>
<h1>Local Weather <small>(Last Update: {{ gmdate('H:i Y-m-d', intval(rtrim($last_update))) }})</small></h1>
<b>Wind Speed:</b> {{ $weather_data['wind_speed_last'] }} mph<br>
<b>Wind Direction:</b> {{ $weather_data['wind_dir_last']}}°, {{ $windDir }}<br>
<b>Temperature:</b> {{ round(($weather_data['temp']-32)*(5/9), 1) }}°C<br>
<b>Rain Rate:</b> {{ round($weather_data['rain_rate_last']*0.2, 2) }} mm/hr<br>
<b>Humidity:</b> {{ round($weather_data['hum']) }}%<br>

View file

@ -0,0 +1,8 @@
<hr>
<div style="text-align: center;">
<img src="{{ URL::asset ('images/buttons/browser.gif') }}" alt="Any Damn Browser">&nbsp;
<a href="https://www.linux.org/"><img src="{{ URL::asset ('images/buttons/linuxnow.gif') }}" alt="Linux NOW!"></a>&nbsp;
<a href="https://www.vim.org/"><img src="{{ URL::asset ('images/buttons/vim.gif') }}" alt="vim"></a>&nbsp;
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img style="border:0;width:88px;height:31px" src="{{ URL::asset ('images/buttons/vcss-blue.gif') }}" alt="Valid CSS!"></a>&nbsp;
<a href=""><img style="border:0;width:88px;height:31px" src="{{ URL::asset ('images/buttons/valid-html401-blue.png') }}" alt="Valid HTML 4.01!"></a><br/>
</div>

View file

@ -0,0 +1,13 @@
<!-- Global -->
<meta charset="utf-8">
<meta property="og:type" content="website">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="theme-color" content="#333333">
<link rel="stylesheet" href="{{ URL::asset ('css/dark.css') }}"/>
<!-- Page-specific -->
<title>~floppydisk / @yield('title')</title>
<meta property="og:title" content="~floppydisk / @yield('title')">
<meta property="og:description" content="@yield('description')">
<meta property="og:image" content="/favicon.png">
<style>td{padding:0px;}</style>

View file

@ -0,0 +1,11 @@
<nav>
<div>
<a href="//git.diskfloppy.me/">git</a> |
<a href="/projects/">projects</a> |
<a href="https://github.com/floppydisk05?tab=repositories">repos</a> |
<a href="/calculators/">calculators</a> |
<a href="/computers/">computers</a> |
<a href="/bookmarks/">bookmarks</a> |
<a href="/guestbook/">guestbook</a>
</div>
</nav>

View file

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html lang="en">
<!-- HTTPS -->
<head>
@include('includes.head')
</head>
<body>
<div class="page">
<div class="header">
@include('includes.header')
</div> <!-- header -->
<div id="pagebody">
<div id="content">
@yield('content')
</div> <!-- content -->
<div id="footer" class="pagefooter">
@include('includes.footer')
</div> <!-- footer -->
</div> <!-- pagebody -->
</div> <!-- page -->
</body>
</html>

View file

@ -0,0 +1,25 @@
@extends('layouts.default')
@section('title', 'test')
@section('description', 'This is the personal homepage of floppydisk.')
@section('content')
<p>Hi!</p>
<p>This is the personal homepage of floppydisk.</p>
<!-- Last.fm -->
@include('components.lastfm')
<!-- WeatherData -->
@include('components.weatherdata')
<h1>Contact</h1>
<p><strong>Mail</strong>: <a href="mailto:contact@diskfloppy.me">contact@diskfloppy.me</a><br/>
<strong>IRC</strong>: <a href="https://r-type.ca/page.php?id=1034">floppydisk @ r-type</a><br/>
</p>
<h1>Elsewhere</h1>
<p><strong>Mastodon:</strong> <a rel="me" href="https://mastodon.sdf.org/@floppydisk_">@floppydisk_@mastodon.sdf.org</a><br/>
<strong>Twitter:</strong> <a href="https://twitter.com/floppydisk__">@floppydisk__</a><br/>
<strong>GitHub:</strong> <a href="https://github.com/floppydisk05">floppydisk05</a><br/>
<strong>SDF:</strong> <a href="http://floppydisk.sdf.org/">~floppydisk</a>
</p>
@stop

File diff suppressed because one or more lines are too long

View file

@ -14,5 +14,5 @@
*/
Route::get('/', function () {
return view('welcome');
return View::make('pages.home');
});