Compare commits
No commits in common. "master" and "1.0.7" have entirely different histories.
@ -8,14 +8,11 @@ $framework_routes = [
|
|||||||
],
|
],
|
||||||
'/novaconium/login' => [
|
'/novaconium/login' => [
|
||||||
'post' => 'NOVACONIUM/authenticate',
|
'post' => 'NOVACONIUM/authenticate',
|
||||||
'get' => 'NOVACONIUM/auth/login'
|
'get' => 'NOVACONIUM/login'
|
||||||
],
|
],
|
||||||
'/novaconium/dashboard' => [
|
'/novaconium/dashboard' => [
|
||||||
'get' => 'NOVACONIUM/dashboard'
|
'get' => 'NOVACONIUM/dashboard'
|
||||||
],
|
],
|
||||||
'/novaconium/settings' => [
|
|
||||||
'get' => 'NOVACONIUM/settings'
|
|
||||||
],
|
|
||||||
'/novaconium/pages' => [
|
'/novaconium/pages' => [
|
||||||
'get' => 'NOVACONIUM/pages'
|
'get' => 'NOVACONIUM/pages'
|
||||||
],
|
],
|
||||||
@ -41,8 +38,8 @@ $framework_routes = [
|
|||||||
'post' => 'NOVACONIUM/message_save'
|
'post' => 'NOVACONIUM/message_save'
|
||||||
],
|
],
|
||||||
'/novaconium/logout' => [
|
'/novaconium/logout' => [
|
||||||
'post' => 'NOVACONIUM/auth/logout',
|
'post' => 'NOVACONIUM/logout',
|
||||||
'get' => 'NOVACONIUM/auth/logout'
|
'get' => 'NOVACONIUM/logout'
|
||||||
],
|
],
|
||||||
'/novaconium/sitemap.xml' => [
|
'/novaconium/sitemap.xml' => [
|
||||||
'get' => 'NOVACONIUM/sitemap'
|
'get' => 'NOVACONIUM/sitemap'
|
||||||
|
|||||||
@ -1,11 +0,0 @@
|
|||||||
<?php
|
|
||||||
$data = array_merge($data, [
|
|
||||||
'title' => 'Novaconium Login Page',
|
|
||||||
'pageclass' => 'novaconium'
|
|
||||||
]);
|
|
||||||
// Don't come here if logged in
|
|
||||||
if ($session->get('username')) {
|
|
||||||
$redirect->url('/novaconium/dashboard');
|
|
||||||
makeitso();
|
|
||||||
}
|
|
||||||
view('@novacore/auth/login');
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
<?php
|
|
||||||
$data = array_merge($data, [
|
|
||||||
'title' => 'Coming Soon',
|
|
||||||
'heading' => 'Coming Soon',
|
|
||||||
'countdown' => true,
|
|
||||||
'launch_date' => '2026-01-01T00:00:00'
|
|
||||||
]);
|
|
||||||
|
|
||||||
view('@novacore/coming-soon', $data);
|
|
||||||
@ -1,8 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
$data = array_merge($data, [
|
$data = array_merge($data, [
|
||||||
'title' => 'Novaconium Dashboard Page',
|
'title' => 'Novaconium Dashboard Page',
|
||||||
'pageclass' => 'novaconium',
|
'pageclass' => 'novaconium'
|
||||||
'pageid' => 'controlPanel'
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if ( empty($session->get('username'))) {
|
if ( empty($session->get('username'))) {
|
||||||
|
|||||||
@ -3,7 +3,6 @@
|
|||||||
$data = array_merge($data, [
|
$data = array_merge($data, [
|
||||||
'title' => 'Novaconium Edit Page',
|
'title' => 'Novaconium Edit Page',
|
||||||
'pageclass' => 'novaconium',
|
'pageclass' => 'novaconium',
|
||||||
'pageid' => 'controlPanel',
|
|
||||||
'editor' => 'ace'
|
'editor' => 'ace'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,6 @@ $data = [
|
|||||||
'empty_users' => false,
|
'empty_users' => false,
|
||||||
'show_login' => false,
|
'show_login' => false,
|
||||||
'token' => $session->get('token'),
|
'token' => $session->get('token'),
|
||||||
'pageclass' => 'novaconium',
|
|
||||||
'title' => 'Novaconium Admin'
|
'title' => 'Novaconium Admin'
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
9
controllers/login.php
Normal file
9
controllers/login.php
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?php
|
||||||
|
$data['title'] = 'Novaconium Login Page';
|
||||||
|
|
||||||
|
// Don't come here if logged in
|
||||||
|
if ($session->get('username')) {
|
||||||
|
$redirect->url('/novaconium/dashboard');
|
||||||
|
makeitso();
|
||||||
|
}
|
||||||
|
view('@novacore/login');
|
||||||
@ -2,8 +2,7 @@
|
|||||||
|
|
||||||
$data = array_merge($data, [
|
$data = array_merge($data, [
|
||||||
'title' => 'Novaconium Messages',
|
'title' => 'Novaconium Messages',
|
||||||
'pageclass' => 'novaconium',
|
'pageclass' => 'novaconium'
|
||||||
'pageid' => 'controlPanel'
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if ( empty($session->get('username'))) {
|
if ( empty($session->get('username'))) {
|
||||||
|
|||||||
@ -2,8 +2,7 @@
|
|||||||
|
|
||||||
$data = array_merge($data, [
|
$data = array_merge($data, [
|
||||||
'title' => 'Novaconium Pages',
|
'title' => 'Novaconium Pages',
|
||||||
'pageclass' => 'novaconium',
|
'pageclass' => 'novaconium'
|
||||||
'pageid' => 'controlPanel'
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if ( empty($session->get('username'))) {
|
if ( empty($session->get('username'))) {
|
||||||
|
|||||||
@ -1,15 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
$data = array_merge($data, [
|
|
||||||
'title' => 'Novaconium Settings',
|
|
||||||
'pageclass' => 'novaconium',
|
|
||||||
'pageid' => 'controlPanel'
|
|
||||||
]);
|
|
||||||
|
|
||||||
if ( empty($session->get('username'))) {
|
|
||||||
$redirect->url('/novaconium/login');
|
|
||||||
$messages->error('You are not loggedin');
|
|
||||||
makeitso();
|
|
||||||
}
|
|
||||||
|
|
||||||
view('@novacore/settings', $data);
|
|
||||||
10
docs/Sass.md
10
docs/Sass.md
@ -21,13 +21,3 @@ Compressed:
|
|||||||
docker run --rm -v "$(pwd):/usr/src/app" -w /usr/src/app sass-container --style=compressed sass/novaconium.sass skeleton/novaconium/public/css/novaconium.css
|
docker run --rm -v "$(pwd):/usr/src/app" -w /usr/src/app sass-container --style=compressed sass/novaconium.sass skeleton/novaconium/public/css/novaconium.css
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Dev:
|
|
||||||
```bash
|
|
||||||
docker run --rm \
|
|
||||||
-v "$(pwd)/sass:/usr/src/sass" \
|
|
||||||
-v "/home/nick/tmp/novaproject/novaconium/public/css:/usr/src/css" \
|
|
||||||
-w /usr/src \
|
|
||||||
sass-container \
|
|
||||||
sass sass/novaconium.sass css/novaconium.css --no-source-map --style=compressed
|
|
||||||
```
|
|
||||||
@ -1,94 +0,0 @@
|
|||||||
body#coming-soon
|
|
||||||
display: flex
|
|
||||||
justify-content: center
|
|
||||||
align-items: center
|
|
||||||
height: 100%
|
|
||||||
padding: 1rem
|
|
||||||
box-sizing: border-box
|
|
||||||
margin: 0
|
|
||||||
text-align: center
|
|
||||||
color: #eee
|
|
||||||
font-family: 'Segoe UI', Roboto, sans-serif
|
|
||||||
background-size: cover
|
|
||||||
background-repeat: no-repeat
|
|
||||||
background-position: center center
|
|
||||||
background-attachment: fixed
|
|
||||||
|
|
||||||
.container
|
|
||||||
max-width: 600px
|
|
||||||
background-color: rgba(30, 30, 30, 0.89)
|
|
||||||
padding: 2rem
|
|
||||||
border-radius: 8px
|
|
||||||
box-shadow: 0 0 20px rgba(0,0,0,0.5)
|
|
||||||
|
|
||||||
h1
|
|
||||||
font-size: 3rem
|
|
||||||
margin-bottom: 1rem
|
|
||||||
animation: pulse 1.5s infinite
|
|
||||||
|
|
||||||
p
|
|
||||||
font-size: 1.2rem
|
|
||||||
opacity: 0.85
|
|
||||||
margin-bottom: 1.5rem
|
|
||||||
|
|
||||||
.countdown
|
|
||||||
font-size: 2rem
|
|
||||||
font-weight: bold
|
|
||||||
margin: 1rem 0 2rem 0
|
|
||||||
|
|
||||||
form.newsletter
|
|
||||||
display: flex
|
|
||||||
flex-direction: column
|
|
||||||
gap: 0.5rem
|
|
||||||
margin-top: 1rem
|
|
||||||
|
|
||||||
input[type="email"]
|
|
||||||
padding: 0.5rem
|
|
||||||
font-size: 1rem
|
|
||||||
border: 1px solid #666
|
|
||||||
border-radius: 4px
|
|
||||||
background: rgba(255,255,255,0.05)
|
|
||||||
color: #eee
|
|
||||||
|
|
||||||
button
|
|
||||||
padding: 0.5rem
|
|
||||||
font-size: 1rem
|
|
||||||
border: 1px solid #1e90ff
|
|
||||||
border-radius: 4px
|
|
||||||
background: #1e90ff
|
|
||||||
color: #fff
|
|
||||||
cursor: pointer
|
|
||||||
transition: background 0.2s
|
|
||||||
|
|
||||||
&:hover
|
|
||||||
background: #1565c0
|
|
||||||
|
|
||||||
.social-icons
|
|
||||||
margin-top: 2rem
|
|
||||||
display: flex
|
|
||||||
justify-content: center
|
|
||||||
gap: 1rem
|
|
||||||
|
|
||||||
a
|
|
||||||
display: inline-flex
|
|
||||||
align-items: center
|
|
||||||
justify-content: center
|
|
||||||
width: 40px
|
|
||||||
height: 40px
|
|
||||||
font-size: 1.5rem
|
|
||||||
color: #eee
|
|
||||||
text-decoration: none
|
|
||||||
transition: color 0.2s
|
|
||||||
|
|
||||||
&:hover
|
|
||||||
color: #1e90ff
|
|
||||||
|
|
||||||
i
|
|
||||||
font-style: normal
|
|
||||||
|
|
||||||
|
|
||||||
@keyframes pulse
|
|
||||||
0%, 100%
|
|
||||||
opacity: 0.8
|
|
||||||
50%
|
|
||||||
opacity: 1
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
body#controlPanel
|
|
||||||
|
|
||||||
footer
|
|
||||||
padding: 1rem
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
body#controlPanel
|
|
||||||
|
|
||||||
header
|
|
||||||
padding: 0
|
|
||||||
|
|
||||||
h1#biglogo
|
|
||||||
padding: 10px 0 0 0
|
|
||||||
margin: 0
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
body#controlPanel
|
|
||||||
|
|
||||||
div#panel
|
|
||||||
|
|
||||||
main#content
|
|
||||||
flex: 1
|
|
||||||
padding: 20px 40px
|
|
||||||
min-width: 0
|
|
||||||
background-color: #0b0b0bd6
|
|
||||||
border-left: 2px solid #104910
|
|
||||||
|
|
||||||
@ -1,22 +0,0 @@
|
|||||||
@use '../abstracts' as *
|
|
||||||
|
|
||||||
body#controlPanel
|
|
||||||
div#panel
|
|
||||||
div#cp-menu
|
|
||||||
background-color: #000
|
|
||||||
width: 360px
|
|
||||||
padding: 0
|
|
||||||
white-space: nowrap
|
|
||||||
|
|
||||||
ul#cp-nav
|
|
||||||
list-style: none
|
|
||||||
margin: 0
|
|
||||||
padding: 20px 0 0 0
|
|
||||||
|
|
||||||
li a
|
|
||||||
display: block
|
|
||||||
border-bottom: 1px solid $border-light
|
|
||||||
padding: 4px 10px
|
|
||||||
|
|
||||||
&:hover
|
|
||||||
background-color: #222
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
body#controlPanel
|
|
||||||
|
|
||||||
div#panel
|
|
||||||
display: flex
|
|
||||||
flex-direction: row
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
@forward 'header';
|
|
||||||
@forward 'panel';
|
|
||||||
@forward 'menu';
|
|
||||||
@forward 'main';
|
|
||||||
@forward 'footer';
|
|
||||||
|
|
||||||
body#controlPanel
|
|
||||||
h1
|
|
||||||
font-family: "VT323", "Courier New", "SF Mono", "Fira Code", Consolas, monospace
|
|
||||||
font-size: 48px
|
|
||||||
@ -3,7 +3,7 @@
|
|||||||
@use '../abstracts' as *
|
@use '../abstracts' as *
|
||||||
@use 'sass:color' // For color.adjust()—non-deprecated color tweaks
|
@use 'sass:color' // For color.adjust()—non-deprecated color tweaks
|
||||||
|
|
||||||
body#controlPanel
|
body.novaconium
|
||||||
// Simplified tab styling: Square borders, no rounds
|
// Simplified tab styling: Square borders, no rounds
|
||||||
.tab-container
|
.tab-container
|
||||||
margin: space('lg') auto
|
margin: space('lg') auto
|
||||||
|
|||||||
@ -74,7 +74,7 @@ body.novaconium
|
|||||||
display: inline-flex
|
display: inline-flex
|
||||||
align-items: center
|
align-items: center
|
||||||
background: color.adjust($accent-light, $alpha: -0.2)
|
background: color.adjust($accent-light, $alpha: -0.2)
|
||||||
color: #fff
|
color: $accent-light
|
||||||
padding: space('xs') space('sm')
|
padding: space('xs') space('sm')
|
||||||
border-radius: 4px
|
border-radius: 4px
|
||||||
font-size: 12px
|
font-size: 12px
|
||||||
|
|||||||
@ -2,5 +2,3 @@
|
|||||||
@use 'abstracts' as *
|
@use 'abstracts' as *
|
||||||
@use 'base' as *
|
@use 'base' as *
|
||||||
@use 'framework' as *
|
@use 'framework' as *
|
||||||
@use 'controlPanel' as *
|
|
||||||
@use 'coming-soon' as *
|
|
||||||
@ -9,7 +9,6 @@ services:
|
|||||||
- "/etc/localtime:/etc/localtime:ro"
|
- "/etc/localtime:/etc/localtime:ro"
|
||||||
- ./novaconium:/data
|
- ./novaconium:/data
|
||||||
- ./data/logs:/var/log/apache2 # Optional Logs
|
- ./data/logs:/var/log/apache2 # Optional Logs
|
||||||
- "./logs:/data/logs"
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
networks:
|
||||||
- internal
|
- internal
|
||||||
|
|||||||
@ -1,28 +0,0 @@
|
|||||||
<?php
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
header('Content-Type: text/plain; charset=UTF-8');
|
|
||||||
header('Cache-Control: public, max-age=604800');
|
|
||||||
|
|
||||||
echo <<<TXT
|
|
||||||
/*
|
|
||||||
* This humans.txt was generated by the framework.
|
|
||||||
* You may edit or remove it without affecting your site.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* FRAMEWORK */
|
|
||||||
Built With: Novaconium PHP
|
|
||||||
repo: https://git.4lt.ca/4lt/novaconium
|
|
||||||
Human: Nick Yeoman
|
|
||||||
url: https://www.nickyeoman.com/
|
|
||||||
Occupation: Linux Systems Administrator / Software Framework Author
|
|
||||||
Location: Canada
|
|
||||||
|
|
||||||
/* SITE */
|
|
||||||
Built with: Novaconium PHP
|
|
||||||
Runs on: CORXN Container
|
|
||||||
Optimized for: Humans
|
|
||||||
|
|
||||||
/* META */
|
|
||||||
There are four lights.
|
|
||||||
TXT;
|
|
||||||
@ -1,7 +1,2 @@
|
|||||||
<?php
|
<?php
|
||||||
$data = array_merge($data, [
|
|
||||||
'title' => 'Welcome to Novaconium Index Page',
|
|
||||||
'pageclass' => 'novaconium'
|
|
||||||
]);
|
|
||||||
|
|
||||||
view('index');
|
view('index');
|
||||||
|
|||||||
@ -1,18 +0,0 @@
|
|||||||
<?php
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
// Send proper headers
|
|
||||||
header('Content-Type: text/plain; charset=UTF-8');
|
|
||||||
header('Cache-Control: public, max-age=604800');
|
|
||||||
|
|
||||||
// Use $config['base_url'] as-is
|
|
||||||
$baseUrl = $config['base_url'];
|
|
||||||
|
|
||||||
echo <<<TXT
|
|
||||||
# robots.txt for sites powered by Novaconium framework
|
|
||||||
|
|
||||||
User-agent: *
|
|
||||||
Disallow: /novaconium/
|
|
||||||
|
|
||||||
Sitemap: {$baseUrl}/sitemap.xml
|
|
||||||
TXT;
|
|
||||||
@ -2,11 +2,5 @@
|
|||||||
$routes = [
|
$routes = [
|
||||||
'/' => [
|
'/' => [
|
||||||
'get' => 'index'
|
'get' => 'index'
|
||||||
],
|
|
||||||
'/robots.txt' => [
|
|
||||||
'get' => 'robots'
|
|
||||||
],
|
|
||||||
'/humans.txt' => [
|
|
||||||
'get' => 'humans'
|
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
File diff suppressed because one or more lines are too long
1
skeleton/novaconium/public/css/novaconium.css.map
Normal file
1
skeleton/novaconium/public/css/novaconium.css.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"sourceRoot":"","sources":["../../../../sass/abstracts/_variables.sass","../../../../sass/base/_reset.sass","../../../../sass/base/_background.sass","../../../../sass/framework/_main.sass","../../../../sass/framework/_ui.sass","../../../../sass/framework/_forms.sass","../../../../sass/framework/_login_form.sass","../../../../sass/framework/_logo.sass","../../../../sass/framework/_tabs.sass","../../../../sass/framework/_edit_page.sass","../../../../sass/framework/_tooltip.sass","../../../../sass/framework/_ace.sass","../../../../sass/framework/_tags.sass"],"names":[],"mappings":"CAoEA,MACE,0BACA,8BACA,+BACA,mCACA,iCACA,oCACA,qCACA,qCACA,kCACA,yCACA,8CC1EF,EACE,sBAEF,KACE,eACA,gBACA,uBACA,iBDWQ,aCVR,MDYW,KCVb,KACE,SACA,UACA,YDgBW,kCCfX,iBDIQ,aCHR,MDKW,KCJX,iBAGF,kBACE,gBACA,gBACA,gBACA,qBAEF,GACE,iBAEF,GACE,eAEF,GACE,kBAEF,GACE,iBAEF,GACE,kBAEF,GACE,eAGF,EACE,eAEF,MACE,kBAEF,SACE,gBAEF,KACE,kBAGF,EACE,MDnCa,eCoCb,qBACA,sCACA,iCAEA,gBACE,oBDzCW,eC0CX,aAGJ,MACE,eACA,mBAEF,GACE,oBAGF,WACE,aACA,iBACA,qCACA,kCACA,MD7DW,KCgEb,cACE,YDvDU,uDCwDV,iBACA,oCACA,qBACA,kBAEF,IACE,aACA,YACA,cACA,oCACA,kBACA,SACE,gBACA,UAGJ,MACE,WACA,yBACA,aAEF,MACE,cACA,gBACA,2CAEF,GACE,gBAGF,6BACE,oBACA,kBACA,oCACA,MDpGW,KCqGX,oCACA,kBACA,aAEA,qDACE,aACA,aDxGW,eCyGX,wCAEJ,OACE,eACA,qCAEA,gBACE,WACA,mBAGJ,IACE,eACA,YACA,kBAEF,OACE,aAGF,GACE,YACA,WACA,oCACA,aAGF,gBACE,iCACA,mBAGF,aACE,KACE,2BACA,uBAEJ,YACE,8BACA,MDnJW,KCsJb,kBACE,8BACA,MDxJW,KEtBb,gBACI,sBACA,0uKCEF,iCACE,aACA,UACA,uBACA,uBACA,mBAGF,wBACE,aACA,cACA,aACA,SACA,iBHGM,aGFN,gCAEF,2BACE,YACA,cACA,gBACA,UACA,oBACA,iBHNM,aGON,gCAEF,4BACE,6CAEA,uCACE,mBAEJ,2BACE,cACA,mBACA,qBACA,MHjBS,KGmBT,kEACE,oCACA,MHlBS,eGmBT,kBAGJ,0BACE,iCACE,sBACA,mBAEF,iDACE,WACA,gBACA,cAEF,yBACE,gBCtDJ,qBACE,2EACA,kBACA,gCACA,MJcS,KIbT,qBACA,kBACA,sCACA,sCAGF,uBACE,kBAGF,+EACE,mBACA,YACA,eACA,kBACA,iBAEF,0BACE,oCACA,qBACA,4BAEF,2BACE,sCACA,uBACA,8BAEF,0BACE,gCACA,MJdS,iBIeT,kCACA,gBACA,mBAGF,6BACE,WACA,sCAEA,gEACE,sCACA,gBAEF,gCACE,qCACA,MJ/BS,iBIgCT,gBClDF,uDACE,mBAEA,0EACE,WACA,gBAEJ,2DACE,kBAGF,gOAIE,gCACA,sCACA,WACA,cACA,kBACA,2EAEA,wPACE,aLHO,eKIP,2CACA,aAEJ,gEACE,aLRS,eKWX,+DACE,iBLZS,eKaT,mBACA,YACA,mBACA,kBACA,eACA,2EAEA,0IACE,sBACA,sCAGJ,6CACE,ML3BO,iBK6BT,6CACE,ML7BS,eK+BT,mDACE,MLlCO,iBKmCP,0BCzDR,uBAEE,UAIA,+HAGE,WACA,gBACA,aACA,mBACA,sBACA,eACA,sCACA,kBACA,WNEM,aMDN,MNGS,6CMCT,uUACA,4BACA,gCACA,qBACA,kBAEF,4CACE,iVACA,4BACA,gCACA,qBACA,kBAEF,2CACE,WNZW,eMaX,aNbW,eMcX,eACA,0BAEA,iDACE,WNlBS,eMmBT,uCAGF,kDACE,aACA,kBCnDJ,yBACE,kBACA,qBACA,eACA,gBACA,gBAEA,iCACE,WACA,kBACA,MACA,OACA,QACA,SACA,gJACA,0BACA,WACA,oBAGF,gCACE,WACA,kBACA,MACA,OACA,QACA,WACA,qEACA,YACA,kCAEF,+BACE,cACA,kCACA,iBACA,gBACA,WACA,oBACA,gBACA,yBAGA,yFACA,mDAEF,8BACE,cACA,kCACA,iBACA,gBACA,WACA,qBACA,iBACA,0EACA,mDAIA,qCACE,8BAEN,gBACE,GACE,SACF,KACE,UAEJ,kBACE,QACE,uBACF,IACE,+BACF,IACE,gCACF,IACE,8BACF,IACE,gCCvEJ,+BACE,mBACA,WRcM,aQZR,yBACE,aACA,iBRWQ,eQVR,6CAEF,4BACE,mBACA,WRMQ,eQLR,sCACA,mBACA,eACA,eACA,gBACA,kBACA,WACA,YRSQ,uDQPR,kCACE,iCAEF,wCACE,iBAEF,mCACE,iBRZI,aQaJ,uCACA,MRTS,eQUT,iBAEJ,6BACE,aACA,eACA,iBRpBM,aQqBN,MRnBS,KQoBT,YAEA,oCACE,cC5CN,iBACI,gBAEA,wBACI,WACA,iBACA,aAEJ,qBACI,gBACA,oBCRN,yBACE,kBACA,qBACA,YACA,eACA,MViBW,eUhBX,mBACA,QAEA,sCACE,kBACA,YACA,iBVMM,eULN,MVMO,KULP,gBACA,gBACA,cACA,eACA,aACA,UACA,uBACA,eACA,oCACA,oBAEA,6CACE,WACA,kBACA,SACA,UACA,iBACA,mBACA,sEAEJ,4CACE,mBACA,UAGJ,8BACE,kBACA,aC1CJ,kBACE,WACA,iBAEF,YACE,aACA,gCACA,YXuBU,uDWpBV,wBACE,qCACA,kCACA,iDAEF,0BACE,mCAEF,8CACE,oCAGF,6CACE,yCCtBF,+BACE,kBACA,SACA,OACA,QACA,iBACA,gBACA,WZWQ,eYVR,sCACA,gBACA,0BACA,gBACA,SACA,UACA,WACA,UACA,kBACA,uBAEA,mDACE,UACA,mBAEF,kCACE,qBACA,eACA,MZPO,KYQP,eACA,sCAEA,mFAEE,8BACA,MZXO,eYaT,6CACE,mBAEN,4BACE,kBAGF,4BACE,aACA,eACA,WACA,mBACA,sCACA,eACA,WZ/BQ,eYgCR,gBACA,cAEA,kCACE,YACA,yBACA,MZrCO,KYsCP,YZ5BM,uDY6BN,eACA,OACA,gBACA,aAEA,+CACE,MZ3CK,iBY6CX,0BACE,oBACA,mBACA,8BACA,MZhDW,eYiDX,qBACA,kBACA,eACA,gBACA,gBACA,uBACA,mBAEA,sCACE,gBACA,YACA,cACA,eACA,mBACA,eACA,UACA,cAEA,4CACE,WAWN,2EACE","file":"novaconium.css"}
|
||||||
@ -1,4 +1,16 @@
|
|||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
|
* Novaconium Framework Entry Point
|
||||||
|
*
|
||||||
|
* This is the main entry point for the Novaconium framework.
|
||||||
|
* It sets up the environment, loads necessary components,
|
||||||
|
* and runs the application.
|
||||||
|
*
|
||||||
|
* @package Novaconium
|
||||||
|
* @author Nick Yeoman <dev@4lt.ca>
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
// Enable error reporting for development environments
|
// Enable error reporting for development environments
|
||||||
// error_reporting(E_ALL);
|
// error_reporting(E_ALL);
|
||||||
// ini_set('display_errors', 1);
|
// ini_set('display_errors', 1);
|
||||||
|
|||||||
@ -1,71 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>{{ title | default('Coming Soon') }}</title>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<link rel="stylesheet" href="/css/novaconium.css">
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
background: url("{{ bg_image | default('https://w.wallhaven.cc/full/5y/wallhaven-5yymk9.jpg') }}") no-repeat center center fixed;
|
|
||||||
background-size: cover;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body id="coming-soon">
|
|
||||||
<div class="container">
|
|
||||||
<h1>{{ heading | default('Coming Soon') }}</h1>
|
|
||||||
{% block content %}{% endblock %}
|
|
||||||
|
|
||||||
{% if countdown %}
|
|
||||||
<div class="countdown" id="countdown"></div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{# TODO: listmonk #}
|
|
||||||
<form class="newsletter" action="#" method="post">
|
|
||||||
<label for="email">Subscribe to our newsletter:</label>
|
|
||||||
<input type="email" id="email" name="email" placeholder="Your email address" required>
|
|
||||||
<button type="submit">Subscribe</button>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
{# Social media icons using Font Awesome #}
|
|
||||||
<div class="social-icons">
|
|
||||||
{% block social %}{% endblock %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% if countdown %}
|
|
||||||
<script>
|
|
||||||
{% if countdown %}
|
|
||||||
{% set default_launch = "now"|date_modify("+30 days")|date("Y-m-d\TH:i:s") %}
|
|
||||||
const launchDate = new Date('{{ launch_date | default(default_launch) }}').getTime();
|
|
||||||
const countdownEl = document.getElementById('countdown');
|
|
||||||
|
|
||||||
function updateCountdown() {
|
|
||||||
const now = new Date().getTime();
|
|
||||||
const distance = launchDate - now;
|
|
||||||
|
|
||||||
if (distance <= 0) {
|
|
||||||
countdownEl.innerText = 'Launched!';
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const days = Math.floor(distance / (1000*60*60*24));
|
|
||||||
const hours = Math.floor((distance % (1000*60*60*24)) / (1000*60*60));
|
|
||||||
const mins = Math.floor((distance % (1000*60*60)) / (1000*60));
|
|
||||||
const secs = Math.floor((distance % (1000*60)) / 1000);
|
|
||||||
|
|
||||||
countdownEl.innerText = `${days}d ${hours}h ${mins}m ${secs}s`;
|
|
||||||
}
|
|
||||||
|
|
||||||
updateCountdown();
|
|
||||||
setInterval(updateCountdown, 1000);
|
|
||||||
{% endif %}
|
|
||||||
</script>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@ -1,44 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html class="no-js" lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
{% include ['@override/head.html.twig', '@novaconium/head.html.twig'] %}
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body id="{{ pageid | default('pageid') }}" class="{{ pageclass | default('pageclass') }}" >
|
|
||||||
|
|
||||||
{# Page Header #}
|
|
||||||
<header>
|
|
||||||
<h1 id="biglogo"><span class="main">Novaconium</span></h1>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<!-- Main Content Of The Page -->
|
|
||||||
<div id="panel" class="container">
|
|
||||||
|
|
||||||
{% include ['@novaconium/cp/menu.html.twig'] %}
|
|
||||||
|
|
||||||
<main id="content">
|
|
||||||
{% block content %}{% endblock %}
|
|
||||||
</main>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{# Page Footer #}
|
|
||||||
<footer>
|
|
||||||
<div class="copyright">© {{ 'now' | date('Y') }} Novaconium</div>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
{% include '@novaconium/javascript/page-edit.html.twig' %}
|
|
||||||
|
|
||||||
{% if editor == 'ace' %}
|
|
||||||
{% include '@novaconium/javascript/ace.html.twig' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if debug is not empty %}
|
|
||||||
<div id="debug">
|
|
||||||
<h2>Debugging Information</h2>
|
|
||||||
{{ debug|raw }}
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
</body></html>
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
<div id="cp-menu">
|
|
||||||
<ul id="cp-nav">
|
|
||||||
<li><a href="/novaconium/dashboard">Dashboard</a></li>
|
|
||||||
<li><a href="/novaconium/pages">Pages</a></li>
|
|
||||||
<li><a href="/novaconium/messages">Messages</a></li>
|
|
||||||
<li><a href="/novaconium/settings">Settings</a></li>
|
|
||||||
<li><a href="/novaconium/logout">Logout</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
@ -1 +1,3 @@
|
|||||||
<div class="copyright">© {{ 'now' | date('Y') }} Novaconium</div>
|
<!--
|
||||||
|
What goes in the footer html tag
|
||||||
|
-->
|
||||||
@ -1,32 +0,0 @@
|
|||||||
{% extends '@novaconium/coming-soon/index.html.twig' %}
|
|
||||||
|
|
||||||
{% set bg_image = "https://i.4lt.ca/4lt/waterBubbles.webp" %}
|
|
||||||
{% set default_launch = "now"|date_modify("+30 days")|date("Y-m-d\TH:i:s") %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<p>Our website is under construction. We’re working hard to bring you a better experience.</p>
|
|
||||||
<p>Stay tuned for updates!</p>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block social %}
|
|
||||||
<a href="mailto:you@example.com" title="Email">
|
|
||||||
<i class="fa-solid fa-envelope"></i>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="tel:+1234567890" title="Phone">
|
|
||||||
<i class="fa-solid fa-phone"></i>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="#" title="Twitter">
|
|
||||||
<i class="fab fa-twitter"></i>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="#" title="Facebook">
|
|
||||||
<i class="fab fa-facebook-f"></i>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="#" title="Instagram">
|
|
||||||
<i class="fab fa-instagram"></i>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
{% endblock %}
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
{% extends '@novaconium/cp/control-panel.html.twig' %}
|
{% extends '@novaconium/master.html.twig' %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h1>{{title}}</h1>
|
<h1>{{title}}</h1>
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
{% extends '@novaconium/cp/control-panel.html.twig' %}
|
{% extends '@novaconium/master.html.twig' %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h2>Edit Page - {{ title }}</h2>
|
<h2>Edit Page - {{ title }}</h2>
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
{% extends '@novaconium/cp/control-panel.html.twig' %}
|
{% extends '@novaconium/master.html.twig' %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h1>{{title}}</h1>
|
<h1>{{title}}</h1>
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
{% extends '@novaconium/cp/control-panel.html.twig' %}
|
{% extends '@novaconium/master.html.twig' %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h1>{{title}}</h1>
|
<h1>{{title}}</h1>
|
||||||
|
|||||||
@ -1,6 +0,0 @@
|
|||||||
{% extends '@novaconium/cp/control-panel.html.twig' %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<h1>{{title}}</h1>
|
|
||||||
<p>Settings will go here.</p>
|
|
||||||
{% endblock %}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user