Merge MVC rewrite into master (#21)
* Just commit it all * Require auth * crap * Update homepage * Block AI scrapers * Update cache update script * Add dummy file * Remove unnecessary lastfm config var * Use withQueryParameters for LastFM API * Fix embeds * Update example env * Smard
This commit is contained in:
parent
2fbf6cdc39
commit
c9299b5410
88 changed files with 1982 additions and 1661 deletions
28
resources/views/admin/bookmarks.blade.php
Normal file
28
resources/views/admin/bookmarks.blade.php
Normal file
|
@ -0,0 +1,28 @@
|
|||
<x-layout>
|
||||
<x-slot:title>Admin | Bookmarks</x-slot:title>
|
||||
@foreach($categories as $category)
|
||||
<div class="info-section info-admin-section">
|
||||
<h2>{{ $category->name }}</h2>
|
||||
<table class="info-admin">
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Name</th>
|
||||
<th>Description</th>
|
||||
<th>URL</th>
|
||||
<th>Priority</th>
|
||||
<th class="blank"></th>
|
||||
</tr>
|
||||
@foreach($category->sites as $site)
|
||||
<tr>
|
||||
<td>{{ $site->id }}</td>
|
||||
<td>{{ $site->name }}</td>
|
||||
<td>{{ $site->description }}</td>
|
||||
<td>{{ $site->url }}</td>
|
||||
<td>{{ $site->priority }}</td>
|
||||
<td><a href="?action=delete&id={{ $site->id }}"><button>Delete</button></a></td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
</div>
|
||||
@endforeach
|
||||
</x-layout>
|
32
resources/views/admin/guestbook.blade.php
Normal file
32
resources/views/admin/guestbook.blade.php
Normal file
|
@ -0,0 +1,32 @@
|
|||
<x-layout>
|
||||
<x-slot:title>Admin | Guestbook</x-slot:title>
|
||||
<div class="info-section">
|
||||
<h2>Statistics</h2>
|
||||
<hr>
|
||||
<strong>Unique IP addresses:</strong> {{ $guestbook_unique_addr }}<br>
|
||||
<strong>Entries:</strong> {{ $guestbook_entry_count }}
|
||||
</div>
|
||||
<br>
|
||||
<div class="info-section">
|
||||
<h2>Entries</h2>
|
||||
<hr>
|
||||
<table class="info-admin fullwidth">
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Name</th>
|
||||
<th>IP Address</th>
|
||||
<th>Message</th>
|
||||
<th class="blank"></th>
|
||||
</tr>
|
||||
@foreach ($entries as $entry)
|
||||
<tr>
|
||||
<td>{{ $entry->id }}</td>
|
||||
<td>{{ $entry->name }}</td>
|
||||
<td>{{ $entry->ip }}</td>
|
||||
<td>{{ $entry->message }}</td>
|
||||
<td><a href="?action=delete&id={{ $entry->id }}"><button>Delete</button></a></td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
</div>
|
||||
</x-layout>
|
12
resources/views/admin/import-success.blade.php
Normal file
12
resources/views/admin/import-success.blade.php
Normal file
|
@ -0,0 +1,12 @@
|
|||
<x-layout>
|
||||
<x-slot:title>Admin | Import</x-slot:title>
|
||||
<div class="info-section">
|
||||
<h2>Imported data</h2>
|
||||
<hr>
|
||||
<ul>
|
||||
@foreach($tables as $name => $data)
|
||||
<li><strong>{{ ucwords(str_replace('__', ' ', $name)) }}:</strong> {{ $data['count'] }} record(s)</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</x-layout>
|
18
resources/views/admin/import.blade.php
Normal file
18
resources/views/admin/import.blade.php
Normal file
|
@ -0,0 +1,18 @@
|
|||
<x-layout>
|
||||
<x-slot:title>Admin | Import</x-slot:title>
|
||||
<form class="import" action="{{ route('admin.import.submit') }}" method="post" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<label for="data_file"><strong>File:</strong></label>
|
||||
<input class="file" type="file" name="data_file" accept=".json"><br>
|
||||
<h2>What to import:</h2>
|
||||
<input type="checkbox" name="guestbook__entries" checked>
|
||||
<label for="guestbook__entries">Guestbook Entries</label><br>
|
||||
<input type="checkbox" name="guestbook__bans" checked>
|
||||
<label for="guestbook__bans">Guestbook Bans</label><br>
|
||||
<input type="checkbox" name="guestbook__entries" checked>
|
||||
<label for="bookmark__categories">Bookmark Categories</label><br>
|
||||
<input type="checkbox" name="guestbook__entries" checked>
|
||||
<label for="bookmark_sites">Bookmark Sites</label><br>
|
||||
<button type="submit">Import</button>
|
||||
</form>
|
||||
</x-layout>
|
18
resources/views/bookmarks.blade.php
Normal file
18
resources/views/bookmarks.blade.php
Normal file
|
@ -0,0 +1,18 @@
|
|||
<x-layout>
|
||||
<x-slot:title>Bookmarks</x-slot:title>
|
||||
@foreach($categories as $category)
|
||||
<table class="info-table" role="presentation">
|
||||
<caption>
|
||||
<h2>{{ $category->name }}</h2>
|
||||
<hr>
|
||||
</caption>
|
||||
<tbody>
|
||||
@foreach($category->sites as $site)
|
||||
<tr>
|
||||
<td><a href="{{ $site->url }}">{{ $site->name }}</a> - {{ $site->description }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
@endforeach
|
||||
</x-layout>
|
4
resources/views/components/current-track.blade.php
Normal file
4
resources/views/components/current-track.blade.php
Normal file
|
@ -0,0 +1,4 @@
|
|||
<div class="info-table current-track">
|
||||
<h2>Last/Current Track:</h2>
|
||||
<a href="{{ $track["url"] }}">{{ $track["title"] }} • {{ $track["artist"] }}</a><br>
|
||||
</div>
|
113
resources/views/components/layout.blade.php
Normal file
113
resources/views/components/layout.blade.php
Normal file
|
@ -0,0 +1,113 @@
|
|||
@php // Get colorscheme from cookie and apply immediately
|
||||
$colorscheme = request()->cookie('colorscheme', 'catppuccin-macchiato');
|
||||
@endphp
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- 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="{{ asset("/css/colorschemes/$colorscheme.css") }}" id="css-colorscheme"/>
|
||||
<link rel="stylesheet" href="{{ asset('/css/master.css') }}"/>
|
||||
<link rel="icon" type="image/png" href="{{ asset('/favicon-32x32.png') }}" sizes="32x32"/>
|
||||
<link rel="icon" type="image/png" href="{{ asset('/favicon-16x16.png') }}" sizes="16x16"/>
|
||||
<script src="{{ asset('/js/schemeSwap.js') }}"></script>
|
||||
{!! (intval(date('n')) == 12) ? '<script src="/js/christmas/snow.js"></script>' : '' !!}
|
||||
|
||||
<!-- Page-specific -->
|
||||
<title>{{ $title ?? 'Unknown' }} - diskfloppy.me</title>
|
||||
<meta property="og:title" content="diskfloppy.me | {{ $title }}">
|
||||
<meta property="og:image" content="/favicon-128x128.png">
|
||||
</head>
|
||||
<body onload="setSchemeSelector()">
|
||||
<div class="page">
|
||||
<div id="header" class="header">
|
||||
@if (auth()->check())
|
||||
<div class="banner red-banner">
|
||||
<div>
|
||||
<a href="/admin/guestbook">Guestbook</a> |
|
||||
<a href="/admin/bookmarks">Bookmarks</a> |
|
||||
<a href="/admin/import">Import</a>
|
||||
</div>
|
||||
<div><strong>Logged in as:</strong> {{ auth()->user()->name }} (<a href="/logout">logout</a>)</div>
|
||||
</div>
|
||||
@endif
|
||||
<x-navbar title="{{ $title }}"/>
|
||||
<hr>
|
||||
</div> <!-- header -->
|
||||
<div id="content" class="content" role="main">
|
||||
{{ $slot }}
|
||||
</div> <!-- content -->
|
||||
<div id="footer" class="footer">
|
||||
<hr>
|
||||
<div class="footer" role="contentinfo">
|
||||
<a href="https://dimden.dev/" class="button">
|
||||
<img src="https://dimden.dev/services/images/88x31.gif" width="88" height="31"
|
||||
class="pixel" alt="dimden.dev">
|
||||
</a>
|
||||
<a href="https://www.linux.org/" class="button">
|
||||
<img src="{{ URL::asset('images/buttons/linuxnow.gif') }}" width="88"
|
||||
class="pixel" height="31" alt="Linux NOW!">
|
||||
</a>
|
||||
<a href="https://www.vim.org/" class="button">
|
||||
<img src="{{ URL::asset('images/buttons/vim.gif') }}" width="88" height="31"
|
||||
class="pixel" alt="vim">
|
||||
</a>
|
||||
<a href="https://wave.webaim.org/" class="button">
|
||||
<img src="{{ URL::asset('images/buttons/evaluatedWAVE.png') }}" width="88" height="31"
|
||||
class="pixel" alt="Evaluated to be accessible!">
|
||||
</a>
|
||||
<a href="https://jigsaw.w3.org/css-validator/check/referer" class="button">
|
||||
<img src="{{ URL::asset('images/buttons/vcss-blue.gif') }}" width="88" height="31"
|
||||
class="pixel" alt="Valid CSS!">
|
||||
</a>
|
||||
<a href="https://wiby.me/" class="button">
|
||||
<img src="{{ URL::asset('images/buttons/wiby.gif') }}" width="88" height="31"
|
||||
class="pixel" alt="Wiby - Search Engine for the Classic Web">
|
||||
</a><br>
|
||||
This site is best viewed at 1024x768 with 16-bit color or better<br>
|
||||
© floppydisk 2021-{{ date('Y') }}, v{{ config('app.version') }} <a
|
||||
href="https://github.com/floppydisk05/diskfloppy.me">Source</a>,
|
||||
Served by {{ gethostname() }}<br>
|
||||
<label for="scheme-selector">Color Scheme:</label>
|
||||
<select onchange="swapScheme(this.value)" id="scheme-selector">
|
||||
<optgroup label="Misc">
|
||||
<option value="c64">C64</option>
|
||||
</optgroup>
|
||||
<optgroup label="Light">
|
||||
<option value="catppuccin-latte">Catppuccin Latte</option>
|
||||
<option value="gruvbox">Gruvbox</option>
|
||||
<option value="man-page">Man Page</option>
|
||||
<option value="papercolor-light">Papercolor Light</option>
|
||||
<option value="rose-pine-dawn">Rosé Pine Dawn</option>
|
||||
<option value="solarized-light">Solarized Light</option>
|
||||
<option value="terminal-basic">Terminal Basic</option>
|
||||
</optgroup>
|
||||
<optgroup label="Dark">
|
||||
<option value="catppuccin-frappe">Catppuccin Frappé</option>
|
||||
<option value="catppuccin-macchiato" selected="selected">Catppuccin Macchiato</option>
|
||||
<option value="catppuccin-mocha">Catppuccin Mocha</option>
|
||||
<option value="gruvbox-dark">Gruvbox Dark</option>
|
||||
<option value="gruvbox-material">Gruvbox Material</option>
|
||||
<option value="maia">Maia</option>
|
||||
<option value="mono-amber">Mono Amber</option>
|
||||
<option value="mono-cyan">Mono Cyan</option>
|
||||
<option value="mono-green">Mono Green</option>
|
||||
<option value="mono-red">Mono Red</option>
|
||||
<option value="mono-white">Mono White</option>
|
||||
<option value="mono-yellow">Mono Yellow</option>
|
||||
<option value="papercolor-dark">Papercolor Dark</option>
|
||||
<option value="rose-pine">Rosé Pine</option>
|
||||
<option value="rose-pine-moon">Rose Pine Moon</option>
|
||||
<option value="shel">Shel</option>
|
||||
<option value="slate">Slate</option>
|
||||
<option value="solarized-dark">Solarized Dark</option>
|
||||
</optgroup>
|
||||
</select><br>
|
||||
</div>
|
||||
</div> <!-- footer -->
|
||||
</div> <!-- page -->
|
||||
</body>
|
||||
</html>
|
28
resources/views/components/minimal-error.blade.php
Normal file
28
resources/views/components/minimal-error.blade.php
Normal file
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>{{ $title ?? '' }}</title>
|
||||
<link rel="stylesheet" href="{{ URL::asset ('css/minimal.css') }}"/>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Error {{ $code }} | <strong>{{ $message }}</strong></h1>
|
||||
<hr align="left">
|
||||
<p>Here, have a cat...</p>
|
||||
<img src="https://http.cat/{{ $code }}" width="500"><br><br>
|
||||
<p>If you believe this is a server error, contact the <a href="mailto:webmaster@diskfloppy.me">webmaster</a></p>
|
||||
<br>
|
||||
<h4>Diagnostic Info</h4>
|
||||
<table><tr><td>
|
||||
<code>
|
||||
Server: {{ gethostname() }}<br>
|
||||
Your IP: {{ Request::ip() }}<br>
|
||||
Root: {!! url('') !!}<br>
|
||||
Path: @if(Request::path() == "/")/@else/{{ Request::path() }}/@endif<br>
|
||||
Epoch: {{ now()->timestamp }}<br>
|
||||
Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:122.0) Gecko/20100101 Firefox/122.0 </code>
|
||||
</td></tr></table>
|
||||
<hr align="left">
|
||||
<p>© floppydisk 2021-2024</p>
|
||||
</body>
|
||||
</html>
|
0
resources/views/components/minimal.blade.php
Normal file
0
resources/views/components/minimal.blade.php
Normal file
18
resources/views/components/navbar.blade.php
Normal file
18
resources/views/components/navbar.blade.php
Normal file
|
@ -0,0 +1,18 @@
|
|||
<nav>
|
||||
<h1>diskfloppy.me | <strong>{{ $title }}</strong></h1>
|
||||
<div class="nav-wrapper">
|
||||
<div>
|
||||
<a href="/" title="Home"><img class="pixel" src="/images/icons/nav/home2.png" alt="Home" width="32" height="32"></a>
|
||||
<a href="//git.diskfloppy.me/" title="cgit"><img class="pixel" src="/images/icons/nav/repo.png" alt="cgit" width="32" height="32"></a>
|
||||
<a href="/pub/" title="Public Files"><img class="pixel" src="/images/icons/nav/pubfiles.png" alt="Public Files" width="32" height="32"></a>
|
||||
<a href="/computers/" title="Computers"><img class="pixel" src="/images/icons/nav/computers.png" alt="Computers" width="32" height="32"></a>
|
||||
<a href="/bookmarks/" title="Bookmarks"><img class="pixel" src="/images/icons/nav/bookmarks.png" alt="Bookmarks" width="32" height="32"></a>
|
||||
<a href="/guestbook/" title="Guestbook"><img class="pixel" src="/images/icons/nav/guestbook.png" alt="Guestbook" width="32" height="32"></a>
|
||||
<a href="//weather.diskfloppy.me/" title="Weather"><img class="pixel" src="/images/icons/nav/weather.png" alt="Weather" width="32" height="32"></a>
|
||||
<a href="/music/" title="Music"><img class="pixel" src="/images/icons/nav/music.png" alt="Music" width="32" height="32"></a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="/login/" title="Admin Login"><img class="pixel" src="/images/icons/nav/admin.png" alt="Admin Login" width="32" height="32"></a>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
16
resources/views/components/top-tracks.blade.php
Normal file
16
resources/views/components/top-tracks.blade.php
Normal file
|
@ -0,0 +1,16 @@
|
|||
<table class="music-top10">
|
||||
<caption>
|
||||
<h2 style="margin-bottom: 5px">Top 10 Tracks (Last 30 days):</h2>
|
||||
</caption>
|
||||
<tr>
|
||||
<th><b>#</b></th>
|
||||
<th><b>Track</b></th>
|
||||
<th><b>Artist</b></th>
|
||||
<th><b>Plays</b></th>
|
||||
</tr>
|
||||
@php($count = 0)
|
||||
@foreach ($tracks as $track)
|
||||
@php($count++)
|
||||
<x-track :track="$track" :count="$count"/>
|
||||
@endforeach
|
||||
</table>
|
6
resources/views/components/track.blade.php
Normal file
6
resources/views/components/track.blade.php
Normal file
|
@ -0,0 +1,6 @@
|
|||
<tr>
|
||||
<td>{{ $count }}</td>
|
||||
<td><a href="{{ $track["url"] }}">{{ $track["title"] }}</a></td>
|
||||
<td>{{ $track["artist"] }}</td>
|
||||
<td>{{ $track["plays"] }}</td>
|
||||
</tr>
|
187
resources/views/computers.blade.php
Normal file
187
resources/views/computers.blade.php
Normal file
|
@ -0,0 +1,187 @@
|
|||
@extends('layouts.default')
|
||||
@section('title', 'Computers')
|
||||
@section('description', 'Computers I own or have owned.')
|
||||
@php
|
||||
// TODO: AMD whitebox, 745, D531, 1525, server, vaio, qosmio, packard bell
|
||||
@endphp
|
||||
@section('content')
|
||||
<table class="computers">
|
||||
<tr>
|
||||
<th>PICTURES</th>
|
||||
<th>SPECS & DESCRIPTION</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Random Whitebox</td>
|
||||
<td>
|
||||
<span class="section-title">Quick Specs</span>
|
||||
<ul>
|
||||
<li>486DX2 (50MHz)</li>
|
||||
<li>16MB RAM</li>
|
||||
<li>280MB HDD</li>
|
||||
<li>Windows NT 3.51</li>
|
||||
</ul>
|
||||
<p class="description">
|
||||
Had been monitoring the ventilation system in a school since the late 1990s,
|
||||
only stopped because the power supply internally exploded. Replaced the PSU with
|
||||
a standard ATX PSU and an ATX to AT adaptor and it sprung back to life.
|
||||
Motherboard is a Gigabyte GA486IM with 4 PCI slots, 4 ISA slots and 2 VLB slots.
|
||||
Has two identical ISA serial/parallel/game-port cards with one acting as the
|
||||
HDD/FDD controller. Also has a Realtek NIC with both RJ45 and BNC. GPU is a
|
||||
Cirrus Logic card and is astoundingly shit.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2023 MacBook Pro 14"</td>
|
||||
<td>
|
||||
<span class="section-title">Quick Specs</span>
|
||||
<ul>
|
||||
<li>Apple M3 Pro</li>
|
||||
<li>18GB RAM</li>
|
||||
<li>500GB SSD</li>
|
||||
<li>macOS Sonoma</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2018 MacBook Pro 13"</td>
|
||||
<td>
|
||||
<span class="section-title">Quick Specs</span>
|
||||
<ul>
|
||||
<li>Intel i5-8259U @ 2.3GHz</li>
|
||||
<li>Intel Iris Plus Graphics 655</li>
|
||||
<li>8GB RAM</li>
|
||||
<li>250GB SSD</li>
|
||||
<li>macOS Sonoma</li>
|
||||
</ul>
|
||||
<p class="description">
|
||||
Old main computer. Really like the touch bar, absolutely hate the butterfly
|
||||
keyboard.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2012 Lenovo ThinkPad T430</td>
|
||||
<td>
|
||||
<span class="section-title">Quick Specs</span>
|
||||
<ul>
|
||||
<li>Intel Core i7</li>
|
||||
<li>16GB RAM</li>
|
||||
<li>Windows 7 Professional / NixOS</li>
|
||||
</ul>
|
||||
<p class="description">
|
||||
One of my main computers. Has been modified to use a classic keyboard instead of
|
||||
the stock Lenovo keyboard.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2005 IBM ThinkPad X41T</td>
|
||||
<td>
|
||||
<span class="section-title">Quick Specs</span>
|
||||
<ul>
|
||||
<li>Intel Pentium M @ 1.6GHz</li>
|
||||
<li>Mobile Intel Express Chipset Family (128MB)</li>
|
||||
<li>1.5GB RAM</li>
|
||||
<li>40GB HDD</li>
|
||||
<li>Windows XP Tablet PC Edition</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1999 Dell OptiPlex GX1</td>
|
||||
<td>
|
||||
<span class="section-title">Quick Specs</span>
|
||||
<ul>
|
||||
<li>Intel Pentium II (Deschutes) @ 400MHz</li>
|
||||
<li>ATI 3D Rage Pro (4MB)</li>
|
||||
<li>639MB</li>
|
||||
<li>40GB HDD</li>
|
||||
<li>MS-DOS 6.22 & WFW 3.10</li>
|
||||
</ul>
|
||||
<p class="description">
|
||||
Cool computer that uses Slot 1 CPUs. After a lot of trial and error I managed to
|
||||
max out the memory. Has a riser that sports 2 PCI and 2 ISA slots (one PCI and
|
||||
ISA share the same slot).
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2003 IBM ThinkPad T40</td>
|
||||
<td>
|
||||
<span class="section-title">Quick Specs</span>
|
||||
<ul>
|
||||
<li>Intel Pentium M @ 1.3GHz</li>
|
||||
<li>ATI Mobility Radeon 7500 (32MB)</li>
|
||||
<li>1GB RAM</li>
|
||||
<li>30GB HDD</li>
|
||||
<li>Windows 2000 Professional</li>
|
||||
</ul>
|
||||
<p class="description">
|
||||
Useful laptop thanks to its parallel port. Has the ubiquitous GPU solder issues
|
||||
which I """"fixed"""" by jamming a CF card
|
||||
between the GPU chip and the keyboard.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2010 HP Compaq Elite 8100</td>
|
||||
<td>
|
||||
<span class="section-title">Quick Specs</span>
|
||||
<ul>
|
||||
<li>Intel Core i7</li>
|
||||
<li>16GB RAM</li>
|
||||
<li>some SSD and an HDD</li>
|
||||
<li>Windows Vista Ultimate (64-bit)</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2014 Mac mini</td>
|
||||
<td>
|
||||
<span class="section-title">Quick Specs</span>
|
||||
<ul>
|
||||
<li>Intel Core i5-4278U @ 2.6GHz</li>
|
||||
<li>Intel Iris Graphics</li>
|
||||
<li>8GB RAM</li>
|
||||
<li>1TB HDD</li>
|
||||
<li>VMware ESXi 6.7.0u3</li>
|
||||
</ul>
|
||||
<p class="description">
|
||||
Was used as my VM host for a few years. Has now been superseded by an
|
||||
actual 1U rack-mount server.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1996 Fujitsu Milan</td>
|
||||
<td>
|
||||
<span class="section-title">Quick Specs</span>
|
||||
<ul>
|
||||
<li>Intel Pentium</li>
|
||||
<li>32MB RAM</li>
|
||||
<li>1215MB HDD</li>
|
||||
<li>Windows 98 SE</li>
|
||||
</ul>
|
||||
<p class="description">
|
||||
Was originally a family members' laptop. Unfortunately the HDD side of the
|
||||
HDD/FDD cable ripped while I was removing the drive to clean the computer.
|
||||
Still scouring eBay for a replacement cable (or more likely, an entire
|
||||
parts machine).
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1999 Compaq Armada M300</td>
|
||||
<td>
|
||||
<span class="section-title">Quick Specs</span>
|
||||
<ul>
|
||||
<li>Intel Pentium III</li>
|
||||
</ul>
|
||||
<p class="description">
|
||||
Nice little laptop. Mysteriously dead.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@stop
|
|
@ -1,5 +1,4 @@
|
|||
@extends('errors::minimal')
|
||||
|
||||
@section('title', __('Unauthorized'))
|
||||
@section('code', '401')
|
||||
@section('message', __('Unauthorized'))
|
||||
<x-minimal-error>
|
||||
<x-slot:code>401</x-slot:code>
|
||||
<x-slot:message>Unauthorized</x-slot:message>
|
||||
</x-minimal-error>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
@extends('errors::minimal')
|
||||
|
||||
@section('title', __('Payment Required'))
|
||||
@section('code', '402')
|
||||
@section('message', __('Payment Required'))
|
||||
<x-minimal-error>
|
||||
<x-slot:code>402</x-slot:code>
|
||||
<x-slot:message>Payment Required</x-slot:message>
|
||||
</x-minimal-error>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
@extends('errors::minimal')
|
||||
|
||||
@section('title', __('Forbidden'))
|
||||
@section('code', '403')
|
||||
@section('message', __($exception->getMessage() ?: 'Forbidden'))
|
||||
<x-minimal-error>
|
||||
<x-slot:code>403</x-slot:code>
|
||||
<x-slot:message>{{__($exception->getMessage() ?: 'Forbidden')}}</x-slot:message>
|
||||
</x-minimal-error>
|
||||
|
|
|
@ -1,27 +1,4 @@
|
|||
@extends('errors::minimal')
|
||||
@section('content')
|
||||
|
||||
<h1>Error 404 | <strong>Page not found!</strong></h1>
|
||||
<hr align="left">
|
||||
<h2>The page <code class="addr">/{{ Request::path() }}/</code> doesn't exist! Did you mean...</h2>
|
||||
<ul>
|
||||
<li><a href="//www.diskfloppy.me/">diskfloppy.me</a></li>
|
||||
<li><a href="//git.diskfloppy.me/">git.diskfloppy.me</a></li>
|
||||
<li><a href="//weather.diskfloppy.me">weather.diskfloppy.me</a></li>
|
||||
<li><a href="//dl.diskfloppy.me/">dl.diskfloppy.me</a></li>
|
||||
<li><a href="https://status.diskfloppy.me">status.diskfloppy.me</a> (HTTPS Only)</li>
|
||||
<li><a href="gopher://diskfloppy.me">gopher://diskfloppy.me</a></li>
|
||||
</ul>
|
||||
<p>Still haven't found what you were looking for or believe this is a server error? Contact the <a href="mailto:webmaster@diskfloppy.me">webmaster</a>!</p>
|
||||
<br>
|
||||
<h4>Diagnostic Info</h4>
|
||||
<table><tr><td>
|
||||
<code>
|
||||
Server: {{ gethostname() }}<br>
|
||||
Your IP: {{ Request::ip() }}<br>
|
||||
Epoch: {{ now()->timestamp }}<br>
|
||||
Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:122.0) Gecko/20100101 Firefox/122.0 </code>
|
||||
</td></tr></table>
|
||||
<hr align="left">
|
||||
<p>© floppydisk 2021-2024</p>
|
||||
@endsection
|
||||
<x-minimal-error>
|
||||
<x-slot:code>404</x-slot:code>
|
||||
<x-slot:message>Page not found!</x-slot:message>
|
||||
</x-minimal-error>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
@extends('errors::minimal')
|
||||
|
||||
@section('title', __('I\'m a teapot'))
|
||||
@section('code', '418')
|
||||
@section('message', __('I\'m a teapot'))
|
||||
<x-minimal-error>
|
||||
<x-slot:code>418</x-slot:code>
|
||||
<x-slot:message>I'm a teapot</x-slot:message>
|
||||
</x-minimal-error>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
@extends('errors::minimal')
|
||||
|
||||
@section('title', __('Page Expired'))
|
||||
@section('code', '419')
|
||||
@section('message', __('Page Expired'))
|
||||
<x-minimal-error>
|
||||
<x-slot:code>419</x-slot:code>
|
||||
<x-slot:message>Page Expired</x-slot:message>
|
||||
</x-minimal-error>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
@extends('errors::minimal')
|
||||
|
||||
@section('title', __('Too Many Requests'))
|
||||
@section('code', '429')
|
||||
@section('message', __('Too Many Requests'))
|
||||
<x-minimal-error>
|
||||
<x-slot:code>429</x-slot:code>
|
||||
<x-slot:message>Too Many Requests</x-slot:message>
|
||||
</x-minimal-error>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
@extends('errors::minimal')
|
||||
|
||||
@section('title', __('Server Error'))
|
||||
@section('code', '500')
|
||||
@section('message', __('Server Error'))
|
||||
<x-minimal-error>
|
||||
<x-slot:code>500</x-slot:code>
|
||||
<x-slot:message>Server Error</x-slot:message>
|
||||
</x-minimal-error>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
@extends('errors::minimal')
|
||||
|
||||
@section('title', __('Service Unavailable'))
|
||||
@section('code', '503')
|
||||
@section('message', __('Service Unavailable'))
|
||||
<x-minimal-error>
|
||||
<x-slot:code>503</x-slot:code>
|
||||
<x-slot:message>Service Unavailable</x-slot:message>
|
||||
</x-minimal-error>
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
@extends('layouts.minimal')
|
||||
@section('title', 'Error 401: Unauthorized User!')
|
||||
@section('content')
|
||||
<x-minimal>
|
||||
<x-slot:title>Error 401: Unauthorized User!</x-slot:title>
|
||||
<h1>{{ $error }}</h1>
|
||||
<hr>
|
||||
@if(isset($description))
|
||||
<p>{{ $description }}</p>
|
||||
@endif
|
||||
@stop
|
||||
</x-minimal>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
@extends('layouts.minimal')
|
||||
@section('title', 'Error 403: IP Blocked!')
|
||||
@section('content')
|
||||
<x-minimal>
|
||||
<x-slot:title>Error 403: IP Blocked!</x-slot:title>
|
||||
<h1>Error 403: IP Blocked!</h1>
|
||||
<hr>
|
||||
<p>Your IP has been banned from submitting to the guestbook.</p>
|
||||
|
@ -9,4 +8,4 @@
|
|||
@endif
|
||||
<br>
|
||||
Click <a href="/guestbook">here</a> to go back to the guestbook.
|
||||
@stop
|
||||
</x-minimal>
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
@extends('layouts.minimal')
|
||||
@section('title', 'Error 429: Overclocking Detected!')
|
||||
@section('content')
|
||||
<x-minimal>
|
||||
<x-slot:title>Error 429: Overclocking Detected!</x-slot:title>
|
||||
<h1>Error 429: Overclocking Detected!</h1>
|
||||
<hr>
|
||||
<p>Whoa there! Your submissions are going at warp speed.</p>
|
||||
<p>Remember you can only submit an entry <u>once every hour</u>!</p>
|
||||
<br>
|
||||
Click <a href="/guestbook">here</a> to go back to the guestbook.
|
||||
@stop
|
||||
</x-minimal>
|
||||
|
|
|
@ -1,53 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>@yield('title')</title>
|
||||
|
||||
<!-- Styles -->
|
||||
<style>
|
||||
html, body {
|
||||
background-color: #fff;
|
||||
color: #636b6f;
|
||||
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
font-weight: 100;
|
||||
height: 100vh;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.full-height {
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.flex-center {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.position-ref {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.content {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 36px;
|
||||
padding: 20px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flex-center position-ref full-height">
|
||||
<div class="content">
|
||||
<div class="title">
|
||||
@yield('message')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,21 +1,3 @@
|
|||
@extends('layouts.minimal')
|
||||
@section('content')
|
||||
<h1>Error @yield('code') | <strong>@yield('message')</strong></h1>
|
||||
<hr align="left">
|
||||
<p>Here, have a cat...</p>
|
||||
<img src="https://http.cat/@yield('code')" width="500"><br><br>
|
||||
<p>If you believe this is a server error, contact the <a href="mailto:webmaster@diskfloppy.me">webmaster</a></p>
|
||||
<br>
|
||||
<h4>Diagnostic Info</h4>
|
||||
<table><tr><td>
|
||||
<code>
|
||||
Server: {{ gethostname() }}<br>
|
||||
Your IP: {{ Request::ip() }}<br>
|
||||
Root: {!! url('') !!}<br>
|
||||
Path: /{{ Request::path() }}/<br>
|
||||
Epoch: {{ now()->timestamp }}<br>
|
||||
Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:122.0) Gecko/20100101 Firefox/122.0 </code>
|
||||
</td></tr></table>
|
||||
<hr align="left">
|
||||
<p>© floppydisk 2021-2024</p>
|
||||
@endsection
|
||||
<x-minimal>
|
||||
|
||||
</x-minimal>
|
||||
|
|
|
@ -1,27 +1,12 @@
|
|||
@extends('layouts.default')
|
||||
@section('title', 'Guestbook')
|
||||
@section('content')
|
||||
@php
|
||||
use UAParser\Parser;
|
||||
$parser = Parser::create();
|
||||
$db_alive = true;
|
||||
try {
|
||||
DB::connection()->getPdo();
|
||||
} catch (Exception $e) {
|
||||
$db_alive = false;
|
||||
}
|
||||
@endphp
|
||||
@if (!$db_alive)
|
||||
@include('components.errors.db-error')
|
||||
@else
|
||||
<br>
|
||||
<x-layout>
|
||||
<x-slot:title>Guestbook</x-slot:title>
|
||||
<table class="gb-entry-form-container" role="presentation">
|
||||
<tr>
|
||||
<td>
|
||||
<form method="POST" action="/guestbook">
|
||||
@csrf
|
||||
<x-honeypot/>
|
||||
<table class="gb-entry-form" role="presentation">
|
||||
<table class="form" role="presentation">
|
||||
<tr>
|
||||
<td>
|
||||
<label for="name"><strong>Name:</strong></label>
|
||||
|
@ -66,13 +51,6 @@
|
|||
|
||||
|
||||
<hr>
|
||||
@php
|
||||
$entries = DB::select('
|
||||
SELECT name, timestamp, message, agent
|
||||
FROM guestbook__entries
|
||||
ORDER BY id DESC
|
||||
');
|
||||
@endphp
|
||||
<h2>Entries <small>({{ count($entries) }} total)</small></h2>
|
||||
@foreach ($entries as $entry)
|
||||
@php
|
||||
|
@ -82,10 +60,10 @@
|
|||
<tr>
|
||||
<td>
|
||||
Submitted by <strong>{{ $entry->name }}</strong>
|
||||
on <strong>{{ gmdate('Y-m-d', $entry->timestamp) }}</strong>
|
||||
at <strong>{{ gmdate('h:i:s A (e)', $entry->timestamp) }}</strong>
|
||||
on <strong>{{ $entry->created_at->format('Y-m-d') }}</strong>
|
||||
at <strong>{{ $entry->created_at->format('h:i:s A (e)') }}</strong>
|
||||
<hr>
|
||||
{{ $entry->message }}
|
||||
<span class="guestbook-message">{{ $entry->message }}</span>
|
||||
<hr>
|
||||
@if($entry->agent === "Agent Unavailable")
|
||||
<address>Agent unavailable</address>
|
||||
|
@ -98,5 +76,4 @@
|
|||
</table>
|
||||
<br>
|
||||
@endforeach
|
||||
@endif
|
||||
@stop
|
||||
</x-layout>
|
45
resources/views/home.blade.php
Normal file
45
resources/views/home.blade.php
Normal file
|
@ -0,0 +1,45 @@
|
|||
<x-layout>
|
||||
<x-slot:title>Home</x-slot:title>
|
||||
<p>Hi! This is my personal homepage on the <strong>W</strong>orld <strong>W</strong>ide <strong>W</strong>eb.</p>
|
||||
|
||||
<div class="info-section">
|
||||
<h2>QuickFacts™</h2>
|
||||
<hr>
|
||||
<ul>
|
||||
<li>18 y/o, he/him, British</li>
|
||||
<li>Theatre Technician, "Web Developer" and NixOS User</li>
|
||||
<li>Loves ETC desks, prefers Generics to LEDs for some reason</li>
|
||||
<li>Has a crippling Soundcraft addiction</li>
|
||||
<li>Spends way too much time on his computer</li>
|
||||
<li>Favorite games: <a href="https://steamcommunity.com/id/floppydisk05/recommended/420530/">OneShot</a>, Minecraft, Stardew Valley, N++ and Starbound</li>
|
||||
<li><a href="http://wxqa.com/">CWOP</a> member</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="info-section">
|
||||
<h2>Interests</h2>
|
||||
<hr>
|
||||
<ul>
|
||||
<li><strong>Tech Theatre</strong> - Lighting, Stage Management, etc. (<a href="https://www.controlbooth.com/members/floppydisk.28673/">ControlBooth</a>)</li>
|
||||
<li><strong>Programming</strong> - HTML, CSS, JavaScript, C#, Java, PHP, Ruby, Python (<a href="https://github.com/floppydisk05">GitHub</a>)</li>
|
||||
<li><strong>Photography</strong> - <a href="https://www.flickr.com/photos/floppydisk/">Flickr</a></li>
|
||||
<li><strong>Gaming</strong> - <a href="https://steamcommunity.com/id/floppydisk05/">Steam Profile</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="info-section">
|
||||
<h2>Things they never said</h2>
|
||||
<hr>
|
||||
<p>
|
||||
<script type="text/javascript" src="{{ asset("/js/neverSaid.js") }}"></script>
|
||||
<noscript>Oops! You need JavaScript enabled to view this content.</noscript>
|
||||
</p>
|
||||
</div>
|
||||
<div class="info-section">
|
||||
<h2>Contact & social</h2>
|
||||
<hr>
|
||||
<p>
|
||||
<strong>E-mail:</strong> <a href="mailto:contact@diskfloppy.me">contact@diskfloppy.me</a><br>
|
||||
<strong>Mastodon:</strong> <a rel="me" href="https://c.im/@floppydisk">@floppydisk@c.im</a><br>
|
||||
<strong>Matrix:</strong> <a href="https://matrix.to/#/@floppydisk:arcticfoxes.net">@floppydisk:arcticfoxes.net</a>
|
||||
</p>
|
||||
</div>
|
||||
</x-layout>
|
|
@ -1,12 +0,0 @@
|
|||
<nav>
|
||||
<div>
|
||||
<a href="/">public home</a> |
|
||||
<a href="/admin">admin home</a> |
|
||||
<a href="/admin/guestbook">guestbook</a>
|
||||
@if (auth()->check())
|
||||
| ({{ auth()->user()->name }}) <a href="/logout">logout</a>
|
||||
@else
|
||||
| <a href="/login">login</a>
|
||||
@endif
|
||||
</div>
|
||||
</nav>
|
|
@ -25,7 +25,7 @@ class="pixel" alt="Valid CSS!">
|
|||
class="pixel" alt="Wiby - Search Engine for the Classic Web">
|
||||
</a><br>
|
||||
This site is best viewed at 1024x768 with 16-bit color or better<br>
|
||||
© floppydisk 2021-{{ date('Y') }}, v{{ config('app.version') }}, <a
|
||||
© floppydisk 2021-{{ date('Y') }}, v{{ config('app.version') }}@if(env('DEVEL'))-dev, @else, @endif<a
|
||||
href="https://github.com/floppydisk05/diskfloppy.me">Source</a>,
|
||||
Served by {{ gethostname() }}<br>
|
||||
<label for="scheme-selector">Color Scheme:</label>
|
||||
|
|
6
resources/views/music.blade.php
Normal file
6
resources/views/music.blade.php
Normal file
|
@ -0,0 +1,6 @@
|
|||
<x-layout>
|
||||
<x-slot:title>Music</x-slot:title>
|
||||
<x-current-track :track="$current_track"/>
|
||||
<hr>
|
||||
<x-top-tracks :tracks="$top_tracks"/>
|
||||
</x-layout>
|
|
@ -1,33 +0,0 @@
|
|||
@extends('layouts.minimal')
|
||||
@section('title', 'Delete confirm')
|
||||
@section('content')
|
||||
<h1>Delete Confirmation</h1>
|
||||
<hr>
|
||||
<p>Are you sure you want to delete this entry?</p>
|
||||
|
||||
<h3>Entry Details:</h3>
|
||||
<table class="gb-entry-details">
|
||||
<tr>
|
||||
<td><b>ID:</b></td>
|
||||
<td>{{ $entry->id }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Name:</b></td>
|
||||
<td>{{ $entry->name }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Date:</b></td>
|
||||
<td>{{ gmdate("H:i:s - Y-m-d", $entry->timestamp) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Message:</b></td>
|
||||
<td>{{ $entry->message }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<form action="/admin/guestbook/delete" method="POST">
|
||||
@csrf
|
||||
<input type="hidden" name="id" value="{{ $entry->id }}">
|
||||
<button type="submit">Confirm Delete</button>
|
||||
</form>
|
||||
@stop
|
|
@ -1,32 +0,0 @@
|
|||
@extends('layouts.default-admin')
|
||||
@section('title', 'Guestbook')
|
||||
@section('content')
|
||||
@php
|
||||
$entries = DB::select('
|
||||
SELECT id, name, timestamp, message, ip_address
|
||||
FROM guestbook__entries
|
||||
ORDER BY id DESC
|
||||
');
|
||||
@endphp
|
||||
<h1>Entries <small>({{ count($entries) }} total)</small></h1>
|
||||
@foreach ($entries as $entry)
|
||||
<table class="gb-admin">
|
||||
<tr>
|
||||
<td>
|
||||
Name: {{ $entry->name }}<br>
|
||||
IP: {{ $entry->ip_address }}<br>
|
||||
Date: {{ gmdate("H:i:s - Y-m-d", $entry->timestamp) }}
|
||||
</td>
|
||||
<td class="gb-del">
|
||||
<a href="/admin/guestbook/delete?id={{ $entry->id }}">del</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="gb-message">
|
||||
<br>
|
||||
{{ htmlspecialchars($entry->message) }}
|
||||
</td>
|
||||
</tr></table>
|
||||
@endforeach
|
||||
@stop
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
@extends('layouts.default-admin')
|
||||
@section('title', 'Page Title')
|
||||
@section('description', 'Page description goes here')
|
||||
@php
|
||||
$user = auth()->user();
|
||||
@endphp
|
||||
@section('content')
|
||||
<p>You are logged in as {{ $user->name }} ({{ $user->email }})</p>
|
||||
@stop
|
|
@ -1,52 +0,0 @@
|
|||
@extends('layouts.default')
|
||||
@section('title', 'Bookmarks')
|
||||
@section('description', 'This is the personal homepage of floppydisk.')
|
||||
@section('content')
|
||||
@php
|
||||
$db_alive = true;
|
||||
try {
|
||||
DB::connection()->getPdo();
|
||||
} catch (Exception $e) {
|
||||
$db_alive = false;
|
||||
}
|
||||
@endphp
|
||||
@if (!$db_alive)
|
||||
@include('components.errors.db-error')
|
||||
@else
|
||||
@php
|
||||
$categories = DB::select('
|
||||
SELECT id, name
|
||||
FROM bookmark__categories
|
||||
ORDER BY priority ASC
|
||||
');
|
||||
@endphp
|
||||
|
||||
@foreach ($categories as $category)
|
||||
<table class="info-table" role="presentation">
|
||||
|
||||
<caption>
|
||||
<h2>{{ $category->name }}</h2>
|
||||
<hr>
|
||||
</caption>
|
||||
|
||||
@php
|
||||
$sites = DB::select(
|
||||
'
|
||||
SELECT name, url, description
|
||||
FROM bookmark__sites
|
||||
WHERE category_id = ? ORDER BY priority ASC
|
||||
',
|
||||
[$category->id],
|
||||
);
|
||||
@endphp
|
||||
@foreach ($sites as $site)
|
||||
<tr>
|
||||
<td><a href="{{ $site->url }}">{{ $site->name }}</a>
|
||||
- {{ $site->description }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
<br>
|
||||
@endforeach
|
||||
@endif
|
||||
@stop
|
|
@ -1,7 +0,0 @@
|
|||
@extends('layouts.default')
|
||||
@section('title', 'Discord Bot')
|
||||
@section('description', '')
|
||||
@section('content')
|
||||
<p>The diskfloppy.me Discord bot blah blah blah blah blah</p>
|
||||
<p>Maybe I'll finish this page later idk</p>
|
||||
@stop
|
|
@ -1,442 +0,0 @@
|
|||
@extends('layouts.default')
|
||||
@section('title', 'Computers')
|
||||
@section('description', 'Computers I own or have owned.')
|
||||
@section('content')
|
||||
<table class="computers">
|
||||
<tr>
|
||||
<th>PICTURES</th>
|
||||
<th>SPECS & DESCRIPTION</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2023 MacBook Pro 14"</td>
|
||||
<td>
|
||||
<section-title>Quick Specs</section-title>
|
||||
<ul>
|
||||
<li>Apple M3 Pro</li>
|
||||
<li>18GB RAM</li>
|
||||
<li>500GB SSD</li>
|
||||
<li>macOS Sonoma</li>
|
||||
</ul>
|
||||
<p class="description">WHAT</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2018 MacBook Pro 13"</td>
|
||||
<td>
|
||||
<section-title>Quick Specs</section-title>
|
||||
<ul>
|
||||
<li>Intel i5-8259U @ 2.3GHz</li>
|
||||
<li>Intel Iris Plus Graphics 655</li>
|
||||
<li>8GB RAM</li>
|
||||
<li>250GB SSD</li>
|
||||
<li>macOS Sonoma</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2012 Lenovo ThinkPad T430</td>
|
||||
<td>
|
||||
<section-title>Quick Specs</section-title>
|
||||
<ul>
|
||||
<li>Intel Core i7</li>
|
||||
<li>16GB RAM</li>
|
||||
<li>Windows 7 Professional</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2005 IBM ThinkPad X41T</td>
|
||||
<td>
|
||||
<section-title>Quick Specs</section-title>
|
||||
<ul>
|
||||
<li>Intel Pentium M @ 1.6GHz</li>
|
||||
<li>Mobile Intel Express Chipset Family (128MB)</li>
|
||||
<li>1.5GB RAM</li>
|
||||
<li>40GB HDD</li>
|
||||
<li>Windows XP Tablet PC Edition</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1999 Dell OptiPlex GX1</td>
|
||||
<td>
|
||||
<section-title>Quick Specs</section-title>
|
||||
<ul>
|
||||
<li>Intel Pentium II (Deschutes) @ 400MHz</li>
|
||||
<li>ATI 3D Rage Pro (4MB)</li>
|
||||
<li>639MB</li>
|
||||
<li>40GB HDD</li>
|
||||
<li>MS-DOS 6.22 & WFW 3.10</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2003 IBM ThinkPad T40</td>
|
||||
<td>
|
||||
<section-title>Quick Specs</section-title>
|
||||
<ul>
|
||||
<li>Intel Pentium M @ 1.3GHz</li>
|
||||
<li>ATI Mobility Radeon 7500 (32MB)</li>
|
||||
<li>1GB RAM</li>
|
||||
<li>30GB HDD</li>
|
||||
<li>Windows 2000 Professional</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2010 HP Compaq Elite 8100</td>
|
||||
<td>
|
||||
<section-title>Quick Specs</section-title>
|
||||
<ul>
|
||||
<li>Intel Core i7</li>
|
||||
<li>16GB RAM</li>
|
||||
<li>some SSD and an HDD</li>
|
||||
<li>Windows Vista Ultimate (64-bit)</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2014 Mac mini</td>
|
||||
<td>
|
||||
<section-title>Quick Specs</section-title>
|
||||
<ul>
|
||||
<li>Intel Core i5-4278U @ 2.6GHz</li>
|
||||
<li>Intel Iris Graphics</li>
|
||||
<li>8GB RAM</li>
|
||||
<li>1TB HDD</li>
|
||||
<li>VMware ESXi 6.7.0u3</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1996 Fujitsu Milan</td>
|
||||
<td>
|
||||
<section-title>Quick Specs</section-title>
|
||||
<ul>
|
||||
<li>Intel Pentium</li>
|
||||
<li>32MB RAM</li>
|
||||
<li>1215MB HDD</li>
|
||||
<li>Windows 98 SE</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1999 Compaq Armada M300</td>
|
||||
<td>
|
||||
<section-title>Quick Specs</section-title>
|
||||
<ul>
|
||||
<li>Intel Pentium III</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!--<table class="computer" role="presentation">
|
||||
<tr>
|
||||
<td colspan="2"><h2>Custom Build</h2><hr></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="computer-specs">
|
||||
<tr>
|
||||
<td class="spec-title">OS:</td>
|
||||
<td class="spec">NixOS 22.11 / Windows 10 Pro</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">CPU:</td>
|
||||
<td class="spec">Intel i7-6700K (8-core) @ 4.0GHz</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">GPU:</td>
|
||||
<td class="spec">NVidia GTX 1060 (3GB)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">Memory:</td>
|
||||
<td class="spec">64GB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">DISK0:</td>
|
||||
<td class="spec">SanDisk SSD Plus (120GB, Win10)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">DISK1:</td>
|
||||
<td class="spec">Crucial CT500MX500SSD1 (500GB, NixOS)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">DISK2:</td>
|
||||
<td class="spec">WDC WD20EZEAZ-00GGJB0 (2TB, Data)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="computer" role="presentation">
|
||||
<tr>
|
||||
<td colspan="2"><h2>MacBook Pro (2018)</h2><hr></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="computer-specs">
|
||||
<tr>
|
||||
<td class="spec-title">OS:</td>
|
||||
<td class="spec">macOS 12.5.1</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">Display:</td>
|
||||
<td class="spec">2560x1600 (Retina)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">CPU:</td>
|
||||
<td class="spec">Intel i5-8259U (8-core) @ 2.3GHz</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">GPU:</td>
|
||||
<td class="spec">Intel Iris Plus Graphics 655</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">Memory:</td>
|
||||
<td class="spec">8GB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">DISK:</td>
|
||||
<td class="spec">Apple SSD AP0256M (250GB)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="computer" role="presentation">
|
||||
<tr>
|
||||
<td colspan="2"><h2>Lenovo ThinkPad T430 (2012)</h2><hr></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="computer-specs">
|
||||
<tr>
|
||||
<td class="spec-title">OS:</td>
|
||||
<td class="spec">NixOS 22.11 / Windows 7 Ultimate</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">CPU:</td>
|
||||
<td class="spec">Intel i7-3520M (4-core) @ 3.6GHz</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">GPU:</td>
|
||||
<td class="spec">Intel 3rd Gen Core processor Graphics Controllertd>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">Memory:</td>
|
||||
<td class="spec">16GB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">DISK0:</td>
|
||||
<td class="spec">Crucial CT500MX500SSD1 (500GB, NixOS)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">DISK1:</td>
|
||||
<td class="spec">Crucial CT250MX500SSD1 (250GB, Win7)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="computer" role="presentation">
|
||||
<tr>
|
||||
<td colspan="2"><h2>IBM ThinkPad X41 (2005)</h2><hr></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="computer-specs">
|
||||
<tr>
|
||||
<td class="spec-title">OS:</td>
|
||||
<td class="spec">Windows XP Tablet PC Edition (2005, SP3)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">CPU:</td>
|
||||
<td class="spec">Intel Pentium M (single-core) @ 1.6GHz</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">GPU:</td>
|
||||
<td class="spec">Mobile Intel 915GM/GMS 910GML Express Chipset Family (128MB)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">Memory:</td>
|
||||
<td class="spec">1.5GB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">DISK:</td>
|
||||
<td class="spec">Hitachi HTC426040G9AT00 (40GB)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="computer" role="presentation">
|
||||
<tr>
|
||||
<td colspan="2"><h2>Dell OptiPlex GX1 (400L+, 1999)</h2><hr></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="computer-specs">
|
||||
<tr>
|
||||
<td class="spec-title">OS:</td>
|
||||
<td class="spec">Windows 3.10 for Workgroups (DOS 6.22)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">CPU:</td>
|
||||
<td class="spec">Intel Pentium II (Deschutes) @ 400MHz</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">GPU:</td>
|
||||
<td class="spec">ATI 3D Rage Pro (4MB)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">Memory:</td>
|
||||
<td class="spec">639MB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">DISK:</td>
|
||||
<td class="spec">Unknown</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="computer" role="presentation">
|
||||
<tr>
|
||||
<td colspan="2"><h2>IBM ThinkPad T40 (2003)</h2><hr></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="computer-specs">
|
||||
<tr>
|
||||
<td class="spec-title">OS:</td>
|
||||
<td class="spec">Windows XP Pro</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">CPU:</td>
|
||||
<td class="spec">Intel Pentium M (single-core) @ 1.3GHz</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">GPU:</td>
|
||||
<td class="spec">ATI Mobility Radeon 7500 (32MB)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">Memory:</td>
|
||||
<td class="spec">1GB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">DISK:</td>
|
||||
<td class="spec">Fujitsu MHS2030AT (30GB)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="computer" role="presentation">
|
||||
<tr>
|
||||
<td colspan="2"><h2>HP Compaq Elite 8100 CMT</h2><hr></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="computer-specs">
|
||||
<tr>
|
||||
<td class="spec-title">OS:</td>
|
||||
<td class="spec">Windows Vista 64-bit</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">CPU:</td>
|
||||
<td class="spec">Intel Core i7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">GPU:</td>
|
||||
<td class="spec"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">Memory:</td>
|
||||
<td class="spec">16GB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">DISK0:</td>
|
||||
<td class="spec">SanDisk SSD Plus (120GB, Win10)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">DISK1:</td>
|
||||
<td class="spec">Crucial CT500MX500SSD1 (500GB, NixOS)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="computer" role="presentation">
|
||||
<tr>
|
||||
<td colspan="2"><h2>Mac mini (2014)</h2><hr></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="computer-specs">
|
||||
<tr>
|
||||
<td class="spec-title">OS:</td>
|
||||
<td class="spec">VMware ESXi 6.7.0u3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">CPU:</td>
|
||||
<td class="spec">Intel i5-4278U (4-core) @ 2.6GHz</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">GPU:</td>
|
||||
<td class="spec">Intel Iris Graphics</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">Memory:</td>
|
||||
<td class="spec">8GB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">DISK:</td>
|
||||
<td class="spec">Apple HDD HTS541 (1TB)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="computer" role="presentation">
|
||||
<tr>
|
||||
<td colspan="2"><h2>Fujitsu Milan (1996)</h2><hr></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="computer-specs">
|
||||
<tr>
|
||||
<td class="spec-title">OS:</td>
|
||||
<td class="spec">Windows 98 SE</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">CPU:</td>
|
||||
<td class="spec">Intel Pentium</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">Memory:</td>
|
||||
<td class="spec">32MB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="spec-title">DISK:</td>
|
||||
<td class="spec">IBM DPRA-21215 (1215MB)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>-->
|
||||
<!--<table class="computer" role="presentation">
|
||||
<tr>
|
||||
<td colspan="2"><h2>Compaq Armada M300</h2><hr></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="computer-specs">
|
||||
<tr>
|
||||
<td class="spec">TBD</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>-->
|
||||
@stop
|
|
@ -1,88 +0,0 @@
|
|||
@extends('layouts.default')
|
||||
@section('title', 'Home')
|
||||
@section('description', 'This is the personal homepage of floppydisk.')
|
||||
@section('content')
|
||||
|
||||
<p>Hi! This is my personal homepage on the <strong>W</strong>orld <strong>W</strong>ide <strong>W</strong>eb.</p>
|
||||
|
||||
<table class="info-table" role="presentation">
|
||||
<caption>
|
||||
<h2>QuickFacts™</h2>
|
||||
<hr>
|
||||
</caption>
|
||||
<tr>
|
||||
<td>◆ 18 y/o, he/him, British</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>◆ Theatre Technician, "Web Developer" and NixOS User</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>◆ Loves ETC desks, prefers Generics to LEDs for some reason</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>◆ Spends way too much time on his computer</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>◆ Favorite games: <a href="https://steamcommunity.com/id/floppydisk05/recommended/420530/">OneShot</a>, Minecraft, Stardew Valley, N++ and Starbound</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>◆ <a href="http://wxqa.com/">CWOP</a> member</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table class="info-table" role="presentation">
|
||||
<caption>
|
||||
<h2>Interests</h2>
|
||||
<hr>
|
||||
</caption>
|
||||
<tr>
|
||||
<td>◆ <b>Tech Theatre</b></td>
|
||||
<td>- Lighting, Stage Management, etc. (<a href="https://www.controlbooth.com/members/floppydisk.28673/">ControlBooth</a>)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>◆ <b>Programming</b></td>
|
||||
<td>- HTML, CSS, JavaScript, C#, Java, PHP, Ruby, Python (<a href="https://github.com/floppydisk05">GitHub</a>)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>◆ <b>Photography</b></td>
|
||||
<td>- <a href="https://www.flickr.com/photos/floppydisk/">Flickr</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>◆ <b>Gaming</b></td>
|
||||
<td>- <a href="https://steamcommunity.com/id/floppydisk05/">Steam Profile</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table class="info-table never-said" role="presentation">
|
||||
<caption>
|
||||
<h2>Things they never said</h2>
|
||||
<hr>
|
||||
</caption>
|
||||
<tr>
|
||||
<script type="text/javascript" src="/js/neverSaid.js"></script>
|
||||
<noscript><td>Oops! You need JavaScript enabled to view this content.</td></noscript>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<table class="info-table" role="presentation">
|
||||
<caption>
|
||||
<h2>Contact & social</h2>
|
||||
<hr>
|
||||
</caption>
|
||||
<tr>
|
||||
<td><strong>E-mail:</strong></td>
|
||||
<td><a href="mailto:contact@diskfloppy.me">contact@diskfloppy.me</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Mastodon:</strong></td>
|
||||
<td><a rel="me" href="https://c.im/@floppydisk">@floppydisk@c.im</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Matrix:</strong></td>
|
||||
<td><a href="https://matrix.to/#/@floppydisk:arcticfoxes.net">@floppydisk:arcticfoxes.net</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
@stop
|
|
@ -1,66 +0,0 @@
|
|||
@extends('layouts.default')
|
||||
@section('title', 'Music')
|
||||
@section('description', '')
|
||||
@section('content')
|
||||
@php
|
||||
|
||||
$cfg = app('config')->get('services')['lastfm'];
|
||||
$api_root = app('config')->get('app')['api_root'];
|
||||
|
||||
$api_alive = true;
|
||||
|
||||
try {
|
||||
$data = file_get_contents($api_root.'/lastfm/current');
|
||||
} catch (Exception $e) {
|
||||
$api_alive = false;
|
||||
}
|
||||
@endphp
|
||||
@if (!$api_alive)
|
||||
@include('components.errors.api-error')
|
||||
@else
|
||||
|
||||
@php
|
||||
$current_track = json_decode(file_get_contents($api_root . '/lastfm/current'));
|
||||
$top_tracks = json_decode(file_get_contents($api_root . '/lastfm/top'));
|
||||
$count = 0;
|
||||
@endphp
|
||||
<table class="info-table" role="presentation" width="100%">
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<h2>Last/Current Track:</h2>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<a href="{{ $current_track->url }}">{{ $current_track->title }} • {{ $current_track->artist }}</a><br>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
<table class="music-top10">
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<h2 style="margin-bottom: 5px">Top {{ $cfg['toptracks'] }} Tracks (Last 7 days)</h2>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: right"><b>#</b></td>
|
||||
<td><b>Track</b></td>
|
||||
<td><b>Artist</b></td>
|
||||
<td><b>Plays</b></td>
|
||||
</tr>
|
||||
@foreach ($top_tracks as $track)
|
||||
@php $count++ @endphp
|
||||
@if ($count >= $cfg['toptracks']+1)
|
||||
@break
|
||||
@endif
|
||||
<tr>
|
||||
<td style="text-align: right">{{ $count }}</td>
|
||||
<td style="white-space: nowrap; text-overflow:ellipsis; overflow: hidden; max-width:1px;" width="50%"><a href="{{ $track->url }}">{{ $track->title }}</a></td>
|
||||
<td style="white-space: nowrap; text-overflow:ellipsis; overflow: hidden; max-width:1px;" width="50%">{{ $track->artist }}</td>
|
||||
<td>{{ $track->playcount }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</table>
|
||||
@endif
|
||||
@stop
|
|
@ -1,16 +0,0 @@
|
|||
<?php $categories = app('config')->get('projects'); ?>
|
||||
@extends('layouts.default')
|
||||
@section('title', 'Projects')
|
||||
@section('description', 'My projects')
|
||||
@section('content')
|
||||
@foreach ($categories as $category)
|
||||
<h2>{{ $category['name']}}</h2>
|
||||
@foreach ($category['projects'] as $project)
|
||||
<div>
|
||||
<a href="{{ $project['url'] }}">{{ $project['name'] }}</a> - {{ $project['description'] }}<br>
|
||||
<b>Languages:</b> {{ implode(", ", $project['languages']) }}
|
||||
</div>
|
||||
<br>
|
||||
@endforeach
|
||||
@endforeach
|
||||
@stop
|
|
@ -1,6 +0,0 @@
|
|||
@extends('layouts.default')
|
||||
@section('title', 'Page Title')
|
||||
@section('description', 'Page description goes here')
|
||||
@section('content')
|
||||
<p>page content</p>
|
||||
@stop
|
|
@ -1,61 +0,0 @@
|
|||
@extends('layouts.default')
|
||||
@section('title', 'Weather')
|
||||
@section('description', 'Data from my weather station')
|
||||
@section('content')
|
||||
@php
|
||||
$api_root = app('config')->get('app')['api_root'];
|
||||
|
||||
function degreesToCompassDirection($degrees) {
|
||||
$cardinalDirections = [
|
||||
'N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE',
|
||||
'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW', 'N'
|
||||
];
|
||||
return $cardinalDirections[round($degrees*16/360)];
|
||||
}
|
||||
|
||||
$api_alive = true;
|
||||
|
||||
try {
|
||||
$data = file_get_contents($api_root.'/weather');
|
||||
} catch (Exception $e) {
|
||||
$api_alive = false;
|
||||
}
|
||||
@endphp
|
||||
@if (!$api_alive)
|
||||
@include('components.errors.api-error')
|
||||
@else
|
||||
@php
|
||||
$data = json_decode(file_get_contents($api_root.'/weather'));
|
||||
$updated = gmdate('H:i Y-m-d', $data->updated);
|
||||
$data = $data->current;
|
||||
@endphp
|
||||
<table class="info-table" role="presentation">
|
||||
<caption>
|
||||
<h2>Local Weather</h2>
|
||||
<hr>
|
||||
</caption>
|
||||
<tr>
|
||||
<td><b>Wind Speed:</b></td>
|
||||
<td>{{ $data->wind->speed }} mph</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Wind Direction:</b></td>
|
||||
<td>{{ $data->wind->direction->degrees }}°, {{ $data->wind->direction->cardinal }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Temperature:</b></td>
|
||||
<td>{{ $data->temperature }}°C</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Rain Rate:</b></td>
|
||||
<td>{{ $data->rain_rate }} mm/hr</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Humidity:</b></td>
|
||||
<td>{{ $data->humidity }}%</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<small><i>(Last Update: {{ $updated }})</i></small>
|
||||
@endif
|
||||
@stop
|
Loading…
Add table
Add a link
Reference in a new issue