Merge branch 'main' into allthebookmarks-com

This commit is contained in:
Joey Kimsey
2025-02-05 06:43:05 -05:00
parent 72cbdc222e
commit da6adc35b0
94 changed files with 329 additions and 189 deletions

View File

@ -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]

View File

@ -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]

View File

@ -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 );
}

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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 = [
'.',
'..',
@ -97,12 +99,13 @@ class Images extends AdminController {
$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 +119,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', '' );
@ -223,12 +228,38 @@ class Images extends AdminController {
}
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' ) ) {

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]
@ -31,7 +31,7 @@ use TheTempusProject\Bedrock\Functions\Session;
class Usercp extends Controller {
public function __construct() {
parent::__construct();
if ( !App::$isLoggedIn ) {
if ( ! App::$isLoggedIn ) {
Session::flash( 'notice', 'You must be logged in to view this page!' );
Redirect::home();
}

View File

@ -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]

View File

@ -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;

View File

@ -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;

View File

@ -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]

BIN
app/images/ttp-gitlab.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

View File

@ -3,7 +3,7 @@
*
* 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]
@ -80,14 +80,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;
}
});
}
@ -178,12 +178,43 @@ 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!');
});
function toggleDarkModePref(value) {
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);
});
});

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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 -->

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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 -->

View File

@ -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]

View File

@ -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]
@ -23,7 +23,6 @@ use TheTempusProject\TheTempusProject as App;
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,10 +35,8 @@ 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>' );

View File

@ -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]
@ -100,7 +100,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="https://cdn.jsdelivr.net/npm/masonry-layout@4.2.2/dist/masonry.pkgd.min.js" integrity="sha384-GNFwBvfVxBkLMJpYMOABq3c+d3KnQxudP/mGPkzpZSTYykLBNsZEnG2D9G/X/+7D"></script>
<script crossorigin="anonymous" src="{BOOTSTRAP_CDN}js/bootstrap.min.js"></script>

View File

@ -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}

View File

@ -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}

View File

@ -4,7 +4,7 @@
*
* Handles the application startup by requiring our autoloaders and loading constants.
*
* @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]
@ -46,6 +46,8 @@ if ( ! VENDOR_AUTOLOADED && ! defined( 'TEMPUS_PROJECT_AUTOLOADED' ) ) {
function ttp_autoload() {
$Autoloader = new Autoloader;
if ( ! VENDOR_AUTOLOADED ) {
$Autoloader->addNamespace(
APP_SPACE . '\Controllers',
CONTROLLER_DIRECTORY,
@ -73,8 +75,9 @@ function ttp_autoload() {
);
$Autoloader->includeFolder(FUNCTIONS_DIRECTORY);
$Autoloader->register();
}
// handle plugins
// Composer cannot handle autoloading plugins dynamically as they are added, so regardless, we need hermes for this part.
$pluginDirectoryArray = Plugin::getPluginDirectories();
foreach ( $pluginDirectoryArray as $pluginName => $locations ) {
foreach ( $locations as $location ) {

View File

@ -6,7 +6,7 @@
* In this file we initiate all models we will need, authenticate sessions, set
* template objects, and call appload to initialize the appropriate controller/method.
*
* @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]

View File

@ -23,7 +23,6 @@
],
"require":
{
"components/jquery": "1.9.*",
"fortawesome/font-awesome": "4.7",
"thetempusproject/bedrock": "1.1.5",
"thetempusproject/canary": "1.0.9",
@ -39,14 +38,12 @@
"classmap":
[
"app/classes",
"app/models"
],
"psr-4":
{
"TheTempusProject\\Bedrock\\": "vendor/thetempusproject/bedrock",
"TheTempusProject\\Canary\\": "vendor/thetempusproject/canary",
"TheTempusProject\\Houdini\\": "vendor/thetempusproject/houdini"
}
"app/controllers",
"app/controllers/admin",
"app/controllers/api",
"app/models",
"app/plugins"
]
},
"scripts":
{

BIN
images/logoWhite192.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

View File

@ -5,7 +5,7 @@
* All application traffic should be directed to/through this file.
* It mostly handles some last minute routing and initializes the app.
*
* @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]

View File

@ -7,6 +7,32 @@
"background_color": "#1e1e1e",
"theme_color": "#85bd3e",
"icons": [
],
"screenshots": [
{
"src": "/images/screenshot-wide-dark.png",
"type": "image/png",
"sizes": "1788x942",
"form_factor": "wide"
},
{
"src": "/images/screenshot-wide-light.png",
"type": "image/png",
"sizes": "1788x942",
"form_factor": "wide"
},
{
"src": "/images/screenshot-mobile-dark.png",
"type": "image/png",
"sizes": "478x609",
"form_factor": "narrow"
},
{
"src": "/images/screenshot-mobile-light.png",
"type": "image/png",
"sizes": "478x609",
"form_factor": "narrow"
}
{ "src": "/images/icon-192.png", "type": "image/png", "sizes": "192x192" },
{ "src": "/images/icon-512.png", "type": "image/png", "sizes": "512x512" },
{ "src": "/images/icon-mask.png", "type": "image/png", "sizes": "512x512", "purpose": "maskable" }