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
|
||||
{
|
||||
public function home() {
|
||||
return view('home');
|
||||
}
|
||||
|
||||
public function network(string $name)
|
||||
{
|
||||
return view('networks')
|
||||
->with('content',$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">
|
||||
@section('htmlheader')
|
||||
@include('layouts.partials.htmlheader')
|
||||
@show
|
||||
|
||||
<body>
|
||||
<div id="app">
|
||||
@include('layouts.partials.mainheader')
|
||||
|
||||
<!-- 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 id="nav" style="padding-bottom: 5px;">
|
||||
@include('layouts.partials.topmenu')
|
||||
</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>
|
||||
</html>
|
@ -1,3 +1 @@
|
||||
<div id="footer">
|
||||
<a href="/" id="getback">{{ request()->getHost() }}</a> © {{ \Carbon\Carbon::now()->year }} Alterego
|
||||
</div>
|
||||
<a href="/" id="getback">{{ request()->getHost() }}</a> © {{ \Carbon\Carbon::now()->year }} Alterego
|
@ -3,12 +3,9 @@
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<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="stylesheet" href="{{ asset('css/fixes.css') }}">
|
||||
@endif
|
||||
|
||||
<link rel="icon" type="image/png" href="{{ asset('/favicon.ico') }}">
|
||||
<link rel="icon" type="image/png" href="{{ asset('favicon.ico') }}">
|
||||
</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">
|
||||
<li class="nav-item active">
|
||||
<a class="nav-link" href="{{ url('/') }}">Home</a>
|
||||
</li>
|
||||
<div id="nav-menu">
|
||||
<h1>{{ $title ?? config('app.name') }}</h1>
|
||||
|
||||
@auth
|
||||
<li class="nav-item dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="false" aria-expanded="false"> <span class="nav-label">System </span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li class="nav-item"><a class="dropdown-item disabled" href="{{ url('setup') }}">Setup</a></li>
|
||||
<li class="dropdown-submenu">
|
||||
<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>
|
||||
<ul class="dropdown-menu">
|
||||
<li class="nav-item"><a class="dropdown-item disabled" href="{{ url('setup/binkp') }}">BinkP</a></li>
|
||||
<li class="nav-item"><a class="dropdown-item disabled" href="{{ url('setup/emsi') }}">EMSI</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item"><a class="dropdown-item disabled" href="{{ url('users') }}">Users</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<ul id="navlist-desktop">
|
||||
<li><a href="{{ url('/') }}" class="@if(preg_match('#^/#',request()->path()))thispage @endif"><span>Home</span></a></li>
|
||||
<li><a href="{{ url('about') }}" class="@if(preg_match('#^about#',request()->path()))thispage @endif"><span>About</span></a></li>
|
||||
<li><a href="{{ url('help') }}" class="@if(preg_match('#^help#',request()->path()))thispage @endif"><span>Help</span></a></li>
|
||||
@can('admin')
|
||||
<li><a href="{{ url('setup') }}" class="@if(preg_match('#^setup#',request()->path()))thispage @endif"><span>Setup</span></a></li>
|
||||
@endcan
|
||||
@if(preg_match('#^/network/#',request()->path()))
|
||||
<li><a href="{{ url('join') }}" class="@if(preg_match('#^join#',request()->path()))thispage @endif"><span>Join</span></a></li>
|
||||
@endif
|
||||
</ul>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="false" aria-expanded="false"> <span class="nav-label">FTN </span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li class="nav-item"><a class="dropdown-item" href="{{ url('ftn/domain') }}">Domains</a></li>
|
||||
<li class="nav-item"><a class="dropdown-item" href="{{ url('ftn/zone') }}">Zones</a></li>
|
||||
<li class="nav-item"><a class="dropdown-item" href="{{ url('ftn/node') }}">Nodes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
@endauth
|
||||
<ul style="float: right;">
|
||||
@auth
|
||||
<li><a href="{{ url('logout') }}"><span>Logout</span></a></li>
|
||||
@endauth
|
||||
@guest
|
||||
<li><a href="{{ url('login') }}"><span>Login</span></a></li>
|
||||
@endguest
|
||||
</ul>
|
||||
|
||||
@guest
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Networks</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
@foreach (\App\Models\Zone::active()->public()->get() as $o)
|
||||
<a class="dropdown-item" href="{{ url('network',['id'=>$o->name]) }}" title="{{ $o->description }}">{{ $o->name }}</a>
|
||||
@endforeach
|
||||
{{--
|
||||
<div id="fontwidget">
|
||||
<span id="row1">
|
||||
Text mode font:
|
||||
</span>
|
||||
<span id="row2">
|
||||
<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>
|
||||
</li>
|
||||
@endguest
|
||||
</ul>
|
||||
</noscript>
|
||||
--}}
|
||||
|
||||
<ul class="navbar-nav float-right">
|
||||
<li class="nav-item">
|
||||
@auth
|
||||
<a class="nav-link" href="{{ url('logout') }}">Logout</a>
|
||||
@endauth
|
||||
@guest
|
||||
<a class="nav-link" href="{{ url('login') }}">Login</a>
|
||||
@endguest
|
||||
</li>
|
||||
</ul>
|
||||
{{--
|
||||
@todo Is this required?
|
||||
<div id="mobile-nav-content">
|
||||
<ul>
|
||||
<li>Oldschool PC Fonts:</li>
|
||||
<li class="nobullet"><a href="../"><span>Home</span></a></li>
|
||||
<li><a class="thispage"><span>Fonts</span></a></li>
|
||||
<li><a href="../readme/"><span>Readme</span></a></li>
|
||||
<li><a href="../showcase/"><span>Showcase</span></a></li>
|
||||
<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('/',[HomeController::class,'welcome']);
|
||||
Route::get('home',[HomeController::class,'home']);
|
||||
Route::redirect('/','about');
|
||||
Route::view('about','about');
|
||||
|
||||
Route::get('ftn/domain',[DomainController::class,'home']);
|
||||
Route::match(['get','post'],'ftn/domain/addedit/{o?}',[DomainController::class,'add_edit'])
|
||||
|
Loading…
Reference in New Issue
Block a user