Initial Web UI inspired by int10h.org
This commit is contained in:
parent
b94e39c7af
commit
d7f3ab4130
@ -4,18 +4,10 @@ namespace App\Http\Controllers;
|
|||||||
|
|
||||||
class HomeController extends Controller
|
class HomeController extends Controller
|
||||||
{
|
{
|
||||||
public function home() {
|
|
||||||
return view('home');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function network(string $name)
|
public function network(string $name)
|
||||||
{
|
{
|
||||||
return view('networks')
|
return view('networks')
|
||||||
->with('content',$name)
|
->with('content',$name)
|
||||||
->with('network',$name);
|
->with('network',$name);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function welcome() {
|
|
||||||
return view('welcome');
|
|
||||||
}
|
|
||||||
}
|
}
|
73
public/css/fixes.css
vendored
73
public/css/fixes.css
vendored
@ -1,73 +0,0 @@
|
|||||||
body {
|
|
||||||
font-size: 20px;
|
|
||||||
background-color: #000000;
|
|
||||||
line-height: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-blue {
|
|
||||||
background-color: #000084;
|
|
||||||
color: #fff;
|
|
||||||
border: 1px solid #fff !important;
|
|
||||||
margin-top: 14px !important;
|
|
||||||
padding-top: 14px !important;
|
|
||||||
padding-bottom: 14px !important;
|
|
||||||
margin-bottom: 14px !important;
|
|
||||||
margin-left: 3.5px;
|
|
||||||
padding-left: 10.5px;
|
|
||||||
padding-right: 11.5px;
|
|
||||||
margin-right: 2.5px;
|
|
||||||
width: calc(100% - 6px);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fix button forms */
|
|
||||||
form button.btn {
|
|
||||||
font-size: 20px !important;
|
|
||||||
line-height: 14px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fix form input box */
|
|
||||||
input.form-control {
|
|
||||||
font-size: 20px !important;
|
|
||||||
line-height: 20px !important;
|
|
||||||
height: 20px;
|
|
||||||
|
|
||||||
background: none;
|
|
||||||
background-color: #DDDDDD;
|
|
||||||
color: #000000;
|
|
||||||
padding: 0 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
input.form-control:focus {
|
|
||||||
background-color: #FFFFFF;
|
|
||||||
color: #000000;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fix nested dropdowns */
|
|
||||||
.dropdown-submenu:hover>.dropdown-menu {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dropdown-submenu>.dropdown-toggle:active {
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dropdown-menu {
|
|
||||||
line-height: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dropdown-submenu {
|
|
||||||
position:relative;
|
|
||||||
line-height: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dropdown-submenu>.dropdown-menu {
|
|
||||||
top: 0;
|
|
||||||
left: 97%;
|
|
||||||
margin-top: 0;
|
|
||||||
padding: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* rotate caret on hover */
|
|
||||||
.dropdown-menu > li > a::after {
|
|
||||||
transform: rotate(-90deg);
|
|
||||||
}
|
|
Binary file not shown.
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 549 B |
415
public/oldschool/css/main.css
vendored
Normal file
415
public/oldschool/css/main.css
vendored
Normal file
@ -0,0 +1,415 @@
|
|||||||
|
@font-face {
|
||||||
|
/* font-family: 'IBM BIOS-2y'; */
|
||||||
|
font-family: ibmbios2y;
|
||||||
|
src: url(../font/Web437_IBM_BIOS-2y.woff) format('woff');
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
height:100%;
|
||||||
|
box-sizing:border-box
|
||||||
|
}
|
||||||
|
*,
|
||||||
|
*:before,
|
||||||
|
*:after {
|
||||||
|
box-sizing:inherit
|
||||||
|
}
|
||||||
|
::-moz-selection {
|
||||||
|
background-color:#0a0;
|
||||||
|
color:#000
|
||||||
|
}
|
||||||
|
::selection {
|
||||||
|
background-color:rgba(0,172,0,.99);
|
||||||
|
color:#000
|
||||||
|
}
|
||||||
|
img::-moz-selection {
|
||||||
|
background-color:#0a0
|
||||||
|
}
|
||||||
|
img::selection {
|
||||||
|
background-color:rgba(0,172,0,.5)
|
||||||
|
}
|
||||||
|
a,
|
||||||
|
a:before,
|
||||||
|
a:after,
|
||||||
|
input,
|
||||||
|
select,
|
||||||
|
textarea {
|
||||||
|
transition:color .15s,background-color .15s,border-color .15s,opacity .15s
|
||||||
|
}
|
||||||
|
a:link {
|
||||||
|
text-decoration:none
|
||||||
|
}
|
||||||
|
:not(dt)>a:link,
|
||||||
|
:not(dt)>a:visited {
|
||||||
|
color:#0aa
|
||||||
|
}
|
||||||
|
|
||||||
|
div p:last-child {
|
||||||
|
margin-bottom:0
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: #000;
|
||||||
|
color: #aaa;
|
||||||
|
overflow-x: hidden;
|
||||||
|
overflow-y: scroll;
|
||||||
|
margin: 0;
|
||||||
|
line-height: 20px
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family:ibmbios2y,monospace;
|
||||||
|
font-size:16px
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
position:relative;
|
||||||
|
padding-bottom:68px;
|
||||||
|
min-height:100%
|
||||||
|
}
|
||||||
|
|
||||||
|
sup {
|
||||||
|
color: #530000;
|
||||||
|
}
|
||||||
|
sup:before {
|
||||||
|
content: '[';
|
||||||
|
}
|
||||||
|
sup:after {
|
||||||
|
content: ']';
|
||||||
|
}
|
||||||
|
sup:before,
|
||||||
|
sup:after {
|
||||||
|
color: #aa0000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav {
|
||||||
|
width: 100%;
|
||||||
|
position: fixed;
|
||||||
|
background: #2e2e2e;
|
||||||
|
height: 3em;
|
||||||
|
z-index: 4;
|
||||||
|
box-sizing: content-box
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav-menu {
|
||||||
|
color:#aaa;
|
||||||
|
padding:0;
|
||||||
|
width:inherit;
|
||||||
|
max-width:1248px;
|
||||||
|
position:fixed;
|
||||||
|
z-index:4;
|
||||||
|
top:0;
|
||||||
|
left:0;
|
||||||
|
right:0;
|
||||||
|
margin-top:0;
|
||||||
|
margin-bottom:0;
|
||||||
|
margin-left:auto;
|
||||||
|
margin-right:auto;
|
||||||
|
text-align:left;
|
||||||
|
}
|
||||||
|
#nav-menu h1 {
|
||||||
|
width: 216px;
|
||||||
|
font-size: 1.5em;
|
||||||
|
font-weight:400;
|
||||||
|
padding: 0;
|
||||||
|
color: #fff;
|
||||||
|
display: inline-block;
|
||||||
|
text-transform:uppercase;
|
||||||
|
margin-right: 10px;
|
||||||
|
margin-left: -50px;
|
||||||
|
}
|
||||||
|
#nav-menu ul {
|
||||||
|
margin:0;
|
||||||
|
padding:0;
|
||||||
|
display:inline-block;
|
||||||
|
text-transform:uppercase;
|
||||||
|
}
|
||||||
|
#nav-menu ul li {
|
||||||
|
display:inline-block;
|
||||||
|
list-style-type:none;
|
||||||
|
margin:0;
|
||||||
|
padding:0
|
||||||
|
}
|
||||||
|
#nav-menu ul li a,
|
||||||
|
#nav-menu ul li a:link,
|
||||||
|
#nav-menu ul li a:visited {
|
||||||
|
display:inline-block;
|
||||||
|
text-decoration:none;
|
||||||
|
color:#ff5;
|
||||||
|
padding:0 11px;
|
||||||
|
margin:7px;
|
||||||
|
border-top:1px solid #fff;
|
||||||
|
border-bottom:1px solid #fff;
|
||||||
|
border-right:2px solid #fff;
|
||||||
|
border-left:2px solid #fff;
|
||||||
|
}
|
||||||
|
#nav-menu ul:after {
|
||||||
|
padding:8px 0 7px 2px;
|
||||||
|
display:inline-block;
|
||||||
|
}
|
||||||
|
#nav-menu ul li a span {
|
||||||
|
display:inline-block;
|
||||||
|
padding:8px 0 7px
|
||||||
|
}
|
||||||
|
#nav-menu ul li a:active,
|
||||||
|
#nav-menu ul li a:hover,
|
||||||
|
#nav-menu ul li a:focus {
|
||||||
|
color:#fff;
|
||||||
|
background-color:#a00;
|
||||||
|
outline:0
|
||||||
|
}
|
||||||
|
#nav-menu ul li a span:before {
|
||||||
|
content:"["
|
||||||
|
}
|
||||||
|
#nav-menu ul li a span:after {
|
||||||
|
content:"]"
|
||||||
|
}
|
||||||
|
#nav-menu ul li a span:before,
|
||||||
|
#nav-menu ul li a span:after {
|
||||||
|
color:#c60
|
||||||
|
}
|
||||||
|
#nav-menu ul li a:active span:before,
|
||||||
|
#nav-menu ul li a:hover span:before,
|
||||||
|
#nav-menu ul li a:active span:after,
|
||||||
|
#nav-menu ul li a:hover span:after,
|
||||||
|
#nav-menu ul li a:focus span:before,
|
||||||
|
#nav-menu ul li a:focus span:after {
|
||||||
|
color:#aaa
|
||||||
|
}
|
||||||
|
|
||||||
|
a.thispage,
|
||||||
|
a.thispage:hover {
|
||||||
|
border-color:#aaa!important;
|
||||||
|
background-color:transparent!important
|
||||||
|
}
|
||||||
|
a.thispage span,
|
||||||
|
a.thispage:hover span {
|
||||||
|
color:#c60!important
|
||||||
|
}
|
||||||
|
a.thispage span:before,
|
||||||
|
a.thispage span:after {
|
||||||
|
color:#a00!important
|
||||||
|
}
|
||||||
|
|
||||||
|
ul#navlist-desktop {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sidebar {
|
||||||
|
position:absolute;
|
||||||
|
left:0;
|
||||||
|
top:calc(3em + 8px);
|
||||||
|
height:calc(100vh - 3em + 8px);
|
||||||
|
width:22ch;
|
||||||
|
overflow:hidden;
|
||||||
|
padding-top:.5em;
|
||||||
|
color:#c60;
|
||||||
|
background-color:#000;
|
||||||
|
box-sizing:border-box;
|
||||||
|
transition:left .1s ease-out
|
||||||
|
}
|
||||||
|
#sidebar.x {
|
||||||
|
width:25ch
|
||||||
|
}
|
||||||
|
#sidebar-scroller {
|
||||||
|
overflow-y:scroll;
|
||||||
|
padding-right:0;
|
||||||
|
box-sizing:content-box;
|
||||||
|
width:100%;
|
||||||
|
text-align:left;
|
||||||
|
height:calc(100vh - 3em + 8px)
|
||||||
|
}
|
||||||
|
#sidebar dl:last-child {
|
||||||
|
margin-bottom:2em
|
||||||
|
}
|
||||||
|
#sidebar ::-webkit-scrollbar {
|
||||||
|
display:none
|
||||||
|
}
|
||||||
|
|
||||||
|
#content {
|
||||||
|
color:#aaa;
|
||||||
|
max-width:993px;
|
||||||
|
margin:0 auto;
|
||||||
|
padding:4em 0 0;
|
||||||
|
box-sizing:border-box;
|
||||||
|
overflow:hidden
|
||||||
|
}
|
||||||
|
#content * {
|
||||||
|
vertical-align:top
|
||||||
|
}
|
||||||
|
#content a.anchor {
|
||||||
|
display:block;
|
||||||
|
position:relative;
|
||||||
|
top:-4em;
|
||||||
|
visibility:hidden
|
||||||
|
}
|
||||||
|
|
||||||
|
.with-sidebar {
|
||||||
|
position:relative;
|
||||||
|
left:88px;
|
||||||
|
max-width:1041px!important
|
||||||
|
}
|
||||||
|
.with-sidebar.x {
|
||||||
|
left:112px;
|
||||||
|
max-width:1017px!important
|
||||||
|
}
|
||||||
|
|
||||||
|
/* MAIN CONTENT HEADERS */
|
||||||
|
#content h1 {
|
||||||
|
color: #fff;
|
||||||
|
font-weight: 400;
|
||||||
|
margin-top: 5px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
text-shadow: 2px 2px 0 #555;
|
||||||
|
border-bottom: 2px solid #aaa;
|
||||||
|
}
|
||||||
|
#content h2 {
|
||||||
|
color:#fff;
|
||||||
|
background-color:#a00;
|
||||||
|
display:inline-block;
|
||||||
|
font-size:100%;
|
||||||
|
font-weight:400;
|
||||||
|
text-align:center;
|
||||||
|
padding:9px 8px 7px;
|
||||||
|
margin:24px auto 40px auto;
|
||||||
|
box-shadow:8px 9px 0 0 #333
|
||||||
|
}
|
||||||
|
#content>h2:first-child {
|
||||||
|
margin-top:8px
|
||||||
|
}
|
||||||
|
#content h3,
|
||||||
|
#content h4 {
|
||||||
|
font-size:100%;
|
||||||
|
font-weight:400;
|
||||||
|
text-align:left
|
||||||
|
}
|
||||||
|
#content h3 {
|
||||||
|
padding:0 0 7px;
|
||||||
|
margin:0 0 24px -.3px;
|
||||||
|
color:#c60;
|
||||||
|
border-bottom:1px solid #b00
|
||||||
|
}
|
||||||
|
#content h4 {
|
||||||
|
box-sizing:border-box;
|
||||||
|
margin:0 0 1em -.3px;
|
||||||
|
color:#b00;
|
||||||
|
display:inline-block;
|
||||||
|
padding-right:1ch
|
||||||
|
}
|
||||||
|
#content h5 {
|
||||||
|
color:#c60;
|
||||||
|
}
|
||||||
|
|
||||||
|
#content ul {
|
||||||
|
margin:0 1ch;
|
||||||
|
padding-left:1ch;
|
||||||
|
list-style-type:none
|
||||||
|
}
|
||||||
|
#content ul ul {
|
||||||
|
margin:0;
|
||||||
|
padding-left:0;
|
||||||
|
list-style-type:none
|
||||||
|
}
|
||||||
|
#content ul.ind {
|
||||||
|
margin-right:2ch
|
||||||
|
}
|
||||||
|
#content ul li {
|
||||||
|
margin:0 1ch;
|
||||||
|
text-indent:-3ch;
|
||||||
|
padding-left:3ch;
|
||||||
|
display:block
|
||||||
|
}
|
||||||
|
#content ul li:before {
|
||||||
|
content:"\2666\a0\A0";
|
||||||
|
color:#0a0
|
||||||
|
}
|
||||||
|
#content ul ul li::before {
|
||||||
|
content:"\25CB\A0\A0"!important
|
||||||
|
}
|
||||||
|
#content ul li:last-child {
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
dl {
|
||||||
|
margin:1em -1px 0 1px
|
||||||
|
}
|
||||||
|
dt a {
|
||||||
|
color:#5ff
|
||||||
|
}
|
||||||
|
dt a:hover,
|
||||||
|
dt a:active {
|
||||||
|
color:#fff;
|
||||||
|
background-color:#0aa
|
||||||
|
}
|
||||||
|
dd {
|
||||||
|
margin-left:0;
|
||||||
|
text-align:left
|
||||||
|
}
|
||||||
|
dd a::before {
|
||||||
|
content:"\BB\a0";
|
||||||
|
color:#a00;
|
||||||
|
background-color:#000
|
||||||
|
}
|
||||||
|
dd a:hover:before,
|
||||||
|
dd a:active:before {
|
||||||
|
content:"\25BA\A0";
|
||||||
|
color:#c60
|
||||||
|
}
|
||||||
|
dd a:hover,
|
||||||
|
dd a:active {
|
||||||
|
color:#fff!important;
|
||||||
|
background-color:#0aa
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin:0 0 1em;
|
||||||
|
padding:0;
|
||||||
|
text-align:left;
|
||||||
|
word-break:break-word
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
text-align:left
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer {
|
||||||
|
position:absolute;
|
||||||
|
bottom:0;
|
||||||
|
left:0;
|
||||||
|
right:0;
|
||||||
|
text-align:center;
|
||||||
|
height:48px;
|
||||||
|
width:100%
|
||||||
|
}
|
||||||
|
a#getback,
|
||||||
|
a#getback:link,
|
||||||
|
a#getback:visited {
|
||||||
|
display:inline-block;
|
||||||
|
text-decoration:none;
|
||||||
|
color:#0a0;
|
||||||
|
padding:.5em 1ch;
|
||||||
|
margin:0 3ch 0 0
|
||||||
|
}
|
||||||
|
a#getback:active,
|
||||||
|
a#getback:hover {
|
||||||
|
color:#5f5;
|
||||||
|
background-color:#333
|
||||||
|
}
|
||||||
|
a#getback:focus {
|
||||||
|
color:#5ff;
|
||||||
|
background-color:#333;
|
||||||
|
outline:0
|
||||||
|
}
|
||||||
|
a#getback:before {
|
||||||
|
color:#a00;
|
||||||
|
content:"\25C4\25C4\a0"
|
||||||
|
}
|
||||||
|
a#getback:active:before,
|
||||||
|
a#getback:hover:before {
|
||||||
|
color:#f55
|
||||||
|
}
|
||||||
|
a#getback:focus:before {
|
||||||
|
color:#fff
|
||||||
|
}
|
BIN
public/oldschool/font/Web437_IBM_BIOS-2y.woff
Normal file
BIN
public/oldschool/font/Web437_IBM_BIOS-2y.woff
Normal file
Binary file not shown.
60
resources/views/about.blade.php
Normal file
60
resources/views/about.blade.php
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
@extends('layouts.app')
|
||||||
|
|
||||||
|
@section('main-content')
|
||||||
|
<h2>About the FTN Clearing House</h2>
|
||||||
|
|
||||||
|
<p>Welcome to the FTN Clearing House.</p>
|
||||||
|
<p>The FTN Clearing House (FCH) is both a FTN Mailer and FTN message tosser, where mail is stored internally in a DB. FCH can also hatch and toss files into FTN networks for both up/downstream nodes.</p>
|
||||||
|
<p>It was created as an idea to bring modern technology and capabilities to a legacy computing network that existed in the 1970's, 1980's and 1990's (before the Internet basically).</p>
|
||||||
|
|
||||||
|
<p>Setting up a BBS is fun, but using a BBS for the long term, in amongst our busy lives can involve some repetitive tasks.
|
||||||
|
In the same vain, maintaining and growing an FTN network also can be time consuming, especially when your effort (or lack thereof) can affect the experience of your users.
|
||||||
|
So FCH was created to help address that.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>Building this software is driven by two main goals:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Self Service - so that users can setup and re-jig their configuration themselves, or new users can join a network with the minimum of effort.</li>
|
||||||
|
<li>Automation - so that repetitive tasks can be done with minimal effort</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>So that you can send your time playing on your BBS rather than managing messages/fails or keeping an FTN network running.</p>
|
||||||
|
|
||||||
|
<h3>For the BBS Sysop</h3>
|
||||||
|
<p>For the BBS sysop, the FTN Clearing House has the following features (or planned ones):</p>
|
||||||
|
<ul>
|
||||||
|
<li>Supports BINKP network transfers</li>
|
||||||
|
<li>Supports EMSI network transfers</li>
|
||||||
|
<li>Supports PING responses <sup>To be implemented</sup></li>
|
||||||
|
<li>Proxy mode, if you want your BBS to have our main address <sup>To be implemented</sup></li>
|
||||||
|
<li>A consistent reliable echomail/netmail hub for your BBSes.<br>
|
||||||
|
If you have more than 1 BBS, then the Clearing House can receive all your mail from your uplinks and feed them to your BBSes.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3>For the FTN network operator</h3>
|
||||||
|
<p>For the FTN network operator, the FTN Clearing House has the following features (or planned ones):</p>
|
||||||
|
<ul>
|
||||||
|
<li>Supports BINKP network transfers</li>
|
||||||
|
<li>Supports EMSI network transfers</li>
|
||||||
|
<li>Supports PING and TRACE responses <sup>To be implemented</sup></li>
|
||||||
|
<li>Nodelist Management <sup>To be implemented</sup></li>
|
||||||
|
<li>Network Applications <sup>To be implemented</sup></li>
|
||||||
|
<li>Dynamic mail bundling for upstream and downstream nodes <sup>To be implemented</sup></li>
|
||||||
|
<li>Automatic delisting of idle nodes <sup>To be implemented</sup></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h5>Other things</h5>
|
||||||
|
<p>Other ideas that may make it into this tool:</p>
|
||||||
|
<ul>
|
||||||
|
<li>SMTP integration</li>
|
||||||
|
<li>PGP signed mail and mail verification</li>
|
||||||
|
<li>SQRL simple authentication <small>(so there is 1 less username/password you need to remember)</small></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>To get started, please <a href="{{ url('login') }}">login</a>.</p>
|
||||||
|
|
||||||
|
<h4>Open Source</h4>
|
||||||
|
<p>FTN Clearing House is build with Open Source software. At it's core, PHP drives this web UI and the interaction with nodes.</p>
|
||||||
|
<p>This web UI has been inspired by the great work at <a href="https://int10h.org">int10h.org</a>. If you have ideas to make it even better, please send me a message, or submit your comments in <a href="https://dev.leenooks.net/bbs/clrghouz">gitlab</a></p>
|
||||||
|
@endsection
|
@ -1,34 +1,28 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
@section('htmlheader')
|
@section('htmlheader')
|
||||||
@include('layouts.partials.htmlheader')
|
@include('layouts.partials.htmlheader')
|
||||||
@show
|
@show
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div id="app">
|
<div id="nav" style="padding-bottom: 5px;">
|
||||||
@include('layouts.partials.mainheader')
|
@include('layouts.partials.topmenu')
|
||||||
|
|
||||||
<!-- Content Wrapper. Contains page content -->
|
|
||||||
<div class="content">
|
|
||||||
@include('layouts.partials.contentheader')
|
|
||||||
|
|
||||||
<!-- Main content -->
|
|
||||||
<section class="content">
|
|
||||||
<div id="content">
|
|
||||||
<!-- Your Page Content Here -->
|
|
||||||
@yield('main-content')
|
|
||||||
</div>
|
|
||||||
</section><!-- /.content -->
|
|
||||||
</div><!-- /.content-wrapper -->
|
|
||||||
|
|
||||||
@include('layouts.partials.footer')
|
|
||||||
|
|
||||||
{{-- Scripts --}}
|
|
||||||
@section('scripts')
|
|
||||||
@include('layouts.partials.scripts')
|
|
||||||
|
|
||||||
@yield('page-scripts')
|
|
||||||
@show
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="content" class="with-sidebar">
|
||||||
|
<a class="anchor" id="top"></a>
|
||||||
|
@yield('main-content')
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="footer" class="shifted">
|
||||||
|
@include('layouts.partials.footer')
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{-- Scripts --}}
|
||||||
|
@section('scripts')
|
||||||
|
@include('layouts.partials.scripts')
|
||||||
|
|
||||||
|
@yield('page-scripts')
|
||||||
|
@show
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,3 +1 @@
|
|||||||
<div id="footer">
|
<a href="/" id="getback">{{ request()->getHost() }}</a> © {{ \Carbon\Carbon::now()->year }} Alterego
|
||||||
<a href="/" id="getback">{{ request()->getHost() }}</a> © {{ \Carbon\Carbon::now()->year }} Alterego
|
|
||||||
</div>
|
|
@ -3,12 +3,9 @@
|
|||||||
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
<meta name="description" content="{{ $decription ?? '' }}">
|
<meta name="description" content="{{ $decription ?? '' }}">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
<link rel="stylesheet" href="{{ asset('bootstra.386/css/bootstrap.min.css') }}">
|
<link href="{{ asset('oldschool/css/main.css') }}" rel="stylesheet" media="screen" type="text/css">
|
||||||
|
|
||||||
@if (file_exists('css/fixes.css'))
|
<link rel="icon" type="image/png" href="{{ asset('favicon.ico') }}">
|
||||||
<link rel="stylesheet" href="{{ asset('css/fixes.css') }}">
|
|
||||||
@endif
|
|
||||||
|
|
||||||
<link rel="icon" type="image/png" href="{{ asset('/favicon.ico') }}">
|
|
||||||
</head>
|
</head>
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
<nav class="navbar main-header navbar-nav navbar-expand bg-ansi-blue">
|
|
||||||
<h1 class="navbar-brand fg-ansi-white mt-2">{{ $title ?? config('app.name') }}</h1>
|
|
||||||
|
|
||||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
|
||||||
<span class="navbar-toggler-icon"></span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<div class="collapse navbar-collapse pt-3" id="navbarSupportedContent">
|
|
||||||
<!-- Add icons to the links using the .nav-icon class with font-awesome or any other icon font library -->
|
|
||||||
@include('layouts.partials.topmenu')
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
@ -1,2 +0,0 @@
|
|||||||
<script type="text/javascript" src="{{ asset('//cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js') }}" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous"></script>
|
|
||||||
<script type="text/javascript" src="{{ asset('/bootstra.386/js/bootstrap.bundle.min.js') }}"></script>
|
|
@ -1,53 +1,98 @@
|
|||||||
<ul class="navbar-nav mr-auto">
|
<div id="nav-menu">
|
||||||
<li class="nav-item active">
|
<h1>{{ $title ?? config('app.name') }}</h1>
|
||||||
<a class="nav-link" href="{{ url('/') }}">Home</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
@auth
|
<ul id="navlist-desktop">
|
||||||
<li class="nav-item dropdown">
|
<li><a href="{{ url('/') }}" class="@if(preg_match('#^/#',request()->path()))thispage @endif"><span>Home</span></a></li>
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="false" aria-expanded="false"> <span class="nav-label">System </span></a>
|
<li><a href="{{ url('about') }}" class="@if(preg_match('#^about#',request()->path()))thispage @endif"><span>About</span></a></li>
|
||||||
<ul class="dropdown-menu">
|
<li><a href="{{ url('help') }}" class="@if(preg_match('#^help#',request()->path()))thispage @endif"><span>Help</span></a></li>
|
||||||
<li class="nav-item"><a class="dropdown-item disabled" href="{{ url('setup') }}">Setup</a></li>
|
@can('admin')
|
||||||
<li class="dropdown-submenu">
|
<li><a href="{{ url('setup') }}" class="@if(preg_match('#^setup#',request()->path()))thispage @endif"><span>Setup</span></a></li>
|
||||||
<a class="nav-item dropdown-item dropdown-toggle" href="#" data-toggle="dropdown" role="button" aria-haspopup="false" aria-expanded="false"><span class="nav-label">Services </span></a>
|
@endcan
|
||||||
<ul class="dropdown-menu">
|
@if(preg_match('#^/network/#',request()->path()))
|
||||||
<li class="nav-item"><a class="dropdown-item disabled" href="{{ url('setup/binkp') }}">BinkP</a></li>
|
<li><a href="{{ url('join') }}" class="@if(preg_match('#^join#',request()->path()))thispage @endif"><span>Join</span></a></li>
|
||||||
<li class="nav-item"><a class="dropdown-item disabled" href="{{ url('setup/emsi') }}">EMSI</a></li>
|
@endif
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
|
||||||
<li class="nav-item"><a class="dropdown-item disabled" href="{{ url('users') }}">Users</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li class="nav-item dropdown">
|
<ul style="float: right;">
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="false" aria-expanded="false"> <span class="nav-label">FTN </span></a>
|
@auth
|
||||||
<ul class="dropdown-menu">
|
<li><a href="{{ url('logout') }}"><span>Logout</span></a></li>
|
||||||
<li class="nav-item"><a class="dropdown-item" href="{{ url('ftn/domain') }}">Domains</a></li>
|
@endauth
|
||||||
<li class="nav-item"><a class="dropdown-item" href="{{ url('ftn/zone') }}">Zones</a></li>
|
@guest
|
||||||
<li class="nav-item"><a class="dropdown-item" href="{{ url('ftn/node') }}">Nodes</a></li>
|
<li><a href="{{ url('login') }}"><span>Login</span></a></li>
|
||||||
</ul>
|
@endguest
|
||||||
</li>
|
</ul>
|
||||||
@endauth
|
|
||||||
|
|
||||||
@guest
|
{{--
|
||||||
<li class="nav-item dropdown">
|
<div id="fontwidget">
|
||||||
<a class="nav-link" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Networks</a>
|
<span id="row1">
|
||||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
Text mode font:
|
||||||
@foreach (\App\Models\Zone::active()->public()->get() as $o)
|
</span>
|
||||||
<a class="dropdown-item" href="{{ url('network',['id'=>$o->name]) }}" title="{{ $o->description }}">{{ $o->name }}</a>
|
<span id="row2">
|
||||||
@endforeach
|
<a id="togglefonts" class="on" href="#-" onclick="toggleFonts();">[✓]</a>
|
||||||
|
<a id="selectfont1" class="on" href="#-" onclick="switchFont(1);">1</a>
|
||||||
|
<a id="selectfont2" href="#-" onclick="switchFont(2);" class="on">2</a>
|
||||||
|
<a id="selectfont3" href="#-" onclick="switchFont(3);" class="on">3</a>
|
||||||
|
<a id="selectfont4" href="#-" onclick="switchFont(4);" class="on">4</a>
|
||||||
|
<a id="selectfont5" href="#-" onclick="switchFont(5);" class="on">5</a>
|
||||||
|
<a id="selectfont6" href="#-" onclick="switchFont(6);" class="on">6</a>
|
||||||
|
</span>
|
||||||
|
<span id="currentfont">
|
||||||
|
IBM VGA 8x16
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
--}}
|
||||||
|
|
||||||
|
{{--
|
||||||
|
@todo Get rid of the CSS values if they arenot used, then delete this
|
||||||
|
<noscript>
|
||||||
|
<div id="fontwidget-no-js">
|
||||||
|
<div class="grn">Enable JavaScript for full functionality of all site features.</div>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</noscript>
|
||||||
@endguest
|
--}}
|
||||||
</ul>
|
|
||||||
|
|
||||||
<ul class="navbar-nav float-right">
|
{{--
|
||||||
<li class="nav-item">
|
@todo Is this required?
|
||||||
@auth
|
<div id="mobile-nav-content">
|
||||||
<a class="nav-link" href="{{ url('logout') }}">Logout</a>
|
<ul>
|
||||||
@endauth
|
<li>Oldschool PC Fonts:</li>
|
||||||
@guest
|
<li class="nobullet"><a href="../"><span>Home</span></a></li>
|
||||||
<a class="nav-link" href="{{ url('login') }}">Login</a>
|
<li><a class="thispage"><span>Fonts</span></a></li>
|
||||||
@endguest
|
<li><a href="../readme/"><span>Readme</span></a></li>
|
||||||
</li>
|
<li><a href="../showcase/"><span>Showcase</span></a></li>
|
||||||
</ul>
|
<li><a href="../download/"><span>Download</span></a></li>
|
||||||
|
</ul>
|
||||||
|
<div class="mobile-button" id="mobile-button-burger" onclick="toggleSidebar();"> ≡ </div>
|
||||||
|
<div class="mobile-button" id="mobile-button-fontwidget" onclick="toggleFontWidget();">Aa</div>
|
||||||
|
</div>
|
||||||
|
--}}
|
||||||
|
|
||||||
|
<div id="sidebar">
|
||||||
|
<div id="sidebar-scroller">
|
||||||
|
@auth
|
||||||
|
Jump to section:
|
||||||
|
<dl>
|
||||||
|
<dt><a href="#" >FTN Networks</a></dt>
|
||||||
|
<dd><a href="{{ url('ftn/domain') }}">Domains</a></dd>
|
||||||
|
<dd><a href="{{ url('ftn/zones') }}" >Zones</a></dd>
|
||||||
|
<dd><a href="{{ url('ftn/nodes') }}" >Nodes</a></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
<dt><a href="#" >Users</a></dt>
|
||||||
|
<dd><a href="{{ url('user/add') }}" >Create</a></dd>
|
||||||
|
<dd><a href="{{ url('user/list') }}">List</a></dd>
|
||||||
|
</dl>
|
||||||
|
@endauth
|
||||||
|
@guest
|
||||||
|
Explore:
|
||||||
|
<dl>
|
||||||
|
<dt><a href="#" >FTN Networks</a></dt>
|
||||||
|
@foreach (\App\Models\Zone::active()->public()->get() as $o)
|
||||||
|
<dd><a href="{{ url('network',['id'=>$o->name]) }}" title="{{ $o->description }}">{{ $o->name }}</a></dd>
|
||||||
|
@endforeach
|
||||||
|
</dl>
|
||||||
|
@endguest
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@ -1,34 +0,0 @@
|
|||||||
@extends('layouts.app')
|
|
||||||
|
|
||||||
@section('main-content')
|
|
||||||
<div class="nopadme pb-3">
|
|
||||||
<h2 class="fg-ansi-white">About the FTN Clearing House</h2>
|
|
||||||
<p>Welcome to the FTN Clearing House.</p>
|
|
||||||
<p>The FTN Clearing House (FCH) is both a FTN Mailer and FTN message tosser, where mail is stored internally in a DB. FCH can also hatch and toss files into FTN networks for up/downstream nodes.</p>
|
|
||||||
<p>It was created as an idea to bring modern technology and capabilities to a legacy computing network that existed in the 1970's, 1980's and 1990's (before the Internet basically).</p>
|
|
||||||
|
|
||||||
<h3>For the BBS Sysop</h3>
|
|
||||||
<p class="pw">For the BBS sysop, the FTN Clearing House has the following features:</p>
|
|
||||||
<ul class="pw">
|
|
||||||
<li>Supports BINKP network transfers</li>
|
|
||||||
<li>Supports EMSI network transfers</li>
|
|
||||||
<li>Supports PING responses <sup>*</sup></li>
|
|
||||||
<li>Proxy mode, if you want your BBS to have our main address <sup>*</sup></li>
|
|
||||||
<li>A consistent reliable echomail/netmail hub for your BBSes.<br>
|
|
||||||
If you have more than 1 BBS, then the Clearing House can receive all your mail from your uplinks and feed them to your BBSes.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h3>For the FTN network operator</h3>
|
|
||||||
<p class="pw">For the FTN network operator, the FTN Clearing House has the following features:</p>
|
|
||||||
<ul class="pw">
|
|
||||||
<li>Supports BINKP network transfers</li>
|
|
||||||
<li>Supports EMSI network transfers</li>
|
|
||||||
<li>Supports PING and TRACE responses <sup>*</sup></li>
|
|
||||||
<li>Nodelist Management <sup>*</sup></li>
|
|
||||||
<li>Network Applications <sup>*</sup></li>
|
|
||||||
<li>Dynamic mail bundling for downstream nodes <sup>*</sup></li>
|
|
||||||
<li>Automatic delisting of idle nodes <sup>*</sup></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
@endsection
|
|
@ -27,8 +27,8 @@ Auth::routes([
|
|||||||
]);
|
]);
|
||||||
Route::get('logout',[LoginController::class,'logout']);
|
Route::get('logout',[LoginController::class,'logout']);
|
||||||
|
|
||||||
Route::get('/',[HomeController::class,'welcome']);
|
Route::redirect('/','about');
|
||||||
Route::get('home',[HomeController::class,'home']);
|
Route::view('about','about');
|
||||||
|
|
||||||
Route::get('ftn/domain',[DomainController::class,'home']);
|
Route::get('ftn/domain',[DomainController::class,'home']);
|
||||||
Route::match(['get','post'],'ftn/domain/addedit/{o?}',[DomainController::class,'add_edit'])
|
Route::match(['get','post'],'ftn/domain/addedit/{o?}',[DomainController::class,'add_edit'])
|
||||||
|
Loading…
Reference in New Issue
Block a user