Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
f928e87141 | |||
a6b241c7f0 | |||
a38d132e61 | |||
d7e8b586d7 | |||
ea120e09bc |
1
.gitignore
vendored
1
.gitignore
vendored
@ -65,3 +65,4 @@ vendor/canary/logs/*
|
||||
components/*
|
||||
mailhog.log
|
||||
uploads/*
|
||||
images/qr-codes/
|
||||
|
@ -35,7 +35,7 @@ New classes must be prefaced with a doc-block following this style:
|
||||
*
|
||||
* This is the admin controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This is the base admin controller. Every other admin controller should
|
||||
* extend this class.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This is the base api controller. Every other api controller should
|
||||
* extend this class.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This class handles all the hard-coded configurations.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
@ -69,14 +69,21 @@ class Config extends BedrockConfig {
|
||||
$html .= '<div class="col-lg-6">';
|
||||
$html .= $fieldHtml;
|
||||
$html .= '</div>';
|
||||
$html .= '</div>';
|
||||
if ( 'file' === $node['type'] ) {
|
||||
$html .= '<div class="mb-3 row">';
|
||||
$html .= '<h4 class="col-lg-3 col-form-label text-end">Current Image</h4>';
|
||||
$html .= '<h4 class="col-lg-3 col-form-label text-end">Current Value</h4>';
|
||||
$html .= '<div class="col-lg-6">';
|
||||
$html .= '<input type="text" class="form-control" name="'.$name.'Text" value="'.$node['value'] . '">';
|
||||
$html .= '</div>';
|
||||
$html .= '</div>';
|
||||
$html .= '<div class="mb-3 row">';
|
||||
$html .= '<h4 class="col-lg-3 col-form-label text-end">Current Image</h4>';
|
||||
$html .= '<div class="col-lg-6 d-flex justify-content-center">';
|
||||
$html .= '<img alt="configured image" src="{ROOT_URL}' . $node['value'] . '" class="img-circle img-fluid p-2 avatar-125">';
|
||||
$html .= '</div>';
|
||||
}
|
||||
$html .= '</div>';
|
||||
}
|
||||
|
||||
return Template::parse( $html );
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the main controller class.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the main TempusProject database model.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is our class for constructing and sending various kinds of emails.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -7,7 +7,7 @@
|
||||
* error reporting to easily define exactly what feedback you
|
||||
* would like to give.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -6,7 +6,7 @@
|
||||
* the application. It handles installing the application, installing and updating
|
||||
* models as well as the database, and generating and checking the htaccess file.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This class handles all the hard-coded permissions.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This class is used as a foundation for all plugins to build from.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This class handles all the hard-coded preferences.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the admin log controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the composer controller. Its only very effective when using composer for autoloading.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the error logs controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the groups admin controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the admin dashboard controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the admin app/user tokens controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
@ -36,6 +36,8 @@ class Images extends AdminController {
|
||||
APP_ROOT_DIRECTORY . 'app/plugins'
|
||||
];
|
||||
|
||||
private $spacer = [];
|
||||
|
||||
private $excludedDirectories = [
|
||||
'.',
|
||||
'..',
|
||||
@ -74,35 +76,17 @@ class Images extends AdminController {
|
||||
Views::view( 'admin.images.upload' );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private function getFolderObject( $folder, $subdirs = '' ) {
|
||||
$names = explode( DIRECTORY_SEPARATOR, $folder );
|
||||
$folderName = array_pop( $names );
|
||||
$out = [
|
||||
'spacer' => implode( '', $this->spacer ),
|
||||
'folderName' => $folderName,
|
||||
'location' => $folder,
|
||||
'subdirs' => $subdirs,
|
||||
];
|
||||
if ( ! empty( $subdirs ) ) {
|
||||
$out['folderexpand'] = '<i class="fa-solid fa-caret-down justify-content-end"></i>';
|
||||
$out['folderexpand'] = '<i class="fa fa-caret-down"></i>';
|
||||
} else {
|
||||
$out['folderexpand'] = '';
|
||||
}
|
||||
@ -116,7 +100,9 @@ class Images extends AdminController {
|
||||
if ( $top == $sub ) {
|
||||
$html = '';
|
||||
} else {
|
||||
$this->spacer[] = '-> ';
|
||||
$children = $this->generateFolderHtml( $sub );
|
||||
array_pop( $this->spacer );
|
||||
Components::set( 'parentfolderName', $object->folderName );
|
||||
$html = Views::simpleView( 'forms.folderSelectParent', $children );
|
||||
Components::set( 'parentfolderName', '' );
|
||||
@ -150,28 +136,6 @@ class Images extends AdminController {
|
||||
return $dirs;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
self::$title = 'Admin - Images';
|
||||
@ -199,38 +163,44 @@ class Images extends AdminController {
|
||||
Debug::error( 'There was an error with your upload.');
|
||||
Issues::add( 'error', [ 'There was an error with your upload.' => Check::userErrors() ] );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// if ( self::$token->create(
|
||||
// Input::post( 'name' ),
|
||||
// Input::post( 'notes' ),
|
||||
// Input::post( 'token_type' )
|
||||
// ) ) {
|
||||
// Session::flash( 'success', 'Token Created' );
|
||||
// Redirect::to( 'admin/images' );
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
Views::view( 'admin.images.create' );
|
||||
}
|
||||
|
||||
public function delete() {
|
||||
if ( self::$token->delete( [ $id ] ) ) {
|
||||
Session::flash( 'success', 'Token deleted.' );
|
||||
if ( ! Input::exists( 'fileLocation' ) ) {
|
||||
Session::flash( 'warning', 'Unknown image.' );
|
||||
Redirect::to( 'admin/images' );
|
||||
}
|
||||
|
||||
$fileLocation = Input::get('fileLocation');
|
||||
|
||||
// Ensure the file exists
|
||||
if ( ! file_exists( $fileLocation ) ) {
|
||||
Session::flash('error', 'File does not exist.');
|
||||
Redirect::to('admin/images');
|
||||
}
|
||||
|
||||
// Check if the file is an image
|
||||
$validMimeTypes = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'];
|
||||
$fileMimeType = mime_content_type( $fileLocation );
|
||||
|
||||
if ( ! in_array( $fileMimeType, $validMimeTypes ) ) {
|
||||
Session::flash('error', 'Invalid file type. Only images can be deleted.');
|
||||
Redirect::to('admin/images');
|
||||
}
|
||||
|
||||
// Attempt to delete the file
|
||||
if (@unlink($fileLocation)) {
|
||||
Session::flash('success', 'Image deleted.');
|
||||
} else {
|
||||
Session::flash('error', 'Failed to delete the image.');
|
||||
}
|
||||
|
||||
Redirect::to('admin/images');
|
||||
}
|
||||
|
||||
public function rename() {
|
||||
|
||||
if ( ! Input::exists( 'fileLocation' ) ) {
|
||||
Session::flash( 'warning', 'Unknown image.' );
|
||||
Redirect::to( 'admin/images' );
|
||||
@ -243,7 +213,6 @@ class Images extends AdminController {
|
||||
Issues::add( 'error', [ 'There was an error renaming the image.' => Check::userErrors() ] );
|
||||
} else {
|
||||
$result = $this->renameFile( Input::post( 'filelocation' ), Input::post( 'newname' ) );
|
||||
|
||||
if ( ! empty( $result ) ) {
|
||||
Session::flash( 'success', 'Image has been renamed.' );
|
||||
Redirect::to( 'admin/images' );
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the login logs controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the generic logs controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the installed plugins controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the admin routes/redirects controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the admin email controller. The only real use is to send out emails to the various lists.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the configuration and settings controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the admin app/user tokens controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the users admin controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the api authentication controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the api authentication controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the users' api controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the error controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the home or 'index' controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the user registration controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the user control panel controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* This is css used in the debuging console.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* This file provides dark mode styles to override existing Bootstrap 5 base styles.
|
||||
*
|
||||
* @version 3.0-dark
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
@ -12,6 +12,9 @@
|
||||
.context-main-border {
|
||||
border-color: #f5f5f5!important;
|
||||
}
|
||||
.context-main-border-other {
|
||||
border-color: #1e1e1e!important;
|
||||
}
|
||||
|
||||
.context-main-bg {
|
||||
background-color: #2c2c2c;
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* This file is for any css that should be applied site wide.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
@ -12,6 +12,9 @@
|
||||
.context-main-border {
|
||||
border-color: #1e1e1e!important;
|
||||
}
|
||||
.context-main-border-other {
|
||||
border-color: #f5f5f5!important;
|
||||
}
|
||||
|
||||
.context-main-bg {
|
||||
background-color: #f7f7f7;
|
||||
|
@ -2,7 +2,7 @@
|
||||
/**
|
||||
* app/functions/common.php
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 56 KiB |
BIN
app/images/ttp-gitlab.png
Normal file
BIN
app/images/ttp-gitlab.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 117 KiB |
Binary file not shown.
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 26 KiB |
Binary file not shown.
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 47 KiB |
116
app/js/main.js
116
app/js/main.js
@ -3,11 +3,68 @@
|
||||
*
|
||||
* This file is for 'access anywhere' javascript.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
let deferredPrompt;
|
||||
const installPrompt = document.getElementById("install-prompt");
|
||||
const installButton = document.getElementById("install-button");
|
||||
const dismissButton = document.querySelector("#install-prompt .btn-close");
|
||||
|
||||
// Check if the user previously dismissed the prompt
|
||||
if (!localStorage.getItem("pwaInstallDismissed")) {
|
||||
window.addEventListener("beforeinstallprompt", (event) => {
|
||||
event.preventDefault();
|
||||
deferredPrompt = event;
|
||||
installPrompt.classList.remove("d-none");
|
||||
installPrompt.classList.add("d-block"); // Show the prompt
|
||||
});
|
||||
}
|
||||
|
||||
// Handle Install Button Click
|
||||
if ( installButton ) {
|
||||
installButton.addEventListener("click", async () => {
|
||||
if (deferredPrompt) {
|
||||
deferredPrompt.prompt();
|
||||
const { outcome } = await deferredPrompt.userChoice;
|
||||
|
||||
if (outcome === "dismissed") {
|
||||
setInstallDismissed(); // Store that the user dismissed the prompt
|
||||
}
|
||||
|
||||
deferredPrompt = null; // Reset prompt
|
||||
installPrompt.classList.remove("d-block");
|
||||
installPrompt.classList.add("d-none");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Handle Close Button Click
|
||||
if ( dismissButton ) {
|
||||
dismissButton.addEventListener("click", () => {
|
||||
setInstallDismissed(); // Store that the user dismissed the prompt
|
||||
});
|
||||
}
|
||||
|
||||
// Function to remember user choice for 7 days
|
||||
function setInstallDismissed() {
|
||||
localStorage.setItem("pwaInstallDismissed", Date.now() + 7 * 24 * 60 * 60 * 1000);
|
||||
installPrompt.classList.remove("d-block"); // Hide the prompt
|
||||
installPrompt.classList.add("d-none");
|
||||
}
|
||||
|
||||
// Check if the 7-day period has passed
|
||||
if (localStorage.getItem("pwaInstallDismissed")) {
|
||||
const dismissUntil = parseInt(localStorage.getItem("pwaInstallDismissed"), 10);
|
||||
if (Date.now() < dismissUntil) {
|
||||
//
|
||||
} else {
|
||||
localStorage.removeItem("pwaInstallDismissed"); // Reset after 7 days
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Automatically selects/de-selects all check boxes associated with that field
|
||||
**/
|
||||
@ -80,14 +137,14 @@ function copyElementText( id ) {
|
||||
}
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
$('select').each(function() {
|
||||
var selectedValue = $(this).attr('value');
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
document.querySelectorAll("select").forEach(function (select) {
|
||||
var selectedValue = select.getAttribute("value");
|
||||
if (selectedValue) {
|
||||
$(this).removeAttr('value');
|
||||
$(this).find('option').each(function() {
|
||||
if ($(this).attr('value') === selectedValue) {
|
||||
$(this).prop('selected', true);
|
||||
select.removeAttribute("value");
|
||||
select.querySelectorAll("option").forEach(function (option) {
|
||||
if (option.getAttribute("value") === selectedValue) {
|
||||
option.selected = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -179,11 +236,42 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
}
|
||||
|
||||
function toggleDarkModePref(value) {
|
||||
var fields = {};
|
||||
fields.prefName = 'darkMode';
|
||||
fields.prefValue = value;
|
||||
$.post( '/usercp/updatePref', fields ).done(function(response) {
|
||||
// alert('Timer updated successfully!');
|
||||
});
|
||||
var fields = new URLSearchParams();
|
||||
fields.append("prefName", "darkMode");
|
||||
fields.append("prefValue", value);
|
||||
|
||||
fetch("/usercp/updatePref", {
|
||||
method: "POST",
|
||||
body: fields,
|
||||
headers: {
|
||||
"Content-Type": "application/x-www-form-urlencoded",
|
||||
},
|
||||
})
|
||||
// .then(response => response.text()) // Handle response if needed
|
||||
.catch(error => console.error("Error:", error));
|
||||
}
|
||||
});
|
||||
|
||||
// this reverses the carets for the folderSelect
|
||||
document.querySelectorAll('[data-bs-toggle="collapse"]').forEach(button => {
|
||||
button.addEventListener('click', () => {
|
||||
setTimeout(() => {
|
||||
const icon = button.querySelector('i');
|
||||
|
||||
// Only proceed if the icon already has one of the relevant classes
|
||||
if (icon && (icon.classList.contains('fa-caret-down') || icon.classList.contains('fa-caret-up'))) {
|
||||
icon.classList.toggle('fa-caret-down', button.classList.contains('collapsed'));
|
||||
icon.classList.toggle('fa-caret-up', !button.classList.contains('collapsed'));
|
||||
}
|
||||
}, 150);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// this should load all popovers
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'));
|
||||
var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
|
||||
return new bootstrap.Popover(popoverTriggerEl);
|
||||
});
|
||||
});
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This class is used for the manipulation of the groups database table.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* Model for handling all logging.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This class is used for the manipulation of the routes database table.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -7,7 +7,7 @@
|
||||
* Notes: After refactor, the sessions will use ID's for short term, and Cookies
|
||||
* will use the token for long term storage
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This class is used for the manipulation of the tokens database table.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -8,7 +8,7 @@
|
||||
* @todo finish fixing the check functions that were migrated here
|
||||
* These could go in the Forms class?
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This is the Blog admin controller.
|
||||
*
|
||||
* @package TP Blog
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This is the blog controller.
|
||||
*
|
||||
* @package TP Blog
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This houses all of the form checking functions for this plugin.
|
||||
*
|
||||
* @package TP Blog
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This class is used for the manipulation of the blog database table.
|
||||
*
|
||||
* @package TP Blog
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This houses all of the main plugin info and functionality.
|
||||
*
|
||||
* @package TP Blog
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This is the loader for the blog template.
|
||||
*
|
||||
* @package TP Blog
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
* app/plugins/blog/templates/blog.tpl
|
||||
*
|
||||
* @package TP Blog
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
@ -130,7 +130,6 @@
|
||||
{FOOT}
|
||||
</div>
|
||||
<!-- Bootstrap core JavaScript and jquery -->
|
||||
<script language="JavaScript" crossorigin="anonymous" type="text/javascript" src="{JQUERY_CDN}jquery.min.js"></script>
|
||||
<script language="JavaScript" crossorigin="anonymous" type="text/javascript" src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js"></script>
|
||||
<script language="JavaScript" crossorigin="anonymous" type="text/javascript" src="{BOOTSTRAP_CDN}js/bootstrap.min.js"></script>
|
||||
<!-- Custom javascript for this template -->
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This is the loader for the rss template.
|
||||
*
|
||||
* @package TP Blog
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This is the bug report admin controller.
|
||||
*
|
||||
* @package TP BugReports
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This is the bug reports controller.
|
||||
*
|
||||
* @package TP BugReports
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This houses all of the form checking functions for this plugin.
|
||||
*
|
||||
* @package TP BugReports
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This class is used for the manipulation of the bugreports database table.
|
||||
*
|
||||
* @package TP BugReports
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This houses all of the main plugin info and functionality.
|
||||
*
|
||||
* @package TP BugReports
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This is the comments admin controller.
|
||||
*
|
||||
* @package TP Comments
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the Moderator controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This houses all of the form checking functions for this plugin.
|
||||
*
|
||||
* @package TP Comments
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -6,7 +6,7 @@
|
||||
* of the comments table.
|
||||
*
|
||||
* @package TP Comments
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This houses all of the main plugin info and functionality.
|
||||
*
|
||||
* @package TP Comments
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This is the contact admin controller.
|
||||
*
|
||||
* @package TP Contact
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This is the home controller for the contact plugin.
|
||||
*
|
||||
* @package TP Contact
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This houses all of the form checking functions for this plugin.
|
||||
*
|
||||
* @package TP Contact
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -7,7 +7,7 @@
|
||||
* @todo make this send a confirmation email
|
||||
*
|
||||
* @package TP Contact
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This houses all of the main plugin info and functionality.
|
||||
*
|
||||
* @package TP Contact
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the user messages controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* Houses all of the functions for the core messaging system.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This houses all of the main plugin info and functionality.
|
||||
*
|
||||
* @package TP Messages
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This is the notifications admin controller.
|
||||
*
|
||||
* @package TP Notifications
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This is the home controller for the notifications plugin.
|
||||
*
|
||||
* @package TP Notifications
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This houses all of the form checking functions for this plugin.
|
||||
*
|
||||
* @package TP Notifications
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This class is used for the manipulation of the notifications database table.
|
||||
*
|
||||
* @package TP Notifications
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This houses all of the main plugin info and functionality.
|
||||
*
|
||||
* @package TP Notifications
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This is the subscriptions admin controller.
|
||||
*
|
||||
* @package TP Subscribe
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This is the home controller for the subscribe plugin.
|
||||
*
|
||||
* @package TP Subscribe
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This houses all of the form checking functions for this plugin.
|
||||
*
|
||||
* @package TP Subscribe
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This class is used for the manipulation of the subscribers database table.
|
||||
*
|
||||
* @package TP Subscribe
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This houses all of the main plugin info and functionality.
|
||||
*
|
||||
* @package TP Subscribe
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is an example controller layout.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is an example model.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -5,7 +5,7 @@
|
||||
* This houses all of the main plugin info and functionality.
|
||||
*
|
||||
* @package TP XXXXXXXXXX
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -3,7 +3,7 @@
|
||||
<!--
|
||||
* app/resources/templates/example.tpl
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is an example loader for the example template.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the loader for the admin template.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -3,7 +3,7 @@
|
||||
<!--
|
||||
* app/templates/admin/admin.tpl
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
@ -28,27 +28,35 @@
|
||||
<!-- Main Content Area -->
|
||||
<div class="d-flex flex-grow-1">
|
||||
<!-- Side Navigation -->
|
||||
<div class="d-flex flex-column flex-shrink-0 p-3 text-bg-dark" style="width: 280px;">
|
||||
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-white text-decoration-none">
|
||||
<div class="d-flex flex-column p-md-3 text-bg-dark">
|
||||
<div class="collapse d-md-block" id="mainMenu">
|
||||
<a href="/" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-white text-decoration-none justify-content-center">
|
||||
<img src="{ROOT_URL}{LOGO}" class="bi me-2" width="40" height="32" role="img" aria-label="{SITENAME} Logo">
|
||||
<span class="fs-4">{SITENAME}</span>
|
||||
</a>
|
||||
<hr>
|
||||
<div class="border-top border-bottom border-white mt-4 mb-2 pt-3 pb-5">
|
||||
{ADMIN}
|
||||
{ADMIN_LINKS}
|
||||
{/ADMIN}
|
||||
<hr>
|
||||
<div class="d-flex align-items-center">
|
||||
</div>
|
||||
<div class="d-flex align-items-center p-2">
|
||||
{topNavRight}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Center Element -->
|
||||
<div class="flex-grow-1 d-flex flex-column">
|
||||
<!-- Top Navigation Bar -->
|
||||
<div class="p-2 text-bg-dark">
|
||||
<div class="d-flex flex-wrap align-items-center justify-content-center justify-content-lg-start">
|
||||
<div class="d-flex justify-content-between justify-content-md-center">
|
||||
<div class="d-flex flex-wrap align-items-center justify-content-lg-start">
|
||||
{topNavLeft}
|
||||
</div>
|
||||
<div class="mx-3 d-md-none">
|
||||
<button class="my-3 btn btn-lg btn-outline-light" type="button" data-bs-toggle="collapse" data-bs-target="#mainMenu" aria-controls="mainMenu" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<i class="fa fa-bars"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Main Content -->
|
||||
@ -66,26 +74,62 @@
|
||||
</div>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer class="border-top context-main-bg">
|
||||
<div class="container pb-4 pt-3 align-items-center">
|
||||
<div class="d-flex justify-content-between align-items-center context-main-bg">
|
||||
{COPY}
|
||||
<div class="col-6 col-md-2">
|
||||
<div class="material-switch">
|
||||
<div class="container mt-auto border-top context-main-border">
|
||||
<footer class="pt-0">
|
||||
<div class="d-md-block collapse" id="footerMenu">
|
||||
<div class="d-flex justify-content-between align-items-center py-2 my-2">
|
||||
<a href="/" class="text-decoration-none lh-1 d-flex align-items-center px-md-5 mx-md-5">
|
||||
<img src="{ROOT_URL}{LOGO}" class="bi me-2" width="40" height="32" alt="Joey Kimsey Logo">
|
||||
</a>
|
||||
<div class="material-switch d-flex align-items-center">
|
||||
<input name="dark-mode-toggle" type="checkbox" id="dark-mode-toggle" class="form-check-input">
|
||||
<label for="dark-mode-toggle" class="label-default"></label>
|
||||
</div>
|
||||
<ul class="list-unstyled d-flex align-items-center mb-0">
|
||||
<li class="ms-3">
|
||||
<a class="context-main" href="{ROOT_URL}fb">
|
||||
<span class="fa-brands fa-fw fa-facebook"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="ms-3">
|
||||
<a class="context-main" href="{ROOT_URL}twitter">
|
||||
<span class="fa-brands fa-fw fa-twitter"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="ms-3">
|
||||
<a class="context-main" href="{ROOT_URL}in">
|
||||
<span class="fa-brands fa-fw fa-linkedin"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="ms-3">
|
||||
<a class="context-main" href="{ROOT_URL}youtube">
|
||||
<span class="fa-brands fa-fw fa-youtube"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="ms-3">
|
||||
<a class="context-main" href="{ROOT_URL}git">
|
||||
<span class="fa-brands fa-fw fa-github"></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{SOCIAL}
|
||||
<div class="d-flex justify-content-center justify-content-md-center text-center text-md-center my-2">
|
||||
<span>© 2025 {SITENAME}, Powered by <a href="https://thetempusproject.com" class="text-decoration-none">The Tempus Project</a></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="d-md-none my-3 btn btn-lg context-main context-main-border" type="button" data-bs-toggle="collapse" data-bs-target="#footerMenu" aria-controls="footerMenu" aria-expanded="false" aria-label="Toggle footer navigation">
|
||||
<i class="fa fa-bars"></i>
|
||||
</button>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Bootstrap core JavaScript and jquery -->
|
||||
<script language="JavaScript" crossorigin="anonymous" type="text/javascript" src="{JQUERY_CDN}jquery.min.js"></script>
|
||||
<script language="JavaScript" crossorigin="anonymous" type="text/javascript" src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js"></script>
|
||||
<script language="JavaScript" crossorigin="anonymous" type="text/javascript" src="{BOOTSTRAP_CDN}js/bootstrap.min.js"></script>
|
||||
<!-- Custom javascript for this template -->
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the loader for the admin template.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
|
@ -4,7 +4,7 @@
|
||||
*
|
||||
* This is the loader for the default template.
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
@ -19,11 +19,19 @@ use TheTempusProject\Houdini\Classes\Components;
|
||||
use TheTempusProject\Bedrock\Classes\Config;
|
||||
use TheTempusProject\Bedrock\Functions\Input;
|
||||
use TheTempusProject\TheTempusProject as App;
|
||||
use Endroid\QrCode\Builder\Builder;
|
||||
use Endroid\QrCode\Encoding\Encoding;
|
||||
use Endroid\QrCode\ErrorCorrectionLevel;
|
||||
use Endroid\QrCode\Label\LabelAlignment;
|
||||
use Endroid\QrCode\Label\Font\OpenSans;
|
||||
use Endroid\QrCode\RoundBlockSizeMode;
|
||||
use Endroid\QrCode\Writer\PngWriter;
|
||||
use TheTempusProject\Hermes\Functions\Route as Routes;
|
||||
use TheTempusProject\Canary\Bin\Canary as Debug;
|
||||
|
||||
class DefaultLoader extends Loader {
|
||||
private static $loaded = false;
|
||||
const TEMPLATE_NAME = 'Default Tempus Project Template';
|
||||
const JQUERY_CDN = 'https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/';
|
||||
const BOOTSTRAP_CDN = 'https://cdn.jsdelivr.net/npm/bootstrap@3.3.6/dist/';
|
||||
const FONT_AWESOME_URL = 'https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/';
|
||||
|
||||
@ -36,20 +44,67 @@ class DefaultLoader extends Loader {
|
||||
if ( VENDOR_AUTOLOADED === true ) {
|
||||
Components::set( 'FONT_AWESOME_URL', '/vendor/fortawesome/font-awesome/css/' );
|
||||
Components::set( 'BOOTSTRAP_CDN', '/vendor/twbs/bootstrap/dist/' );
|
||||
Components::set( 'JQUERY_CDN', '/vendor/components/jquery/' );
|
||||
} else {
|
||||
Components::set( 'BOOTSTRAP_CDN', self::BOOTSTRAP_CDN );
|
||||
Components::set( 'JQUERY_CDN', self::JQUERY_CDN );
|
||||
Components::set( 'FONT_AWESOME_URL', self::FONT_AWESOME_URL );
|
||||
}
|
||||
$this->addJs( '<script language="JavaScript" crossorigin="anonymous" type="text/javascript" src="{ROOT_URL}app/js/main.js"></script>' );
|
||||
Components::setIfNull( 'LOGO', Config::getValue( 'main/logo' ) ?? TP_DEFAULT_LOGO );
|
||||
|
||||
if ( ! empty( Config::getValue( 'share/enabled' ) ) ) {
|
||||
$currentUrl = Routes::getAddress() . Input::get( 'url' );
|
||||
$folder = IMAGE_DIRECTORY . 'qr-codes' . DIRECTORY_SEPARATOR ;
|
||||
$filename = md5( $currentUrl ) . '.png';
|
||||
|
||||
if ( ! file_exists( $folder ) ) {
|
||||
Debug::Info( 'Creating Directory because it does not exist' );
|
||||
mkdir( $folder, 0777, true );
|
||||
}
|
||||
if ( ! empty( Config::getValue( 'share/qr' ) ) ) {
|
||||
if ( ! file_exists( $folder . $filename ) ) {
|
||||
Debug::Info( 'Creating qr-image because it does not exist' );
|
||||
$builder = new Builder(
|
||||
writer: new PngWriter(),
|
||||
writerOptions: [],
|
||||
validateResult: false,
|
||||
data: Routes::getAddress() . Input::get( 'url' ),
|
||||
encoding: new Encoding('UTF-8'),
|
||||
errorCorrectionLevel: ErrorCorrectionLevel::High,
|
||||
size: 200,
|
||||
margin: 10,
|
||||
roundBlockSizeMode: RoundBlockSizeMode::Margin,
|
||||
logoPath: APP_ROOT_DIRECTORY . DIRECTORY_SEPARATOR . Config::getValue( 'main/logo' ),
|
||||
logoResizeToWidth: 30,
|
||||
logoPunchoutBackground: true,
|
||||
labelText: Config::getValue( 'main/name' ),
|
||||
labelFont: new OpenSans(14),
|
||||
labelAlignment: LabelAlignment::Center
|
||||
);
|
||||
$result = $builder->build();
|
||||
$result->saveToFile( $folder . $filename );
|
||||
}
|
||||
Components::set( 'QR_CODE','<img src="{ROOT_URL}images/qr-codes/' . $filename . '" alt="QR Code" class="img-fluid mb-2">' );
|
||||
} else {
|
||||
Components::setIfNull( 'QR_CODE', '' );
|
||||
}
|
||||
Components::setIfNull( 'SHARE_IMAGE', Views::simpleView( 'footer.share' ) );
|
||||
} else {
|
||||
Components::setIfNull( 'SHARE_IMAGE', '' );
|
||||
}
|
||||
|
||||
if ( ! empty( Config::getValue( 'main/pwa' ) ) ) {
|
||||
Components::setIfNull( 'PWA', Views::simpleView( 'pwa') );
|
||||
} else {
|
||||
Components::setIfNull( 'PWA', '' );
|
||||
}
|
||||
|
||||
Components::setIfNull( 'COPY', Views::simpleView( 'footer.copy') );
|
||||
Components::setIfNull( 'SOCIAL', Views::simpleView( 'footer.social') );
|
||||
Components::prepend( 'FOOTER_LEFT', Views::simpleView( 'footer.left', Navigation::getMenuLinks( App::CONTACT_FOOTER_MENU_NAME ) ) );
|
||||
Components::prepend( 'FOOTER_CENTER', Views::simpleView( 'footer.center', Navigation::getMenuLinks( App::INFO_FOOTER_MENU_NAME ) ) );
|
||||
Components::prepend( 'FOOTER_RIGHT', Views::simpleView( 'footer.right') );
|
||||
Components::setIfNull( 'FOOT', Views::simpleView( 'footer.container') );
|
||||
|
||||
/**
|
||||
* Top-Nav
|
||||
*/
|
||||
|
@ -3,7 +3,7 @@
|
||||
<!--
|
||||
* app/templates/default/default.tpl
|
||||
*
|
||||
* @version 3.0
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
@ -91,6 +91,7 @@
|
||||
</div>
|
||||
</div>
|
||||
{/ISSUES}
|
||||
{PWA}
|
||||
<!-- Main Page Content -->
|
||||
{CONTENT}
|
||||
</div>
|
||||
@ -100,7 +101,6 @@
|
||||
<!-- User Pref to control Dark mode across frontend and backend -->
|
||||
<input type="hidden" name="dark-mode-pref" id="dark-mode-pref" value="{DARK_MODE_SETTING}">
|
||||
<!-- Bootstrap core JavaScript and jquery -->
|
||||
<script crossorigin="anonymous" src="{JQUERY_CDN}jquery.min.js"></script>
|
||||
<script crossorigin="anonymous" src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js"></script>
|
||||
<script crossorigin="anonymous" src="{BOOTSTRAP_CDN}js/bootstrap.min.js"></script>
|
||||
<!-- Custom javascript for this template -->
|
||||
|
@ -23,7 +23,7 @@
|
||||
</h2>
|
||||
<div id="collapse1" class="accordion-collapse collapse" aria-labelledby="generalHeading1" data-bs-parent="#generalAccordion">
|
||||
<div class="ml-5 accordion-body context-main context-other-bg" id="general1">
|
||||
<span class="text-lead">
|
||||
<span class="text-lead text-primary">
|
||||
Yes, {SITENAME} is a responsive web-app and it works seamlessly on mobile devices.
|
||||
The front-end is powered by Bootstrap 5.2.3 the original design system used by twitter.
|
||||
In addition to the powerful tools behind the scenes, every page on {SITENAME} has been tested to work on devices of all sizes.
|
||||
@ -39,7 +39,7 @@
|
||||
</h2>
|
||||
<div id="collapse2" class="accordion-collapse collapse" aria-labelledby="generalHeading2" data-bs-parent="#generalAccordion">
|
||||
<div class="accordion-body context-main context-other-bg" id="general2">
|
||||
<span class="text-lead">
|
||||
<span class="text-lead text-primary">
|
||||
Yes, in more ways than one.
|
||||
Since {SITENAME} is designed as a responsive web-app, its accessible from any browser connected to the internet.
|
||||
Behind the scenes, the app can be installed on any server hardware and has been tested with both nginx and Apache web-servers.
|
||||
@ -55,7 +55,7 @@
|
||||
</h2>
|
||||
<div id="collapse3" class="accordion-collapse collapse" aria-labelledby="generalHeading3" data-bs-parent="#generalAccordion">
|
||||
<div class="accordion-body context-main context-other-bg" id="general3">
|
||||
<span class="text-lead">
|
||||
<span class="text-lead text-primary">
|
||||
{SITENAME} is open source and available free of charge through <a href="{ROOT_URL}libraries/ttp/git" class="text-decoration-none">GitLab</a> and <a href="{ROOT_URL}libraries/ttp/packagist" class="text-decoration-none">Packagist</a>.
|
||||
The developer behind the project is <a href="https://joeykimsey.com/" class="text-decoration-none">Joey Kimsey</a> and he can be contacted through his website for development services.
|
||||
</span>
|
||||
|
@ -1,4 +1,5 @@
|
||||
<div class="col-12 col-sm-6 col-md-3 col-lg-2 mb-3 text-center">
|
||||
{SHARE_IMAGE}
|
||||
<h5>Dark Mode</h5>
|
||||
<div class="material-switch px-4 mt-2">
|
||||
<input name="dark-mode-toggle" type="checkbox" id="dark-mode-toggle" class="form-check-input">
|
||||
|
17
app/views/footer/share.html
Normal file
17
app/views/footer/share.html
Normal file
@ -0,0 +1,17 @@
|
||||
<div class="text-center mb-3">
|
||||
<h5 class="mb-3">Share</h5>
|
||||
<div class="px-4 mt-2">
|
||||
<!-- Share Button (visible only on medium+ screens) -->
|
||||
<button type="button" class="btn btn-outline-primary"
|
||||
data-bs-toggle="popover" data-bs-html="true" title="Share"
|
||||
data-bs-content='
|
||||
{QR_CODE}
|
||||
<div class="d-flex justify-content-between">
|
||||
<a href="https://www.reddit.com/submit?type=LINK&url={CURRENT_URL_SAFE}" target="_blank" class="mx-1 btn btn-sm btn-outline-danger"><i class="fa-brands fa-fw fa-reddit"></i></a>
|
||||
<a href="https://www.facebook.com/sharer/sharer.php?u={CURRENT_URL_SAFE}" target="_blank" class="mx-1 btn btn-sm btn-outline-primary"><i class="fa-brands fa-fw fa-facebook"></i></a>
|
||||
<a href="https://twitter.com/intent/tweet?url={CURRENT_URL_SAFE}" target="_blank" class="mx-1 btn btn-sm btn-outline-info"><i class="fa-brands fa-fw fa-x"></i></a>
|
||||
</div>'>
|
||||
Share
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
@ -1,14 +1,14 @@
|
||||
Folder: <strong>{FOLDER_SELECT_ROOT}</strong>
|
||||
<div class="list-group mx-0 mx-auto">
|
||||
{LOOP}
|
||||
<label class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div class="d-flex align-items-center">
|
||||
<input class="form-check-input me-2" type="radio" name="folderSelect" value="{location}" data-bs-toggle="collapse" data-bs-target="#top-{folderName}">
|
||||
<span>
|
||||
<label class="list-group-item d-flex align-items-center">
|
||||
<input class="form-check-input me-2" type="radio" name="folderSelect" value="{location}">
|
||||
<button class="btn d-flex justify-content-between align-items-center w-100" type="button" aria-expanded="false" aria-controls="top-{folderName}" data-bs-toggle="collapse" data-bs-target="#top-{folderName}">
|
||||
<span class="d-flex flex-grow-1">
|
||||
{folderName}
|
||||
</span>
|
||||
</div>
|
||||
{folderexpand}
|
||||
<i class="fa fa-solid fa-caret-down"></i>
|
||||
</button>
|
||||
</label>
|
||||
<div id="top-{folderName}" class="collapse">
|
||||
{subdirs}
|
||||
|
@ -1,12 +1,12 @@
|
||||
{LOOP}
|
||||
<label class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div class="d-flex align-items-center">
|
||||
<input class="form-check-input me-2" type="radio" name="folderSelect" value="{location}" data-bs-toggle="collapse" data-bs-target="#{parentfolderName}-{folderName}">
|
||||
<span>
|
||||
{folderName}
|
||||
<label class="list-group-item d-flex align-items-center">
|
||||
<input class="form-check-input me-2" type="radio" name="folderSelect" value="{location}">
|
||||
<button class="btn d-flex justify-content-between align-items-center w-100" type="button" aria-expanded="false" aria-controls="{parentfolderName}-{folderName}" data-bs-toggle="collapse" data-bs-target="#{parentfolderName}-{folderName}">
|
||||
<span class="d-flex flex-grow-1">
|
||||
{spacer}{folderName}
|
||||
</span>
|
||||
</div>
|
||||
{folderexpand}
|
||||
<i class="fa fa-solid fa-caret-down"></i>
|
||||
</button>
|
||||
</label>
|
||||
<div id="{parentfolderName}-{folderName}" class="collapse">
|
||||
{subdirs}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user