wip
24
README.md
@ -372,3 +372,27 @@ What is my goal here?
|
||||
|
||||
I would like to play Dungeons and Dragons once a week with my friends. In an ideal world, I would DM this game and spend all week building tools for us to use that I then put on a website which sells memberships to other players so they can use the tools too.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
webmaster@joeykimsey.com
|
||||
|
||||
pw
|
||||
pu7N83oUdwd
|
||||
|
||||
|
||||
jk - logo info
|
||||
|
||||
|
||||
knewave
|
||||
|
||||
|
||||
#00A
|
||||
#0F0
|
||||
|
||||
|
||||
Can I get this refilled in a better way? This '1 refill every 90 days' leads to situations where CVS fills up my bottle without my request and I have to go get a refill I don't want or need. With this refill schedule f you don't get it refilled within 7 days of when CVS decides its time, you just don't get medicine. How about giving me a couple refills that I can use when I actually need them? I have ADHD, there is no world where I take 90 pills in 90 days. it will always be 85, 80, 82 / 90. If I had a medical condition that required 1 pill every 24 hours or I would die, I would make it a week, maybe.
|
189
app/config/config.json
Normal file
@ -0,0 +1,189 @@
|
||||
{
|
||||
"main": {
|
||||
"logo": {
|
||||
"type": "file",
|
||||
"pretty": "Site Logo (Used mostly in emails)",
|
||||
"default": "images\/logo.png",
|
||||
"value": "images\/logoScaled.png"
|
||||
},
|
||||
"logoLarge": {
|
||||
"type": "file",
|
||||
"pretty": "Large Site Logo (Used mostly when sharing images on social media)",
|
||||
"default": "images\/logoLarge.jpg",
|
||||
"value": "images\/logoLarge.png"
|
||||
},
|
||||
"name": {
|
||||
"type": "text",
|
||||
"pretty": "Site Name",
|
||||
"default": "TTP Example",
|
||||
"value": "JoeyKimsey"
|
||||
},
|
||||
"template": {
|
||||
"type": "text",
|
||||
"pretty": "Default Site Template",
|
||||
"default": "default",
|
||||
"value": "default"
|
||||
},
|
||||
"tokenEnabled": {
|
||||
"type": "radio",
|
||||
"pretty": "Enable CSRF Token for all forms.",
|
||||
"default": true,
|
||||
"value": true
|
||||
},
|
||||
"loginLimit": {
|
||||
"type": "text",
|
||||
"pretty": "Maximum Login Attempts per hour",
|
||||
"default": 5,
|
||||
"value": 5
|
||||
},
|
||||
"loginTimer": {
|
||||
"type": "text",
|
||||
"pretty": "Maximum Login session length. (in seconds)",
|
||||
"default": 604800,
|
||||
"value": 604800
|
||||
}
|
||||
},
|
||||
"database": {
|
||||
"dbEnabled": {
|
||||
"type": "radio",
|
||||
"pretty": "Database Enabled",
|
||||
"default": true,
|
||||
"protected": true,
|
||||
"value": true
|
||||
},
|
||||
"dbHost": {
|
||||
"type": "text",
|
||||
"pretty": "Database Host (IE: http:\/\/localhost:3306)",
|
||||
"default": "127.0.0.1",
|
||||
"protected": true,
|
||||
"value": "192.168.1.194"
|
||||
},
|
||||
"dbMaxQuery": {
|
||||
"type": "text",
|
||||
"pretty": "Maximum results per query",
|
||||
"default": 100,
|
||||
"protected": true,
|
||||
"value": 100
|
||||
},
|
||||
"dbName": {
|
||||
"type": "text",
|
||||
"pretty": "Database Name",
|
||||
"default": "ttp-example",
|
||||
"protected": true,
|
||||
"value": "jk"
|
||||
},
|
||||
"dbPassword": {
|
||||
"type": "text",
|
||||
"pretty": "Database Password",
|
||||
"default": "",
|
||||
"protected": true,
|
||||
"value": "48164816"
|
||||
},
|
||||
"dbPrefix": {
|
||||
"type": "text",
|
||||
"pretty": "Database table Prefix",
|
||||
"default": "TTP_",
|
||||
"protected": true,
|
||||
"value": "TTP_"
|
||||
},
|
||||
"dbUsername": {
|
||||
"type": "text",
|
||||
"pretty": "Database Username",
|
||||
"default": "root",
|
||||
"protected": true,
|
||||
"value": "root"
|
||||
}
|
||||
},
|
||||
"group": {
|
||||
"defaultGroup": {
|
||||
"type": "customSelect",
|
||||
"pretty": "The Default Group for new registrations.",
|
||||
"default": 5,
|
||||
"value": 5
|
||||
}
|
||||
},
|
||||
"logging": {
|
||||
"admin": {
|
||||
"type": "radio",
|
||||
"pretty": "Enable Admin Action Logging.",
|
||||
"default": true,
|
||||
"value": true
|
||||
},
|
||||
"errors": {
|
||||
"type": "radio",
|
||||
"pretty": "Enable Error Logging",
|
||||
"default": true,
|
||||
"value": true
|
||||
},
|
||||
"logins": {
|
||||
"type": "radio",
|
||||
"pretty": "Enable Login Logging",
|
||||
"default": true,
|
||||
"value": true
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"enabled": {
|
||||
"type": "radio",
|
||||
"pretty": "Enable User Feedback.",
|
||||
"default": true,
|
||||
"value": true
|
||||
},
|
||||
"sendEmail": {
|
||||
"type": "radio",
|
||||
"pretty": "Email the user after submitting.",
|
||||
"default": false,
|
||||
"value": false
|
||||
},
|
||||
"emailTemplate": {
|
||||
"type": "text",
|
||||
"pretty": "Email Template",
|
||||
"default": "feedbackEmail",
|
||||
"value": "feedbackEmail"
|
||||
}
|
||||
},
|
||||
"resume": {
|
||||
"enabled": {
|
||||
"type": "radio",
|
||||
"pretty": "Enable the resume Feature.",
|
||||
"default": true,
|
||||
"value": true
|
||||
}
|
||||
},
|
||||
"portfolio": {
|
||||
"enabled": {
|
||||
"type": "radio",
|
||||
"pretty": "Enable the portfolio Feature.",
|
||||
"default": true,
|
||||
"value": true
|
||||
}
|
||||
},
|
||||
"wip": {
|
||||
"enabled": {
|
||||
"type": "radio",
|
||||
"pretty": "Enable the wip Feature.",
|
||||
"default": true,
|
||||
"value": true
|
||||
}
|
||||
},
|
||||
"contact": {
|
||||
"enabled": {
|
||||
"type": "radio",
|
||||
"pretty": "Enable User Contact.",
|
||||
"default": true,
|
||||
"value": true
|
||||
},
|
||||
"sendEmail": {
|
||||
"type": "radio",
|
||||
"pretty": "Email the user after submitting.",
|
||||
"default": false,
|
||||
"value": false
|
||||
},
|
||||
"emailTemplate": {
|
||||
"type": "text",
|
||||
"pretty": "Email Template",
|
||||
"default": "contactEmail",
|
||||
"value": "contactEmail"
|
||||
}
|
||||
}
|
||||
}
|
1
app/config/config.json.bak
Normal file
@ -0,0 +1 @@
|
||||
{"main":{"logo":{"type":"file","pretty":"Site Logo (Used mostly in emails)","default":"images\/logo.png","value":"images\/logo.png"},"logoLarge":{"type":"file","pretty":"Large Site Logo (Used mostly when sharing images on social media)","default":"images\/logoLarge.jpg","value":"images\/curseforge.png"},"name":{"type":"text","pretty":"Site Name","default":"TTP Example","value":"JoeyKimsey"},"template":{"type":"text","pretty":"Default Site Template","default":"default","value":"default"},"tokenEnabled":{"type":"radio","pretty":"Enable CSRF Token for all forms.","default":true,"value":true},"loginLimit":{"type":"text","pretty":"Maximum Login Attempts per hour","default":5,"value":5},"loginTimer":{"type":"text","pretty":"Maximum Login session length. (in seconds)","default":604800,"value":604800}},"database":{"dbEnabled":{"type":"radio","pretty":"Database Enabled","default":true,"protected":true,"value":true},"dbHost":{"type":"text","pretty":"Database Host (IE: http:\/\/localhost:3306)","default":"127.0.0.1","protected":true,"value":"192.168.1.194"},"dbMaxQuery":{"type":"text","pretty":"Maximum results per query","default":100,"protected":true,"value":100},"dbName":{"type":"text","pretty":"Database Name","default":"ttp-example","protected":true,"value":"jk"},"dbPassword":{"type":"text","pretty":"Database Password","default":"","protected":true,"value":"48164816"},"dbPrefix":{"type":"text","pretty":"Database table Prefix","default":"TTP_","protected":true,"value":"TTP_"},"dbUsername":{"type":"text","pretty":"Database Username","default":"root","protected":true,"value":"root"}},"group":{"defaultGroup":{"type":"customSelect","pretty":"The Default Group for new registrations.","default":5,"value":5}},"logging":{"admin":{"type":"radio","pretty":"Enable Admin Action Logging.","default":true,"value":true},"errors":{"type":"radio","pretty":"Enable Error Logging","default":true,"value":true},"logins":{"type":"radio","pretty":"Enable Login Logging","default":true,"value":true}},"feedback":{"enabled":{"type":"radio","pretty":"Enable User Feedback.","default":true,"value":true},"sendEmail":{"type":"radio","pretty":"Email the user after submitting.","default":false,"value":false},"emailTemplate":{"type":"text","pretty":"Email Template","default":"feedbackEmail","value":"feedbackEmail"}},"resume":{"enabled":{"type":"radio","pretty":"Enable the resume Feature.","default":true,"value":true}},"portfolio":{"enabled":{"type":"radio","pretty":"Enable the portfolio Feature.","default":true,"value":true}},"wip":{"enabled":{"type":"radio","pretty":"Enable the wip Feature.","default":true,"value":true}}}
|
138
app/config/constants.php
Normal file
@ -0,0 +1,138 @@
|
||||
<?php
|
||||
define( 'APP_SPACE', 'TheTempusProject' );
|
||||
if ( ! defined( 'APP_ROOT_DIRECTORY' ) ) {
|
||||
define( 'APP_ROOT_DIRECTORY', dirname( __DIR__ ) . DIRECTORY_SEPARATOR ); // need to verify
|
||||
}
|
||||
define( 'APP_DIRECTORY', APP_ROOT_DIRECTORY . 'app' . DIRECTORY_SEPARATOR );
|
||||
// Directories
|
||||
define( 'CSS_DIRECTORY', APP_ROOT_DIRECTORY . 'css' . DIRECTORY_SEPARATOR );
|
||||
define( 'IMAGE_DIRECTORY', APP_ROOT_DIRECTORY . 'images' . DIRECTORY_SEPARATOR );
|
||||
define( 'JAVASCRIPT_DIRECTORY', APP_ROOT_DIRECTORY . 'js' . DIRECTORY_SEPARATOR );
|
||||
define( 'HTACCESS_LOCATION', APP_ROOT_DIRECTORY . '.htaccess' );
|
||||
if ( ! defined( 'CONFIG_DIRECTORY' ) ) {
|
||||
define( 'CONFIG_DIRECTORY', APP_DIRECTORY . 'config' . DIRECTORY_SEPARATOR );
|
||||
}
|
||||
define( 'PLUGIN_DIRECTORY', APP_DIRECTORY . 'plugins' . DIRECTORY_SEPARATOR );
|
||||
define( 'MODEL_DIRECTORY', APP_DIRECTORY . 'models' . DIRECTORY_SEPARATOR );
|
||||
define( 'CONTROLLER_DIRECTORY', APP_DIRECTORY . 'controllers' . DIRECTORY_SEPARATOR );
|
||||
define( 'ADMIN_CONTROLLER_DIRECTORY', CONTROLLER_DIRECTORY. 'admin' . DIRECTORY_SEPARATOR );
|
||||
define( 'API_CONTROLLER_DIRECTORY', CONTROLLER_DIRECTORY. 'api' . DIRECTORY_SEPARATOR );
|
||||
// Files
|
||||
define( 'PERMISSIONS_JSON', CONFIG_DIRECTORY . 'permissions.json' );
|
||||
define( 'PREFERENCES_JSON', CONFIG_DIRECTORY . 'preferences.json' );
|
||||
define( 'INSTALL_JSON_LOCATION', CONFIG_DIRECTORY . 'install.json' );
|
||||
define( 'INSTALLER_LOCATION', APP_ROOT_DIRECTORY . 'install.php' );
|
||||
// Other
|
||||
define( 'PLUGINS_ENABLED', true );
|
||||
define( 'INSTALL_STATUS_NOT_REQUIRED', 'Not Required' );
|
||||
define( 'INSTALL_STATUS_NOT_FOUND', 'Not Found' );
|
||||
define( 'INSTALL_STATUS_PARTIALLY_INSTALLED', 'Partially Installed' );
|
||||
define( 'INSTALL_STATUS_NOT_INSTALLED', 'Not Installed' );
|
||||
define( 'INSTALL_STATUS_INSTALLED', 'Installed' );
|
||||
define( 'INSTALL_STATUS_UNINSTALLED', 'Uninstalled' );
|
||||
define( 'INSTALL_STATUS_SUCCESS', 'Success' );
|
||||
define( 'INSTALL_STATUS_SKIPPED', 'Skipped' );
|
||||
define( 'INSTALL_STATUS_FAIL', 'Failed' );
|
||||
define( 'MODEL_INSTALL_FLAGS', [ 'installTable', 'installPermissions', 'installConfigs', 'installResources', 'installPreferences' ] );
|
||||
define( 'PLUGIN_INSTALL_FLAGS', [ 'models_installed', 'permissions_installed', 'configs_installed', 'resources_installed', 'preferences_installed' ] );
|
||||
# Tempus Debugger
|
||||
define( 'CANARY_SECURE_HASH', 'd73ed7591a30f0ca7d686a0e780f0d05' );
|
||||
# Tempus Project Core
|
||||
// Check
|
||||
define( 'MINIMUM_PHP_VERSION', 8.1);
|
||||
// Cookies
|
||||
define( 'DEFAULT_COOKIE_PREFIX', 'TP_');
|
||||
// Debug
|
||||
|
||||
define( 'CANARY_DEBUG_DIRECTORY', APP_ROOT_DIRECTORY . 'logs' . DIRECTORY_SEPARATOR );
|
||||
define( 'CANARY_DEBUG_LEVEL_ERROR', 'error' );
|
||||
define( 'CANARY_DEBUG_LEVEL_WARN', 'warn' );
|
||||
define( 'CANARY_DEBUG_LEVEL_INFO', 'info' );
|
||||
define( 'CANARY_DEBUG_LEVEL_LOG', 'log' );
|
||||
define( 'CANARY_DEBUG_LEVEL_DEBUG', 'debug' );
|
||||
define( 'CANARY_DEBUG_TO_FILE_LEVEL', CANARY_DEBUG_LEVEL_INFO );
|
||||
define( 'CANARY_ENABLED', true );
|
||||
define( 'DEBUG_EMAIL', 'webmaster@' . $_SERVER['HTTP_HOST'] );
|
||||
define( 'HERMES_REDIRECTS_ENABLED', true );
|
||||
define( 'RENDERING_ENABLED', true );
|
||||
define( 'CANARY_TRACE_ENABLED', false );
|
||||
define( 'CANARY_DEBUG_TO_CONSOLE', false );
|
||||
define( 'CANARY_DEBUG_TO_FILE', true );
|
||||
// Directories
|
||||
if ( ! defined( 'VENDOR_DIRECTORY' ) ) {
|
||||
define( 'VENDOR_DIRECTORY', APP_ROOT_DIRECTORY . 'vendor' . DIRECTORY_SEPARATOR );
|
||||
}
|
||||
if ( is_dir( VENDOR_DIRECTORY . 'thetempusproject' )) {
|
||||
define( 'TP_VENDOR_DIRECTORY', VENDOR_DIRECTORY . 'thetempusproject' . DIRECTORY_SEPARATOR );
|
||||
} elseif ( is_dir( VENDOR_DIRECTORY . 'TheTempusProject' )) {
|
||||
define( 'TP_VENDOR_DIRECTORY', VENDOR_DIRECTORY . 'TheTempusProject' . DIRECTORY_SEPARATOR );
|
||||
} else {
|
||||
define( 'TP_VENDOR_DIRECTORY', VENDOR_DIRECTORY);
|
||||
}
|
||||
# Bedrock
|
||||
if ( is_dir( TP_VENDOR_DIRECTORY . 'tempusprojectcore' )) {
|
||||
define( 'BEDROCK_ROOT_DIRECTORY', TP_VENDOR_DIRECTORY . 'tempusprojectcore' . DIRECTORY_SEPARATOR );
|
||||
} elseif ( is_dir( TP_VENDOR_DIRECTORY . 'TempusProjectCore' )) {
|
||||
define( 'BEDROCK_ROOT_DIRECTORY', TP_VENDOR_DIRECTORY . 'TempusProjectCore' . DIRECTORY_SEPARATOR );
|
||||
} elseif ( is_dir( TP_VENDOR_DIRECTORY . 'bedrock' )) {
|
||||
define( 'BEDROCK_ROOT_DIRECTORY', TP_VENDOR_DIRECTORY . 'bedrock' . DIRECTORY_SEPARATOR );
|
||||
} elseif ( is_dir( TP_VENDOR_DIRECTORY . 'Bedrock' )) {
|
||||
define( 'BEDROCK_ROOT_DIRECTORY', TP_VENDOR_DIRECTORY . 'Bedrock' . DIRECTORY_SEPARATOR );
|
||||
}
|
||||
if ( is_dir( BEDROCK_ROOT_DIRECTORY . 'config' )) {
|
||||
define( 'BEDROCK_CONFIG_DIRECTORY', BEDROCK_ROOT_DIRECTORY . 'config' . DIRECTORY_SEPARATOR );
|
||||
}
|
||||
# Canary
|
||||
if ( is_dir( TP_VENDOR_DIRECTORY . 'tempusdebugger' )) {
|
||||
define( 'CANARY_ROOT_DIRECTORY', TP_VENDOR_DIRECTORY . 'tempusdebugger' . DIRECTORY_SEPARATOR );
|
||||
} elseif ( is_dir( TP_VENDOR_DIRECTORY . 'TempusDebugger' )) {
|
||||
define( 'CANARY_ROOT_DIRECTORY', TP_VENDOR_DIRECTORY . 'TempusDebugger' . DIRECTORY_SEPARATOR );
|
||||
} elseif ( is_dir( TP_VENDOR_DIRECTORY . 'canary' )) {
|
||||
define( 'CANARY_ROOT_DIRECTORY', TP_VENDOR_DIRECTORY . 'canary' . DIRECTORY_SEPARATOR );
|
||||
} elseif ( is_dir( TP_VENDOR_DIRECTORY . 'Canary' )) {
|
||||
define( 'CANARY_ROOT_DIRECTORY', TP_VENDOR_DIRECTORY . 'Canary' . DIRECTORY_SEPARATOR );
|
||||
}
|
||||
if ( is_dir( CANARY_ROOT_DIRECTORY . 'config' )) {
|
||||
define( 'CANARY_CONFIG_DIRECTORY', CANARY_ROOT_DIRECTORY . 'config' . DIRECTORY_SEPARATOR );
|
||||
}
|
||||
# Hermes
|
||||
if ( is_dir( TP_VENDOR_DIRECTORY . 'hermes' )) {
|
||||
define( 'HERMES_ROOT_DIRECTORY', TP_VENDOR_DIRECTORY . 'hermes' . DIRECTORY_SEPARATOR );
|
||||
} elseif ( is_dir( TP_VENDOR_DIRECTORY . 'Hermes' )) {
|
||||
define( 'HERMES_ROOT_DIRECTORY', TP_VENDOR_DIRECTORY . 'Hermes' . DIRECTORY_SEPARATOR );
|
||||
}
|
||||
if ( is_dir( HERMES_ROOT_DIRECTORY . 'config' )) {
|
||||
define( 'HERMES_CONFIG_DIRECTORY', HERMES_ROOT_DIRECTORY . 'config' . DIRECTORY_SEPARATOR );
|
||||
}
|
||||
# Houdini
|
||||
if ( is_dir( TP_VENDOR_DIRECTORY . 'houdini' )) {
|
||||
define( 'HOUDINI_ROOT_DIRECTORY', TP_VENDOR_DIRECTORY . 'houdini' . DIRECTORY_SEPARATOR );
|
||||
} elseif ( is_dir( TP_VENDOR_DIRECTORY . 'Houdini' )) {
|
||||
define( 'HOUDINI_ROOT_DIRECTORY', TP_VENDOR_DIRECTORY . 'Houdini' . DIRECTORY_SEPARATOR );
|
||||
}
|
||||
if ( is_dir( HOUDINI_ROOT_DIRECTORY . 'config' )) {
|
||||
define( 'HOUDINI_CONFIG_DIRECTORY', HOUDINI_ROOT_DIRECTORY . 'config' . DIRECTORY_SEPARATOR );
|
||||
}
|
||||
// Shared Directories
|
||||
define( 'BIN_DIRECTORY', APP_ROOT_DIRECTORY . 'bin' . DIRECTORY_SEPARATOR );
|
||||
define( 'VIEW_DIRECTORY', APP_DIRECTORY . 'views' . DIRECTORY_SEPARATOR );
|
||||
define( 'ERRORS_DIRECTORY', VIEW_DIRECTORY . 'errors' . DIRECTORY_SEPARATOR );
|
||||
define( 'CLASSES_DIRECTORY', APP_DIRECTORY . 'classes' . DIRECTORY_SEPARATOR );
|
||||
define( 'FUNCTIONS_DIRECTORY', APP_DIRECTORY . 'functions' . DIRECTORY_SEPARATOR );
|
||||
define( 'RESOURCES_DIRECTORY', APP_DIRECTORY . 'resources' . DIRECTORY_SEPARATOR );
|
||||
define( 'TEMPLATE_DIRECTORY', APP_DIRECTORY . 'templates' . DIRECTORY_SEPARATOR );
|
||||
define( 'UPLOAD_DIRECTORY', APP_ROOT_DIRECTORY . 'uploads' . DIRECTORY_SEPARATOR );
|
||||
define( 'IMAGE_UPLOAD_DIRECTORY', UPLOAD_DIRECTORY . 'images' . DIRECTORY_SEPARATOR );
|
||||
// Files
|
||||
define( 'COMPOSER_JSON_LOCATION', APP_ROOT_DIRECTORY . 'composer.json' );
|
||||
define( 'COMPOSER_LOCK_LOCATION', APP_ROOT_DIRECTORY . 'composer.lock' );
|
||||
define( 'CONFIG_JSON', CONFIG_DIRECTORY . 'config.json' );
|
||||
// Other
|
||||
define( 'EMAIL_FROM_EMAIL', 'noreply@localohost.com' );
|
||||
// Sessions
|
||||
define( 'DEFAULT_SESSION_PREFIX', 'TP_' );
|
||||
// Token
|
||||
define( 'DEFAULT_TOKEN_NAME', 'TP_SESSION_TOKEN' );
|
||||
define( 'HOUDINI_SITENAME', 'Joey Kimsey' );
|
||||
# Tell the app; all constants have been loaded
|
||||
define( 'TEMPUS_PROJECT_CONSTANTS_LOADED', true );
|
1
app/config/install.json
Normal file
1
app/config/permissions.json
Normal file
@ -0,0 +1 @@
|
||||
{"adminAccess":{"pretty":"Access Administrator Areas","default":false},"addRoute":{"pretty":"Add Custom Routes","default":false},"uploadImages":{"pretty":"Upload images (such as avatars)","default":false},"feedback":{"pretty":"Can Submit Feedback","default":false},"redirects":{"pretty":"Can modify redirects","default":false},"memberAccess":{"pretty":"Access Member Areas","default":false},"controlMemberships":{"pretty":"User can Access and Control user memberships.","default":false},"contact":{"pretty":"Can Submit Contact","default":true},"updates":{"pretty":"Can create status updates","default":false}}
|
1
app/config/permissions.json.bak
Normal file
@ -0,0 +1 @@
|
||||
{"adminAccess":{"pretty":"Access Administrator Areas","default":false},"addRoute":{"pretty":"Add Custom Routes","default":false},"uploadImages":{"pretty":"Upload images (such as avatars)","default":false},"feedback":{"pretty":"Can Submit Feedback","default":false},"redirects":{"pretty":"Can modify redirects","default":false},"memberAccess":{"pretty":"Access Member Areas","default":false},"controlMemberships":{"pretty":"User can Access and Control user memberships.","default":false},"contact":{"pretty":"Can Submit Contact","default":true},"updates":{"pretty":"Can create status updates","default":false}}
|
1
app/config/preferences.json
Normal file
@ -0,0 +1 @@
|
||||
{"gender":{"pretty":"Gender","type":"select","default":"unspecified","options":["male","female","other","unspecified"],"avatar":"\/var\/www\/nginx\/jk.local\/images\/defaultAvatar.png"},"newsletter":{"pretty":"Receive our Newsletter?","type":"checkbox","default":"true","avatar":"\/var\/www\/nginx\/jk.local\/images\/defaultAvatar.png","options":null},"avatar":{"pretty":"Avatar","type":"file","default":"images\/defaultAvatar.png","avatar":"\/var\/www\/nginx\/jk.local\/images\/defaultAvatar.png","options":null},"timezone":{"pretty":"Timezone","type":"timezone","default":"America\/New_York","avatar":"\/var\/www\/nginx\/jk.local\/images\/defaultAvatar.png","options":null},"dateFormat":{"pretty":"Date Format","type":"select","default":"F j, Y","options":{"1-8-1991":"n-j-Y","8-1-1991":"j-n-Y","01-08-1991":"m-d-Y","08-01-1991":"d-m-Y","January 8, 1991":"F-j-Y","8 January, 1991":"j-F-Y","January 08, 1991":"F-d-Y","08 January, 1991":"d-F-Y","Jan 8, 1991":"M-j-Y","8 Jan 1991":"j-M-Y","Jan 08, 1991":"M-d-Y","08 Jan 1991":"d-M-Y"},"avatar":"\/var\/www\/nginx\/jk.local\/images\/defaultAvatar.png"},"timeFormat":{"pretty":"Time Format","type":"select","default":"g:i:s A","options":{"3:33:33 AM":"g:i:s A","03:33:33 AM":"h:i:s A","3:33:33 am":"g:i:s a","03:33:33 am":"h:i:s a","3:33:33 (military)":"G:i:s","03:33:33 (military)":"H:i:s"},"avatar":"\/var\/www\/nginx\/jk.local\/images\/defaultAvatar.png"},"pageLimit":{"pretty":"Items Displayed Per Page","type":"select","default":"10","options":["10","15","20","25","50"],"avatar":"\/var\/www\/nginx\/jk.local\/images\/defaultAvatar.png"}}
|
1
app/config/preferences.json.bak
Normal file
@ -0,0 +1 @@
|
||||
{"gender":{"pretty":"Gender","type":"select","default":"unspecified","options":["male","female","other","unspecified"],"avatar":"\/var\/www\/nginx\/jk.local\/images\/defaultAvatar.png"},"newsletter":{"pretty":"Receive our Newsletter?","type":"checkbox","default":"true","avatar":"\/var\/www\/nginx\/jk.local\/images\/defaultAvatar.png","options":null},"avatar":{"pretty":"Avatar","type":"file","default":"images\/defaultAvatar.png","avatar":"\/var\/www\/nginx\/jk.local\/images\/defaultAvatar.png","options":null},"timezone":{"pretty":"Timezone","type":"timezone","default":"America\/New_York","avatar":"\/var\/www\/nginx\/jk.local\/images\/defaultAvatar.png","options":null},"dateFormat":{"pretty":"Date Format","type":"select","default":"F j, Y","options":{"1-8-1991":"n-j-Y","8-1-1991":"j-n-Y","01-08-1991":"m-d-Y","08-01-1991":"d-m-Y","January 8, 1991":"F-j-Y","8 January, 1991":"j-F-Y","January 08, 1991":"F-d-Y","08 January, 1991":"d-F-Y","Jan 8, 1991":"M-j-Y","8 Jan 1991":"j-M-Y","Jan 08, 1991":"M-d-Y","08 Jan 1991":"d-M-Y"},"avatar":"\/var\/www\/nginx\/jk.local\/images\/defaultAvatar.png"},"timeFormat":{"pretty":"Time Format","type":"select","default":"g:i:s A","options":{"3:33:33 AM":"g:i:s A","03:33:33 AM":"h:i:s A","3:33:33 am":"g:i:s a","03:33:33 am":"h:i:s a","3:33:33 (military)":"G:i:s","03:33:33 (military)":"H:i:s"},"avatar":"\/var\/www\/nginx\/jk.local\/images\/defaultAvatar.png"},"pageLimit":{"pretty":"Items Displayed Per Page","type":"select","default":"10","options":["10","15","20","25","50"],"avatar":"\/var\/www\/nginx\/jk.local\/images\/defaultAvatar.png"}}
|
47
app/controllers/bedrock.php
Normal file
@ -0,0 +1,47 @@
|
||||
<?php
|
||||
/**
|
||||
* app/controllers/bedrock.php
|
||||
*
|
||||
* This is the bedrock controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
namespace TheTempusProject\Controllers;
|
||||
|
||||
use TheTempusProject\Hermes\Functions\Redirect;
|
||||
use TheTempusProject\Bedrock\Functions\Session;
|
||||
use TheTempusProject\Bedrock\Functions\Check;
|
||||
use TheTempusProject\Bedrock\Functions\Input;
|
||||
use TheTempusProject\Hermes\Functions\Route as Routes;
|
||||
use TheTempusProject\Houdini\Classes\Issues;
|
||||
use TheTempusProject\Houdini\Classes\Views;
|
||||
use TheTempusProject\Houdini\Classes\Components;
|
||||
use TheTempusProject\Houdini\Classes\Template;
|
||||
use TheTempusProject\Classes\Controller;
|
||||
use TheTempusProject\Classes\Forms;
|
||||
use TheTempusProject\TheTempusProject as App;
|
||||
|
||||
class Bedrock extends Controller {
|
||||
public function index() {
|
||||
self::$title = '{SITENAME} - Bedrock';
|
||||
self::$pageDescription = 'Bedrock is a dependency of {SITENAME} that provides many components used to manipulate database data and many helper functions vital for running the entire application.';
|
||||
Views::view( 'deps.bedrock' );
|
||||
}
|
||||
|
||||
public function packagist() {
|
||||
Redirect::external( 'https://packagist.org/packages/thetempusproject/bedrock' );
|
||||
}
|
||||
|
||||
public function git() {
|
||||
Redirect::external( 'https://git.thetempusproject.com/the-tempus-project/bedrock' );
|
||||
}
|
||||
|
||||
public function changes() {
|
||||
self::$title = '{SITENAME} - Bedrock Changes';
|
||||
self::$pageDescription = 'Bedrock is a dependency of {SITENAME} and this pages lists the most recent changes with some details on those changes.';
|
||||
Views::view( 'changes.bedrock' );
|
||||
}
|
||||
}
|
47
app/controllers/canary.php
Normal file
@ -0,0 +1,47 @@
|
||||
<?php
|
||||
/**
|
||||
* app/controllers/canary.php
|
||||
*
|
||||
* This is the canary controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
namespace TheTempusProject\Controllers;
|
||||
|
||||
use TheTempusProject\Hermes\Functions\Redirect;
|
||||
use TheTempusProject\Bedrock\Functions\Session;
|
||||
use TheTempusProject\Bedrock\Functions\Check;
|
||||
use TheTempusProject\Bedrock\Functions\Input;
|
||||
use TheTempusProject\Hermes\Functions\Route as Routes;
|
||||
use TheTempusProject\Houdini\Classes\Issues;
|
||||
use TheTempusProject\Houdini\Classes\Views;
|
||||
use TheTempusProject\Houdini\Classes\Components;
|
||||
use TheTempusProject\Houdini\Classes\Template;
|
||||
use TheTempusProject\Classes\Controller;
|
||||
use TheTempusProject\Classes\Forms;
|
||||
use TheTempusProject\TheTempusProject as App;
|
||||
|
||||
class Canary extends Controller {
|
||||
public function index() {
|
||||
self::$title = '{SITENAME} - Canary';
|
||||
self::$pageDescription = 'Canary is a dependency of {SITENAME} that both records and reports logs from various PHP applications.';
|
||||
Views::view( 'deps.canary' );
|
||||
}
|
||||
|
||||
public function packagist() {
|
||||
Redirect::external( 'https://packagist.org/packages/thetempusproject/canary' );
|
||||
}
|
||||
|
||||
public function git() {
|
||||
Redirect::external( 'https://git.thetempusproject.com/the-tempus-project/canary' );
|
||||
}
|
||||
|
||||
public function changes() {
|
||||
self::$title = '{SITENAME} - Canary Changes';
|
||||
self::$pageDescription = 'Canary is a dependency of {SITENAME} and this pages lists the most recent changes with some details on those changes.';
|
||||
Views::view( 'changes.canary' );
|
||||
}
|
||||
}
|
47
app/controllers/hermes.php
Normal file
@ -0,0 +1,47 @@
|
||||
<?php
|
||||
/**
|
||||
* app/controllers/hermes.php
|
||||
*
|
||||
* This is the hermes controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
namespace TheTempusProject\Controllers;
|
||||
|
||||
use TheTempusProject\Hermes\Functions\Redirect;
|
||||
use TheTempusProject\Bedrock\Functions\Session;
|
||||
use TheTempusProject\Bedrock\Functions\Check;
|
||||
use TheTempusProject\Bedrock\Functions\Input;
|
||||
use TheTempusProject\Hermes\Functions\Route as Routes;
|
||||
use TheTempusProject\Houdini\Classes\Issues;
|
||||
use TheTempusProject\Houdini\Classes\Views;
|
||||
use TheTempusProject\Houdini\Classes\Components;
|
||||
use TheTempusProject\Houdini\Classes\Template;
|
||||
use TheTempusProject\Classes\Controller;
|
||||
use TheTempusProject\Classes\Forms;
|
||||
use TheTempusProject\TheTempusProject as App;
|
||||
|
||||
class Hermes extends Controller {
|
||||
public function index() {
|
||||
self::$title = '{SITENAME} - Hermes';
|
||||
self::$pageDescription = 'Hermes is a dependency of {SITENAME} that provides many common helper functions for navigating url components and file systems; designed to work seamlessly regardless of architecture.';
|
||||
Views::view( 'deps.hermes' );
|
||||
}
|
||||
|
||||
public function packagist() {
|
||||
Redirect::external( 'https://packagist.org/packages/thetempusproject/hermes' );
|
||||
}
|
||||
|
||||
public function git() {
|
||||
Redirect::external( 'https://git.thetempusproject.com/the-tempus-project/hermes' );
|
||||
}
|
||||
|
||||
public function changes() {
|
||||
self::$title = '{SITENAME} - Hermes Changes';
|
||||
self::$pageDescription = 'Hermes is a dependency of {SITENAME} and this pages lists the most recent changes with some details on those changes.';
|
||||
Views::view( 'changes.hermes' );
|
||||
}
|
||||
}
|
@ -29,25 +29,25 @@ class Home extends Controller {
|
||||
self::$title = '{SITENAME}';
|
||||
self::$pageDescription = 'This is the homepage of your new Tempus Project Installation. Thank you for installing. find more info at https://thetempusproject.com';
|
||||
$optionValues = [
|
||||
(object) [ "option" => "Full-Stack Developer" ],
|
||||
(object) [ "option" => "DevOps Engineer" ],
|
||||
(object) [ "option" => "Web Developer" ],
|
||||
(object) [ "option" => "App Developer" ],
|
||||
(object) [ "option" => "Senior PHP Developer" ],
|
||||
(object) [ "option" => "Server/Waiter" ],
|
||||
(object) [ "option" => "Cook" ],
|
||||
(object) [ "option" => "Farm-Hand" ],
|
||||
(object) [ "option" => "Dish-Boy" ],
|
||||
(object) [ "option" => "Brother" ],
|
||||
(object) [ "option" => "Son" ],
|
||||
(object) [ "option" => "Friend" ],
|
||||
(object) [ "option" => "Student" ],
|
||||
(object) [ "option" => "Polymath" ],
|
||||
(object) [ "option" => "Geek" ],
|
||||
(object) [ "option" => "Nerd" ],
|
||||
(object) [ "post" => "XXXXXXXX", "option" => "Full-Stack Developer" ],
|
||||
(object) [ "post" => "XXXXXXXX", "option" => "DevOps Engineer" ],
|
||||
(object) [ "post" => "XXXXXXXX", "option" => "Web Developer" ],
|
||||
(object) [ "post" => "XXXXXXXX", "option" => "App Developer" ],
|
||||
(object) [ "post" => "XXXXXXXX", "option" => "Senior PHP Developer" ],
|
||||
(object) [ "post" => "XXXXXXXX", "option" => "Server/Waiter" ],
|
||||
(object) [ "post" => "XXXXXXXX", "option" => "Cook" ],
|
||||
(object) [ "post" => "XXXXXXXX", "option" => "Farm-Hand" ],
|
||||
(object) [ "post" => "XXXXXXXX", "option" => "Dish-Boy" ],
|
||||
(object) [ "post" => "XXXXXXXX", "option" => "Brother" ],
|
||||
(object) [ "post" => "XXXXXXXX", "option" => "Son" ],
|
||||
(object) [ "post" => "XXXXXXXX", "option" => "Friend" ],
|
||||
(object) [ "post" => "XXXXXXXX", "option" => "Student" ],
|
||||
(object) [ "post" => "XXXXXXXX", "option" => "Polymath" ],
|
||||
(object) [ "post" => "XXXXXXXX", "option" => "Geek" ],
|
||||
(object) [ "post" => "XXXXXXXX", "option" => "Nerd" ],
|
||||
];
|
||||
shuffle($optionValues);
|
||||
Views::view( 'test', $optionValues );
|
||||
Views::view( 'index', $optionValues );
|
||||
}
|
||||
|
||||
public function login() {
|
||||
@ -108,12 +108,6 @@ class Home extends Controller {
|
||||
Views::view( 'termsPage' );
|
||||
}
|
||||
|
||||
public function about() {
|
||||
self::$title = 'About - {SITENAME}';
|
||||
self::$pageDescription = '{SITENAME} was started by a developer with years of industry experience which has lead to a refined no-nonsense tool for everyone. Find out more about us here.';
|
||||
Views::view( 'about' );
|
||||
}
|
||||
|
||||
public function about() {
|
||||
self::$title = 'About - {SITENAME}';
|
||||
self::$pageDescription = 'Just a bit more info on me.';
|
||||
|
47
app/controllers/houdini.php
Normal file
@ -0,0 +1,47 @@
|
||||
<?php
|
||||
/**
|
||||
* app/controllers/houdini.php
|
||||
*
|
||||
* This is the houdini controller.
|
||||
*
|
||||
* @version 3.0
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
namespace TheTempusProject\Controllers;
|
||||
|
||||
use TheTempusProject\Hermes\Functions\Redirect;
|
||||
use TheTempusProject\Bedrock\Functions\Session;
|
||||
use TheTempusProject\Bedrock\Functions\Check;
|
||||
use TheTempusProject\Bedrock\Functions\Input;
|
||||
use TheTempusProject\Hermes\Functions\Route as Routes;
|
||||
use TheTempusProject\Houdini\Classes\Issues;
|
||||
use TheTempusProject\Houdini\Classes\Views;
|
||||
use TheTempusProject\Houdini\Classes\Components;
|
||||
use TheTempusProject\Houdini\Classes\Template;
|
||||
use TheTempusProject\Classes\Controller;
|
||||
use TheTempusProject\Classes\Forms;
|
||||
use TheTempusProject\TheTempusProject as App;
|
||||
|
||||
class Houdini extends Controller {
|
||||
public function index() {
|
||||
self::$title = '{SITENAME} - Houdini';
|
||||
self::$pageDescription = 'Houdini is a dependency of {SITENAME} that allows for the creation and manipulation of objects used in html page creation.';
|
||||
Views::view( 'deps.houdini' );
|
||||
}
|
||||
|
||||
public function packagist() {
|
||||
Redirect::external( 'https://packagist.org/packages/thetempusproject/houdini' );
|
||||
}
|
||||
|
||||
public function git() {
|
||||
Redirect::external( 'https://git.thetempusproject.com/the-tempus-project/houdini' );
|
||||
}
|
||||
|
||||
public function changes() {
|
||||
self::$title = '{SITENAME} - Houdini Changes';
|
||||
self::$pageDescription = 'Houdini is a dependency of {SITENAME} and this pages lists the most recent changes with some details on those changes.';
|
||||
Views::view( 'changes.houdini' );
|
||||
}
|
||||
}
|
@ -162,3 +162,21 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
const postSelector = document.getElementById('postSelector');
|
||||
const goToPostButton = document.getElementById('goToPost');
|
||||
|
||||
if ( postSelector && goToPostButton ) {
|
||||
goToPostButton.addEventListener('click', function () {
|
||||
const selectedValue = postSelector.value;
|
||||
if (selectedValue) {
|
||||
const url = `/blog/post/${selectedValue}`;
|
||||
window.location.href = url;
|
||||
} else {
|
||||
alert('Please select an option before proceeding.');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
@ -1,20 +1,28 @@
|
||||
<h1>Portfolio</h1>
|
||||
<hr>
|
||||
{LOOP}
|
||||
<div class="media portfolio-link col-md-8 col-md-offset-2">
|
||||
<div class="media-left">
|
||||
<a href="#">
|
||||
<img class="media-object" src="{image}" alt="{title} preview">
|
||||
</a>
|
||||
<div class="card context-main context-main-bg col-8 offset-2 my-4 p-3">
|
||||
<h2 class="text-center">Portfolio</h2>
|
||||
<hr>
|
||||
{LOOP}
|
||||
<div class="card context-main context-third-bg py-2 my-2">
|
||||
<div class="row g-0">
|
||||
<div class="col-md-4 ps-2 d-flex justify-content-center align-items-center">
|
||||
<a href="{url}">
|
||||
<img class="img-fluid rounded" src="{image}" alt="{title} preview">
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title">{title}</h4>
|
||||
<p class="card-text">
|
||||
{description}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="media-body">
|
||||
<h4 class="media-heading"><a href="{url}">{title}</a></h4>
|
||||
{description}
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<div class="card context-main context-main-bg">
|
||||
<p>None Found</p>
|
||||
</div>
|
||||
</div>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<div class="portfolio-link">
|
||||
<p>None Found</p>
|
||||
</div>
|
||||
{/ALT}
|
||||
{/ALT}
|
||||
</div>
|
@ -45,7 +45,7 @@ class Resume extends AdminController {
|
||||
Issues::add( 'error', [ 'There was an error with your request.' => Check::userErrors() ] );
|
||||
return $this->index();
|
||||
}
|
||||
$result = self::$positions->create( Input::post( 'name' ), Input::post( 'position' ), Input::post( 'start' ), Input::post( 'end' ), Input::post( 'details' ) );
|
||||
$result = self::$positions->create( Input::post( 'name' ), Input::post( 'position' ), Input::post( 'start' ), Input::post( 'end' ), Input::post( 'details' ), Input::post( 'detailsNobs' ) );
|
||||
if ( $result ) {
|
||||
Issues::add( 'success', 'Your position has been created.' );
|
||||
return $this->index();
|
||||
@ -69,6 +69,7 @@ class Resume extends AdminController {
|
||||
'start' => Input::post( 'start' ),
|
||||
'end' => Input::post( 'end' ),
|
||||
'details' => Input::post( 'details' ),
|
||||
'details_nobs' => Input::post( 'detailsNobs' ),
|
||||
];
|
||||
if ( self::$positions->update( $data, $fields ) ) {
|
||||
Issues::add( 'success', 'Position Updated.' );
|
||||
|
@ -23,6 +23,15 @@ use TheTempusProject\Houdini\Classes\Template;
|
||||
class Resume extends Controller {
|
||||
protected static $positions;
|
||||
|
||||
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
Components::append( 'TEMPLATE_JS_INCLUDES', Template::parse(
|
||||
'<script language="JavaScript" crossorigin="anonymous" type="text/javascript" src="{ROOT_URL}app/plugins/resume/js/resume.js"></script>'
|
||||
) );
|
||||
}
|
||||
|
||||
|
||||
public function index() {
|
||||
self::$positions = new Positions;
|
||||
self::$title = '{SITENAME} - Resume';
|
||||
|
@ -93,7 +93,6 @@
|
||||
/* The actual content */
|
||||
.timeline-content {
|
||||
padding: 20px 30px;
|
||||
background-color: white;
|
||||
position: relative;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
14
app/plugins/resume/js/resume.js
Normal file
@ -0,0 +1,14 @@
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
const hideBsCheckbox = document.getElementById('hidebs');
|
||||
|
||||
if (hideBsCheckbox) {
|
||||
hideBsCheckbox.addEventListener('change', function () {
|
||||
const detailsElements = document.querySelectorAll('.details, .details_nobs');
|
||||
detailsElements.forEach(function (element) {
|
||||
console.error(element);
|
||||
element.classList.toggle('d-none');
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
@ -26,6 +26,8 @@ class Positions extends DatabaseModel {
|
||||
[ 'start', 'varchar', '16' ],
|
||||
[ 'end', 'varchar', '16' ],
|
||||
[ 'details', 'text', '' ],
|
||||
[ 'details_nobs', 'text', '' ],
|
||||
[ 'image', 'varchar', '256' ],
|
||||
];
|
||||
public $plugin;
|
||||
|
||||
@ -37,17 +39,21 @@ class Positions extends DatabaseModel {
|
||||
$this->plugin = new Plugin;
|
||||
}
|
||||
|
||||
public function create( $name, $position, $start, $end, $details ) {
|
||||
public function create( $name, $position, $start, $end, $details, $detailsNobs = '' ) {
|
||||
if ( !$this->plugin->checkEnabled() ) {
|
||||
Debug::info( 'Resume is disabled in the config.' );
|
||||
return false;
|
||||
}
|
||||
if ( empty( $detailsNobs ) ) {
|
||||
$detailsNobs = $details;
|
||||
}
|
||||
$fields = [
|
||||
'name' => $name,
|
||||
'position' => $position,
|
||||
'start' => $start,
|
||||
'end' => $end,
|
||||
'details' => $details,
|
||||
'details_nobs' => $detailsNobs,
|
||||
];
|
||||
if ( !self::$db->insert( $this->tableName, $fields ) ) {
|
||||
Debug::info( 'Position::create - failed to insert to db' );
|
||||
|
@ -15,5 +15,8 @@
|
||||
<label for="details">Details:</label><br>
|
||||
<textarea id="details" name="details" rows="20" cols="50" required></textarea><br><br>
|
||||
|
||||
<label for="details">Details ( No BS ):</label><br>
|
||||
<textarea id="detailsNobs" name="detailsNobs" rows="20" cols="50" required></textarea><br><br>
|
||||
|
||||
<input type="submit" name="submit" value="Submit">
|
||||
</form>
|
@ -15,5 +15,8 @@
|
||||
<label for="details">Details:</label><br>
|
||||
<textarea id="details" name="details" rows="20" cols="50" required>{details}</textarea><br><br>
|
||||
|
||||
<label for="details">Details ( No BS ):</label><br>
|
||||
<textarea id="detailsNobs" name="detailsNobs" rows="20" cols="50" required>{details_nobs}</textarea><br><br>
|
||||
|
||||
<input type="submit" name="submit" value="Submit">
|
||||
</form>
|
@ -1,9 +1,9 @@
|
||||
<div class="col-lg-12 text-center" role="group" aria-label="Resume Downloads">
|
||||
<div class="offset-4 col--4 text-center mt-3" role="group" aria-label="Resume Downloads">
|
||||
<div class="btn-group text-center" role="group" aria-label="Resume Downloads">
|
||||
<h3>Download</h3>
|
||||
<a href="/downloads/JoeyKimsey-resume.docx" class="btn btn-default" role="button">Word</a>
|
||||
<a href="/downloads/JoeyKimsey-resume.pdf" class="btn btn-default" role="button">PDF</a>
|
||||
<a href="/downloads/JoeyKimsey-resume.md" class="btn btn-default" role="button">Markdown</a>
|
||||
<a href="/downloads/JoeyKimsey-resume.txt" class="btn btn-default" role="button">Text</a>
|
||||
<h3 class="px-3">Download</h3>
|
||||
<a href="/downloads/JoeyKimsey-resume.docx" class="btn btn-primary" role="button">Word</a>
|
||||
<a href="/downloads/JoeyKimsey-resume.pdf" class="btn btn-primary" role="button">PDF</a>
|
||||
<a href="/downloads/JoeyKimsey-resume.md" class="btn btn-primary" role="button">Markdown</a>
|
||||
<a href="/downloads/JoeyKimsey-resume.txt" class="btn btn-primary" role="button">Text</a>
|
||||
</div>
|
||||
</div>
|
@ -1,4 +1,10 @@
|
||||
<div class="btn-group btn-group-justified" role="group" aria-label="Resume View Type">
|
||||
<a href="?view=tiimeline" class="btn btn-default" role="button">Timeliine</a>
|
||||
<a href="?" class="btn btn-default" role="button">Standard</a>
|
||||
<div class="mb-3 row" role="group" aria-label="Resume View Type">
|
||||
<div class="btn-group btn-group-justified mb-3 col-6 offset-3" role="group" aria-label="Resume View Type">
|
||||
<a href="?view=tiimeline" class="btn btn-primary" role="button">Timeline</a>
|
||||
<a href="?" class="btn btn-primary" role="button">Standard</a>
|
||||
</div>
|
||||
<div class="form-check form-switch mb-3 col-3 d-flex align-items-center">
|
||||
<input class="form-check-input" type="checkbox" role="switch" name="hidebs" id="hidebs" value="true">
|
||||
<label class="form-check-label ps-2" for="hidebs">Hide the BS</label>
|
||||
</div>
|
||||
</div>
|
@ -1,18 +1,34 @@
|
||||
<h1>Resume</h1>
|
||||
<hr>
|
||||
{RESUME_NAV}
|
||||
{LOOP}
|
||||
<div class="resume-position">
|
||||
<h3 class="resume-position-title">{name}</h3>
|
||||
<p><b>{position}</b> from <i>{prettyStart}</i> to <i>{prettyEnd}</i></p>
|
||||
<div class="well">
|
||||
{details}
|
||||
<div class="card context-main context-main-bg col-8 offset-2 my-4 p-3">
|
||||
<h2 class="text-center">Resume</h2>
|
||||
<hr>
|
||||
{RESUME_NAV}
|
||||
{LOOP}
|
||||
<div class="card context-main context-third-bg py-2 my-2 rounded">
|
||||
<div class="row g-0 px-3">
|
||||
<div class="col-md-4 d-flex justify-content-center align-items-center">
|
||||
<img class="img-fluid rounded" src="{image}" alt="{name}">
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title">{name}</h4>
|
||||
<p class="card-text">
|
||||
<b>{position}</b> from <i>{prettyStart}</i> to <i>{prettyEnd}</i>
|
||||
</p>
|
||||
<div class="details card-text">
|
||||
{details}
|
||||
</div>
|
||||
<div class="details_nobs card-text d-none">
|
||||
{details_nobs}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<div class="resume-position">
|
||||
<p>None Found</p>
|
||||
</div>
|
||||
{/ALT}
|
||||
{RESUME_DOWNLOADS}
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<div class="resume-position">
|
||||
<p>None Found</p>
|
||||
</div>
|
||||
{/ALT}
|
||||
{RESUME_DOWNLOADS}
|
||||
</div>
|
@ -1,22 +1,33 @@
|
||||
<h1>Resume</h1>
|
||||
<hr>
|
||||
{RESUME_NAV}
|
||||
{LOOP}
|
||||
<div class="resume-timeline">
|
||||
<div class="timeline-container {side}">
|
||||
<div class="timeline-content">
|
||||
<h3 class="resume-position-title">{name}</h3>
|
||||
<p><b>{position}</b> from <i>{prettyStart}</i> to <i>{prettyEnd}</i></p>
|
||||
<div class="well">
|
||||
{details}
|
||||
<div class="card context-main context-main-bg col-8 offset-2 my-4 p-3">
|
||||
<h2 class="text-center">Resume</h2>
|
||||
<hr>
|
||||
{RESUME_NAV}
|
||||
<div class="details_nobs card-text d-none text-center col-6 offset-3">
|
||||
<p>
|
||||
Honestly, I really wanted to do something fun and interactive here.
|
||||
Unfortunately I didn't have a specific idea in mind and this was abandoned in favor of spending my time somewhere with a bigger impact.
|
||||
</p>
|
||||
</div>
|
||||
{LOOP}
|
||||
<div class="resume-timeline">
|
||||
<div class="timeline-container {side}">
|
||||
<div class="timeline-content context-third-bg">
|
||||
<h3 class="resume-position-title">{name}</h3>
|
||||
<p><b>{position}</b> from <i>{prettyStart}</i> to <i>{prettyEnd}</i></p>
|
||||
<div class="details card-text">
|
||||
{details}
|
||||
</div>
|
||||
<div class="details_nobs card-text d-none">
|
||||
{details_nobs}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<div class="resume-timeline">
|
||||
<p>None Found</p>
|
||||
</div>
|
||||
{/ALT}
|
||||
{RESUME_DOWNLOADS}
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<div class="resume-timeline">
|
||||
<p>None Found</p>
|
||||
</div>
|
||||
{/ALT}
|
||||
{RESUME_DOWNLOADS}
|
||||
</div>
|
@ -28,7 +28,7 @@ class Wip extends AdminController {
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
self::$projects = new Projects;
|
||||
self::$title = 'Admin - Projects';
|
||||
self::$title = 'Admin - WIP';
|
||||
$view = Navigation::activePageSelect( 'nav.admin', '/admin/wip' );
|
||||
Components::set( 'ADMINNAV', $view );
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ class Wip extends Plugin {
|
||||
];
|
||||
public $admin_links = [
|
||||
[
|
||||
'text' => '<i class="fa fa-fw fa-support"></i> Wip',
|
||||
'text' => '<i class="fa fa-fw fa-flask"></i> Wip',
|
||||
'url' => '{ROOT_URL}admin/wip',
|
||||
],
|
||||
];
|
||||
|
@ -1,16 +1,48 @@
|
||||
<h2>Create Project</h2>
|
||||
<form action="#" method="POST">
|
||||
<label for="title">Title:</label><br>
|
||||
<input type="text" id="title" name="title" required><br><br>
|
||||
<div class="context-main-bg context-main p-3">
|
||||
<legend class="text-center">Add WIP</legend>
|
||||
<hr>
|
||||
{ADMIN_BREADCRUMBS}
|
||||
<form method="post">
|
||||
<fieldset>
|
||||
<!-- Title -->
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Title:</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="title" id="title" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="progress">Progress:</label><br>
|
||||
<input type="text" id="progress" name="progress" required><br><br>
|
||||
<!-- Progress -->
|
||||
<div class="mb-3 row">
|
||||
<label for="progress" class="col-lg-5 col-form-label text-end">Progress:</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="progress" id="progress" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="startDate">Start Month/Year:</label><br>
|
||||
<input type="month" id="startDate" name="startDate" required><br><br>
|
||||
<!-- Start Month/Year -->
|
||||
<div class="mb-3 row">
|
||||
<label for="startDate" class="col-lg-5 col-form-label text-end">Start Month/Year:</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="month" class="form-control" name="startDate" id="startDate" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="description">Description:</label><br>
|
||||
<textarea id="description" name="description" rows="20" cols="50" required></textarea><br><br>
|
||||
<!-- Description -->
|
||||
<div class="mb-3 row">
|
||||
<label for="description" class="col-lg-5 col-form-label text-end">Description:</label>
|
||||
<div class="col-lg-3">
|
||||
<textarea class="form-control" name="description" maxlength="2000" rows="5" cols="50" id="description"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="submit" name="submit" value="Submit">
|
||||
</form>
|
||||
<!-- Hidden Token -->
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
|
||||
<!-- Submit Button -->
|
||||
<div class="text-center">
|
||||
<button type="submit" name="submit" value="submit" class="btn btn-primary btn-lg">Create</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
@ -1,16 +1,48 @@
|
||||
<h2>Edit Project</h2>
|
||||
<form action="#" method="POST">
|
||||
<label for="title">Title:</label><br>
|
||||
<input type="text" id="title" name="title" value="{title}" required><br><br>
|
||||
<div class="context-main-bg context-main p-3">
|
||||
<legend class="text-center">Edit WIP</legend>
|
||||
<hr>
|
||||
{ADMIN_BREADCRUMBS}
|
||||
<form method="post">
|
||||
<fieldset>
|
||||
<!-- Title -->
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Title:</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="title" id="title" value="{title}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="progress">Progress:</label><br>
|
||||
<input type="text" id="progress" name="progress" value="{progress}" required><br><br>
|
||||
<!-- Progress -->
|
||||
<div class="mb-3 row">
|
||||
<label for="progress" class="col-lg-5 col-form-label text-end">Progress:</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="progress" id="progress" value="{progress}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="startDate">Start Month/Year:</label><br>
|
||||
<input type="month" id="startDate" name="startDate" value="{startDate}" required><br><br>
|
||||
<!-- Start Month/Year -->
|
||||
<div class="mb-3 row">
|
||||
<label for="startDate" class="col-lg-5 col-form-label text-end">Start Month/Year:</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="month" class="form-control" name="startDate" id="startDate" value="{startDate}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="description">Description:</label><br>
|
||||
<textarea id="description" name="description" rows="20" cols="50" required>{description}</textarea><br><br>
|
||||
<!-- Description -->
|
||||
<div class="mb-3 row">
|
||||
<label for="description" class="col-lg-5 col-form-label text-end">Description:</label>
|
||||
<div class="col-lg-3">
|
||||
<textarea class="form-control" name="description" maxlength="2000" rows="5" cols="50" id="description">{description}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="submit" name="submit" value="Submit">
|
||||
</form>
|
||||
<!-- Hidden Token -->
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
|
||||
<!-- Submit Button -->
|
||||
<div class="text-center">
|
||||
<button type="submit" name="submit" value="submit" class="btn btn-primary btn-lg">Save</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
@ -1,41 +1,44 @@
|
||||
<legend>Works in Progress</legend>
|
||||
{PAGINATION}
|
||||
<form action="{ROOT_URL}admin/wip/delete" method="post">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 30%">Title</th>
|
||||
<th style="width: 20%">Progress</th>
|
||||
<th style="width: 20%">Start Date</th>
|
||||
<th style="width: 10%"></th>
|
||||
<th style="width: 10%"></th>
|
||||
<th style="width: 10%">
|
||||
<INPUT type="checkbox" onchange="checkAll(this)" name="check.b" value="P_[]"/>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{LOOP}
|
||||
<tr>
|
||||
<td><a href="{ROOT_URL}admin/wip/view/{ID}">{title}</a></td>
|
||||
<td>{progress}</td>
|
||||
<td>{startDate}</td>
|
||||
<td><a href="{ROOT_URL}admin/wip/edit/{ID}" class="btn btn-sm btn-warning" role="button"><i class="glyphicon glyphicon-edit"></i></a></td>
|
||||
<td><a href="{ROOT_URL}admin/wip/delete/{ID}" class="btn btn-sm btn-danger" role="button"><i class="glyphicon glyphicon-trash"></i></a></td>
|
||||
<td>
|
||||
<input type="checkbox" value="{ID}" name="P_[]">
|
||||
</td>
|
||||
</tr>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<tr>
|
||||
<td colspan="7">
|
||||
No results to show.
|
||||
</td>
|
||||
</tr>
|
||||
{/ALT}
|
||||
</tbody>
|
||||
</table>
|
||||
<a href="{ROOT_URL}admin/wip/create" class="btn btn-sm btn-primary" role="button">Create</a>
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-sm btn-danger">Delete</button>
|
||||
</form>
|
||||
<div class="context-main-bg context-main p-3">
|
||||
<legend class="text-center">Works in Progress</legend>
|
||||
<hr>
|
||||
{ADMIN_BREADCRUMBS}
|
||||
<form action="{ROOT_URL}admin/wip/delete" method="post">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" style="width: 30%">Title</th>
|
||||
<th scope="col" style="width: 20%">Progress</th>
|
||||
<th scope="col" style="width: 20%">Start Date</th>
|
||||
<th scope="col" style="width: 10%"></th>
|
||||
<th scope="col" style="width: 10%"></th>
|
||||
<th scope="col" style="width: 10%">
|
||||
<input type="checkbox" onchange="checkAll(this)" name="check.b" value="P_[]">
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{LOOP}
|
||||
<tr>
|
||||
<td><a href="{ROOT_URL}admin/wip/view/{ID}">{title}</a></td>
|
||||
<td>{progress}</td>
|
||||
<td>{startDate}</td>
|
||||
<td><a href="{ROOT_URL}admin/wip/edit/{ID}" class="btn btn-sm btn-warning" role="button"><i class="fa fa-fw fa-pencil"></i></a></td>
|
||||
<td><a href="{ROOT_URL}admin/wip/delete/{ID}" class="btn btn-sm btn-danger" role="button"><i class="fa fa-fw fa-trash"></i></a></td>
|
||||
<td>
|
||||
<input type="checkbox" value="{ID}" name="P_[]">
|
||||
</td>
|
||||
</tr>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<tr>
|
||||
<td colspan="7">
|
||||
No results to show.
|
||||
</td>
|
||||
</tr>
|
||||
{/ALT}
|
||||
</tbody>
|
||||
</table>
|
||||
<a href="{ROOT_URL}admin/wip/create" class="btn btn-sm btn-primary" role="button">Create</a>
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></button>
|
||||
</form>
|
||||
</div>
|
@ -1,8 +1,46 @@
|
||||
<legend>WIP</legend>
|
||||
<div class="wip-project">
|
||||
<h3 class="wip-project-title">{name}</h3>
|
||||
<p><b>{position}</b> from <i>{prettyStart}</i> to <i>{prettyEnd}</i></p>
|
||||
<div class="well">
|
||||
{details}
|
||||
<div class="container py-4">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
{ADMIN_BREADCRUMBS}
|
||||
<div class="card shadow">
|
||||
<!-- Card Header -->
|
||||
<div class="card-header text-center bg-dark text-white">
|
||||
<h3 class="card-title mb-0">{title}</h3>
|
||||
</div>
|
||||
|
||||
<!-- Card Body -->
|
||||
<div class="card-body">
|
||||
<div class="row align-items-center">
|
||||
<!-- Details -->
|
||||
<table class="table table-borderless">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row" class="col-3">Title</th>
|
||||
<td>{title}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Progress</th>
|
||||
<td>{progress}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Started:</th>
|
||||
<td>{DTC}{startDate}{/DTC}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Description</th>
|
||||
<td>{description}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Admin Controls -->
|
||||
<div class="card-footer text-center">
|
||||
<a href="{ROOT_URL}admin/wip/edit/{ID}" class="btn btn-sm btn-warning"><i class="fa fa-fw fa-pencil"></i></a>
|
||||
<a href="{ROOT_URL}admin/wip/delete/{ID}" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,19 +1,24 @@
|
||||
<h1>Work in Progress</h1>
|
||||
<hr>
|
||||
{LOOP}
|
||||
<div class="wip-project">
|
||||
<h3 class="wip-project-title">{title}</h3>
|
||||
<p><b>Started: </b><i>{prettyStart}</i></p>
|
||||
<div class="progress">
|
||||
<div class="progress-bar" role="progressbar" style="width: {progress}%" aria-valuenow="{progress}" aria-valuemin="0" aria-valuemax="100"></div>
|
||||
<div class="col-8 mx-auto p-3 rounded shadow-sm my-4 context-main-bg">
|
||||
<h1 class="text-center">Work in Progress</h1>
|
||||
<hr>
|
||||
{LOOP}
|
||||
<div class="wip-project">
|
||||
<h3 class="wip-project-title atb-green">{title}</h3>
|
||||
<small class=""><b>Started: </b><i>{prettyStart}</i></small>
|
||||
<div class="progress mt-2">
|
||||
<div class="progress-bar atb-green-bg" role="progressbar" style="width: {progress}%" aria-valuenow="{progress}" aria-valuemin="0" aria-valuemax="100"></div>
|
||||
</div>
|
||||
<div class="well my-3">
|
||||
{description}
|
||||
</div>
|
||||
</div>
|
||||
<div class="well">
|
||||
{description}
|
||||
<div class="col-6 offset-3 my-2">
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<div class="wip-project">
|
||||
<p>None Found</p>
|
||||
</div>
|
||||
{/ALT}
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<div class="wip-project">
|
||||
<p>None Found</p>
|
||||
</div>
|
||||
{/ALT}
|
||||
</div>
|
@ -42,9 +42,8 @@
|
||||
<header class="p-3 text-bg-dark">
|
||||
<div class="container">
|
||||
<div class="d-flex flex-wrap align-items-center justify-content-center justify-content-lg-start">
|
||||
<img src="{ROOT_URL}{LOGO}" class="bi me-2" width="40" height="32" alt="{SITENAME} Logo" aria-label="{SITENAME} Logo">
|
||||
<a href="/" class="d-flex align-items-center mb-2 mb-lg-0 text-white text-decoration-none">
|
||||
{SITENAME}
|
||||
<img src="{ROOT_URL}{LOGO}" class="rounded" height="48" alt="{SITENAME} Logo" aria-label="{SITENAME} Logo">
|
||||
</a>
|
||||
{topNavLeft}
|
||||
<div class="text-end d-flex align-items-center">
|
||||
|
@ -1,15 +1,20 @@
|
||||
<h1>About Me</h1>
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="container context-main-bg p-3 my-4">
|
||||
<div class="row d-flex justify-content-center align-items-center m-5">
|
||||
<div class="col-md-4">
|
||||
<img src="/images/on-call.jpg" class="img-responsive center-block" alt="Description of image" style="height: 480px;">
|
||||
<img src="/images/voting.jpg" class="img-fluid center-block" alt="Description of image">
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<img src="/images/voting.jpg" class="img-responsive center-block" alt="Description of image">
|
||||
<img src="/images/on-call.jpg" class="img-fluid center-block" alt="Description of image">
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<img src="/images/cleaned-up.jpg" class="img-responsive center-block" alt="Description of image">
|
||||
<img src="/images/cleaned-up.jpg" class="img-fluid center-block" alt="Description of image">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row d-flex justify-content-center align-items-center m-5">
|
||||
<h2 class="text-center mb-4">About Me</h2>
|
||||
<div class="col-md-offset-3 col-md-6">
|
||||
<hr>
|
||||
</div>
|
||||
<div class="col-md-offset-2 col-md-8" style="padding-top: 20px;">
|
||||
<p>Generally speaking, I feel uncomfortable talking to anyone about myself.
|
||||
@ -34,8 +39,4 @@
|
||||
When i moved to Atlanta, I finally found an employer willing to give me a shot and my resume picks up from there.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
9
app/views/changes/bedrock.html
Normal file
@ -0,0 +1,9 @@
|
||||
<div class="col-8 mx-auto p-4 rounded shadow-sm context-main-bg my-4">
|
||||
<h2 class="text-center mb-4">Bedrock Changes</h2>
|
||||
<p class="lead">
|
||||
Here you can find a simple list of the important changes made to the Bedrock library.
|
||||
</p>
|
||||
<p class="text-muted">
|
||||
Not all changes may be addressed individually on this page.
|
||||
</p>
|
||||
</div>
|
9
app/views/changes/canary.html
Normal file
@ -0,0 +1,9 @@
|
||||
<div class="col-8 mx-auto p-4 rounded shadow-sm context-main-bg my-4">
|
||||
<h2 class="text-center mb-4">Canary Changes</h2>
|
||||
<p class="lead">
|
||||
Here you can find a simple list of the important changes made to the Canary library.
|
||||
</p>
|
||||
<p class="text-muted">
|
||||
Not all changes may be addressed individually on this page.
|
||||
</p>
|
||||
</div>
|
9
app/views/changes/hermes.html
Normal file
@ -0,0 +1,9 @@
|
||||
<div class="col-8 mx-auto p-4 rounded shadow-sm context-main-bg my-4">
|
||||
<h2 class="text-center mb-4">Hermes Changes</h2>
|
||||
<p class="lead">
|
||||
Here you can find a simple list of the important changes made to the Hermes library.
|
||||
</p>
|
||||
<p class="text-muted">
|
||||
Not all changes may be addressed individually on this page.
|
||||
</p>
|
||||
</div>
|
9
app/views/changes/houdini.html
Normal file
@ -0,0 +1,9 @@
|
||||
<div class="col-8 mx-auto p-4 rounded shadow-sm context-main-bg my-4">
|
||||
<h2 class="text-center mb-4">Houdini Changes</h2>
|
||||
<p class="lead">
|
||||
Here you can find a simple list of the important changes made to the Houdini library.
|
||||
</p>
|
||||
<p class="text-muted">
|
||||
Not all changes may be addressed individually on this page.
|
||||
</p>
|
||||
</div>
|
27
app/views/deps/bedrock.html
Normal file
@ -0,0 +1,27 @@
|
||||
<div class="col-8 mx-auto p-4 rounded shadow-sm context-main-bg my-4">
|
||||
<div class="container col-xxl-8">
|
||||
<div class="row flex-lg-row-reverse align-items-center g-5 py-5">
|
||||
<div class="col-10 col-sm-8 col-lg-6">
|
||||
<img src="{ROOT_URL}images/bedrock.jpg" class="d-block mx-lg-auto img-fluid" alt="Bootstrap Themes" width="700" height="500" loading="lazy">
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<h1 class="display-5 fw-bold lh-1 mb-3">Bedrock</h1>
|
||||
<p class="lead">
|
||||
Bedrock, as the name may suggest, is the core functionality the project is built on.
|
||||
From Basic text checks to the core functionality behind models and controllers, bedrock handles it all.
|
||||
</p>
|
||||
<div class="d-grid gap-2 d-md-flex justify-content-md-start">
|
||||
<a href="/bedrock/git" class="btn btn-primary btn-lg px-4 me-sm-3">
|
||||
Git
|
||||
</a>
|
||||
<a href="/bedrock/packagist" class="btn btn-outline-primary btn-lg px-4">
|
||||
Packagist
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-muted">
|
||||
For a list of recent changes, please check <a href="/bedrock/changes">here</a>.
|
||||
</p>
|
||||
</div>
|
27
app/views/deps/canary.html
Normal file
@ -0,0 +1,27 @@
|
||||
<div class="col-8 mx-auto p-4 rounded shadow-sm context-main-bg my-4">
|
||||
<div class="container col-xxl-8">
|
||||
<div class="row flex-lg-row-reverse align-items-center g-5 py-5">
|
||||
<div class="col-10 col-sm-8 col-lg-6">
|
||||
<img src="{ROOT_URL}images/canary.jpg" class="d-block mx-lg-auto img-fluid" alt="Bootstrap Themes" width="700" height="500" loading="lazy">
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<h1 class="display-5 fw-bold lh-1 mb-3">Canary</h1>
|
||||
<p class="lead">
|
||||
Canary is a library that allows {SITENAME} to add logs during execution.
|
||||
The resulting logs can be printed to the browser console in real-time, saved to a log file, or even used on-page for debugging.
|
||||
</p>
|
||||
<div class="d-grid gap-2 d-md-flex justify-content-md-start">
|
||||
<a href="/canary/git" class="btn btn-primary btn-lg px-4 me-sm-3">
|
||||
Git
|
||||
</a>
|
||||
<a href="/canary/packagist" class="btn btn-outline-primary btn-lg px-4">
|
||||
Packagist
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-muted">
|
||||
For a list of recent changes, please check <a href="/canary/changes">here</a>.
|
||||
</p>
|
||||
</div>
|
27
app/views/deps/hermes.html
Normal file
@ -0,0 +1,27 @@
|
||||
<div class="col-8 mx-auto p-4 rounded shadow-sm context-main-bg my-4">
|
||||
<div class="container col-xxl-8">
|
||||
<div class="row flex-lg-row-reverse align-items-center g-5 py-5">
|
||||
<div class="col-10 col-sm-8 col-lg-6">
|
||||
<img src="{ROOT_URL}images/hermes.jpg" class="d-block mx-lg-auto img-fluid" alt="Bootstrap Themes" width="700" height="500" loading="lazy">
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<h1 class="display-5 fw-bold lh-1 mb-3">Hermes</h1>
|
||||
<p class="lead">
|
||||
Hermes is a simple library that provides a small set of commonly used helper functions.
|
||||
These functions primarily help with navigating the url or file systems in a consistent way across several libraries and projects.
|
||||
</p>
|
||||
<div class="d-grid gap-2 d-md-flex justify-content-md-start">
|
||||
<a href="/hermes/git" class="btn btn-primary btn-lg px-4 me-sm-3">
|
||||
Git
|
||||
</a>
|
||||
<a href="/hermes/packagist" class="btn btn-outline-primary btn-lg px-4">
|
||||
Packagist
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-muted">
|
||||
For a list of recent changes, please check <a href="/hermes/changes">here</a>.
|
||||
</p>
|
||||
</div>
|
27
app/views/deps/houdini.html
Normal file
@ -0,0 +1,27 @@
|
||||
<div class="col-8 mx-auto p-4 rounded shadow-sm context-main-bg my-4">
|
||||
<div class="container col-xxl-8">
|
||||
<div class="row flex-lg-row-reverse align-items-center g-5 py-5">
|
||||
<div class="col-10 col-sm-8 col-lg-6">
|
||||
<img src="{ROOT_URL}images/houdini.jpg" class="d-block mx-lg-auto img-fluid" alt="Bootstrap Themes" width="700" height="500" loading="lazy">
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<h1 class="display-5 fw-bold lh-1 mb-3">Houdini</h1>
|
||||
<p class="lead">
|
||||
Houdini is where the front-end magic happens and it serves as the primary front-end html generator.
|
||||
It handles the storage and applications of frontend components, all the views, templates, and several other critical features of the front-end.
|
||||
</p>
|
||||
<div class="d-grid gap-2 d-md-flex justify-content-md-start">
|
||||
<a href="/houdini/git" class="btn btn-primary btn-lg px-4 me-sm-3">
|
||||
Git
|
||||
</a>
|
||||
<a href="/houdini/packagist" class="btn btn-outline-primary btn-lg px-4">
|
||||
Packagist
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-muted">
|
||||
For a list of recent changes, please check <a href="/houdini/changes">here</a>.
|
||||
</p>
|
||||
</div>
|
47
app/views/deps/index.html
Normal file
@ -0,0 +1,47 @@
|
||||
<div class="col-8 mx-auto p-4 rounded shadow-sm context-main-bg my-4">
|
||||
<h2 class="text-center mb-4">{SITENAME} Libraries</h2>
|
||||
<p class="lead">
|
||||
{SITENAME} uses a number of libraries developed in conjunction with the main project. Here you can find a list of these libraries with more information on each.
|
||||
</p>
|
||||
<hr>
|
||||
<div class="container px-4 py-5" id="custom-cards">
|
||||
<div class="row row-cols-1 row-cols-lg-3 align-items-stretch g-4 py-5">
|
||||
<div class="col">
|
||||
<a href="/bedrock" class="text-decoration-none">
|
||||
<div class="card card-cover h-100 overflow-hidden text-bg-dark rounded-4 shadow-lg" style="background-image: url('{ROOT_URL}images/bedrock.jpg');">
|
||||
<div class="d-flex flex-column h-100 p-5 pb-3 text-white text-shadow-1">
|
||||
<h3 class="pt-5 mt-5 mb-4 display-6 lh-1 fw-bold">Bedrock</h3>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a href="/canary" class="text-decoration-none">
|
||||
<div class="card card-cover h-100 overflow-hidden text-bg-dark rounded-4 shadow-lg" style="background-image: url('{ROOT_URL}images/canary.jpg');">
|
||||
<div class="d-flex flex-column h-100 p-5 pb-3 text-white text-shadow-1">
|
||||
<h3 class="pt-5 mt-5 mb-4 display-6 lh-1 fw-bold">Canary</h3>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a href="/hermes" class="text-decoration-none">
|
||||
<div class="card card-cover h-100 overflow-hidden text-bg-dark rounded-4 shadow-lg" style="background-image: url('{ROOT_URL}images/hermes.jpg');">
|
||||
<div class="d-flex flex-column h-100 p-5 pb-3 text-shadow-1">
|
||||
<h3 class="pt-5 mt-5 mb-4 display-6 lh-1 fw-bold">Hermes</h3>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a href="/houdini" class="text-decoration-none">
|
||||
<div class="card card-cover h-100 overflow-hidden text-bg-dark rounded-4 shadow-lg" style="background-image: url('{ROOT_URL}images/houdini.jpg');">
|
||||
<div class="d-flex flex-column h-100 p-5 pb-3 text-white text-shadow-1">
|
||||
<h3 class="pt-5 mt-5 mb-4 display-6 lh-1 fw-bold">Houdini</h3>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,13 +1,11 @@
|
||||
<div class="container border-top border-white mt-auto">
|
||||
<footer class="pt-4">
|
||||
<div class="row">
|
||||
{FOOTER_LEFT}
|
||||
{FOOTER_CENTER}
|
||||
{FOOTER_RIGHT}
|
||||
</div>
|
||||
<div class="d-flex flex-column flex-sm-row justify-content-between py-3 mt-2 border-top border-white">
|
||||
{COPY}
|
||||
{SOCIAL}
|
||||
</div>
|
||||
<div class="container">
|
||||
<footer class="d-flex flex-wrap justify-content-between align-items-center py-3 my-4 border-top">
|
||||
<div class="col-md-6 d-flex align-items-center">
|
||||
<a href="/" class="mb-3 me-2 mb-md-0 text-muted text-decoration-none lh-1">
|
||||
<img src="{ROOT_URL}images/logo.png" class="bi me-2" width="40" height="32" alt="{SITENAME} Logo" aria-label="{SITENAME} Logo">
|
||||
</a>
|
||||
{COPY}
|
||||
</div>
|
||||
{SOCIAL}
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
@ -1,55 +1,62 @@
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h1>Interested in hiring me?</h1>
|
||||
<h3>
|
||||
<span class="label label-primary">Open To</span> Freelance / Limited Contract Work
|
||||
</h3>
|
||||
<h3>
|
||||
<span class="label label-success">Actively Seeking</span> Long-Term Contract Work
|
||||
</h3>
|
||||
<h3>
|
||||
<span class="label label-success">Actively Seeking</span> Salaried Positions
|
||||
</h3>
|
||||
|
||||
<h3>Disclaimer</h3>
|
||||
|
||||
<p>I am a full-stack developer but I am generally more capable at backend work. If your project is requires complex design elements or revisions, I may not be the right fit for your needs.</p>
|
||||
|
||||
<h3>Pricing</h3>
|
||||
<div class="container context-main-bg p-3 my-4">
|
||||
<!-- Hero Section -->
|
||||
<div class="text-center py-5 rounded context-third-bg">
|
||||
<h1 class="fw-bold">Let's Build Something Amazing Together</h1>
|
||||
<p class="lead text-muted">I’m a full-stack developer specializing in backend development. Whether you're looking for freelance support, a long-term contractor, or a full-time developer, I’m here to help!</p>
|
||||
<button class="btn btn-primary btn-lg mt-3">Get in Touch</button>
|
||||
</div>
|
||||
|
||||
<p>When it comes to this industry; level-of-effort is the key to everything.
|
||||
With that in mind, it can be challenging to reliably quote a rate for my time.
|
||||
For most purposes my rate is $75/hour with a two hour minimum. With larger or repeat projects, compensation is more flexible.</p>
|
||||
<form action="" method="post" class="form-horizontal">
|
||||
<h3>Contact</h3>
|
||||
<p>For privacy reasons, I do not make my personal contact details publicly available. In order to schedule a call or meeting, please connect with me on LinkedIn or use the contact form below.</p>
|
||||
<p>I am generally able to respond to requests within 24 hours.</p>
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="name" class="col-lg-1 control-label">Name:</label>
|
||||
<div class="col-lg-2">
|
||||
<input class="form-control" type="text" name="name" id="name">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="contactEmail" class="col-lg-1 control-label">E-mail:</label>
|
||||
<div class="col-lg-2">
|
||||
<input class="form-control" type="text" name="contactEmail" id="contactEmail">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="details" class="col-lg-3 control-label">Details:<br> (max:2000 characters)</label>
|
||||
<div class="col-lg-6">
|
||||
<textarea class="form-control" name="details" maxlength="2000" rows="10" cols="50" id="details"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-lg btn-primary center-block">Submit</button><br>
|
||||
</form>
|
||||
<!-- Work Preferences -->
|
||||
<div class="mt-5">
|
||||
<h2 class="text-center mb-4">Work Preferences</h2>
|
||||
<div class="d-flex justify-content-center gap-3 flex-wrap">
|
||||
<span class="badge bg-primary p-3">Freelance / Limited Contract Work</span>
|
||||
<span class="badge bg-success p-3">Long-Term Contract Work</span>
|
||||
<span class="badge bg-success p-3">Salaried Positions</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- About Section -->
|
||||
<div class="mt-5 ps-3">
|
||||
<h2>About Me</h2>
|
||||
<p class="text-muted">
|
||||
As a full-stack developer, I excel in backend development but may not be the best fit for design-heavy projects requiring frequent revisions. I focus on delivering robust and scalable solutions for my clients.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Pricing Section -->
|
||||
<div class="mt-5 ps-3">
|
||||
<h2>Pricing</h2>
|
||||
<p class="text-muted">
|
||||
My standard rate is <strong>$75/hour</strong> with a two-hour minimum. For larger or repeat projects, I’m open to flexible arrangements. Let’s discuss your project to find a solution that works for both of us.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Contact Form -->
|
||||
<div class="mt-5 ps-3">
|
||||
<h2>Contact Me</h2>
|
||||
<p class="text-muted">To respect privacy, I don’t share personal contact details publicly. Please fill out the form below or connect with me on LinkedIn. I typically respond within 24 hours.</p>
|
||||
|
||||
<form action="" method="post" class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<label for="name" class="form-label">Name</label>
|
||||
<input type="text" class="form-control" id="name" name="name" placeholder="Your Full Name">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="contactEmail" class="form-label">Email</label>
|
||||
<input type="email" class="form-control" id="contactEmail" name="contactEmail" placeholder="Your Email Address">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label for="details" class="form-label">Details (max 2000 characters)</label>
|
||||
<textarea class="form-control" id="details" name="details" rows="5" maxlength="2000" placeholder="Tell me about your project"></textarea>
|
||||
</div>
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<div class="col-12 text-center">
|
||||
<button type="submit" name="submit" value="submit" class="btn btn-primary btn-lg">Submit</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -1,75 +1,196 @@
|
||||
<div class="container">
|
||||
<div id="myCarousel" class="carousel slide m-3" data-bs-ride="carousel">
|
||||
<div class="carousel-indicators">
|
||||
<button type="button" data-bs-target="#myCarousel" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
|
||||
<button type="button" data-bs-target="#myCarousel" data-bs-slide-to="1" aria-label="Slide 2"></button>
|
||||
<button type="button" data-bs-target="#myCarousel" data-bs-slide-to="2" aria-label="Slide 3"></button>
|
||||
<div class="col-8 offset-2 mb-5 mt-4">
|
||||
<div class="p-4 mb-4 rounded-3 context-main context-main-bg">
|
||||
<div class="container text-center">
|
||||
<div class="jumbotron text-center pb-5">
|
||||
<h1 class="display-5 fw-bold">Joey Kimsey</h1>
|
||||
<p class="fs-4">
|
||||
I tried to put something clever here, but when I didn't understand it later I changed it to:<br>
|
||||
There are too many stories to tell here but explore a few below.
|
||||
</p>
|
||||
<div class="col-4 offset-4 mb-3">
|
||||
<select class="form-control dropdown-big" id="postSelector">
|
||||
{LOOP}
|
||||
<option value="{post}">{option}</option>
|
||||
{/LOOP}
|
||||
</select>
|
||||
</div>
|
||||
<button id="goToPost" class="btn btn-primary btn-lg">Learn More</button>
|
||||
</div>
|
||||
<p>
|
||||
Thanks for taking the time to learn more about me! Forgive the implied redundancy, but my name is Joey Kimsey, and I professionally describe myself as a web developer. On this site you will find a few
|
||||
brief writings on my career and personal life as well as links to various projects and other services. At this time I don't find much value in the social media platforms. While I do have them, they serve
|
||||
more as a reservation in my name than an active party.
|
||||
</p>
|
||||
<p>
|
||||
I would love to change the landscape of social media, but alas, I feel we need to give up "free" for "fees" lest we become the product.
|
||||
</p>
|
||||
<p>
|
||||
I live on inbox-zero, and for anyone willing to suffer my google assistant on the first call, I'm always available by phone. With that said, I do not make my personal email or phone number publicly
|
||||
available on this site. If anything here peaks your interest, or you just want to talk more about a project, feel free to contact me here and I should respond relatively quickly.
|
||||
</p>
|
||||
</div>
|
||||
<div class="carousel-inner">
|
||||
<div class="carousel-item active">
|
||||
<img src="{ROOT_URL}app/images/ttp.png" class="bd-placeholder-img" alt="First slide">
|
||||
<div class="container">
|
||||
<div class="carousel-caption text-start bg-dark px-4">
|
||||
<h1>Powerful</h1>
|
||||
<p>
|
||||
The Tempus Project is built with expansion in mind. From a custom template engine to the simple to use MVC style, The Tempus Project is built to provide a powerful and stable foundation for web applications.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="carousel-item">
|
||||
<img src="{ROOT_URL}app/images/ttp-install.png" class="bd-placeholder-img" alt="Second slide">
|
||||
<div class="container">
|
||||
<div class="carousel-caption bg-dark px-4">
|
||||
<h1>Quick and Simple Installation</h1>
|
||||
<p>
|
||||
Built with rapid deployment in mind you can have The Tempus Project installed in just minutes.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="carousel-item">
|
||||
<img src="{ROOT_URL}app/images/ttp-github.png" class="bd-placeholder-img" alt="Third slide">
|
||||
<div class="container">
|
||||
<div class="carousel-caption text-end bg-dark px-4">
|
||||
<h1>Open Source</h1>
|
||||
<p>
|
||||
The Tempus Project is completely open source and only utilizes other open-source components. The Project is provided under the MIT license.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button class="carousel-control-prev" type="button" data-bs-target="#myCarousel" data-bs-slide="prev">
|
||||
<span class="carousel-control-prev-icon text-dark" aria-hidden="true"></span>
|
||||
<span class="visually-hidden">Previous</span>
|
||||
</button>
|
||||
<button class="carousel-control-next" type="button" data-bs-target="#myCarousel" data-bs-slide="next">
|
||||
<span class="carousel-control-next-icon text-dark" aria-hidden="true"></span>
|
||||
<span class="visually-hidden">Next</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="row m-3">
|
||||
<div class="col-lg-9 col-md-9 col-sm-12 col-centered">
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-md-12 col-sm-12">
|
||||
<h2>Welcome to The Tempus Project</h2>
|
||||
<hr>
|
||||
<p>The aim of The Tempus Project is to create an easy to use and implement CMS based
|
||||
around the MVC style and build using php 5.6 and MySQL. Here are some of the features:</p>
|
||||
<ul>
|
||||
<li>Fully secured registration/login system</li>
|
||||
<li>Automatic error handling</li>
|
||||
<li>Built in debugging tools</li>
|
||||
<li>Testing implements to help you expand it further</li>
|
||||
<li>Customizable logging to ensure you are always up to date on whats going on</li>
|
||||
<li>Simple administration panel</li>
|
||||
<li>Bug reports and feedback forms included!</li>
|
||||
<li>Drag and drop simple to install</li>
|
||||
</ul>
|
||||
<p>DISCLAIMER: as of January 1, 2025 this code is not production ready! Please use at your own risk! That being said, I am always trying to improve this system. If you have any suggestions or need to report a bug, you can do so on my <a href="https://github.com/TheTempusProject/TheTempusProject">GitHub</a>.</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="card context-main context-main-bg col-8 offset-2 mb-5">
|
||||
<div class="row g-0 px-3">
|
||||
<div class="col-md-4">
|
||||
<div id="carousel-career" class="carousel slide carousel-fade m-3" data-bs-ride="carousel">
|
||||
<div class="carousel-inner">
|
||||
<div class="carousel-item active d-flex justify-content-center align-items-center" style="height: 250px;">
|
||||
<img src="{ROOT_URL}images/ba.png" class="img-fluid" alt="Black Airplane" style="max-height: 100%; max-width: 100%; object-fit: contain;">
|
||||
</div>
|
||||
<div class="carousel-item d-flex justify-content-center align-items-center" style="height: 250px;">
|
||||
<img src="{ROOT_URL}images/emeals.png" class="img-fluid" alt="eMeals" style="max-height: 100%; max-width: 100%; object-fit: contain;">
|
||||
</div>
|
||||
<div class="carousel-item d-flex justify-content-center align-items-center" style="height: 250px;">
|
||||
<img src="{ROOT_URL}images/springbot.png" class="img-fluid" alt="Springbot" style="max-height: 100%; max-width: 100%; object-fit: contain;">
|
||||
</div>
|
||||
<div class="carousel-item d-flex justify-content-center align-items-center" style="height: 250px;">
|
||||
<img src="{ROOT_URL}images/ione.png" class="img-fluid" alt="IgnitionOne" style="max-height: 100%; max-width: 100%; object-fit: contain;">
|
||||
</div>
|
||||
</div>
|
||||
<button class="carousel-control-prev" type="button" data-bs-target="#carousel-career" data-bs-slide="prev">
|
||||
<span class="carousel-control-prev-icon text-dark" aria-hidden="true"></span>
|
||||
<span class="visually-hidden">Previous</span>
|
||||
</button>
|
||||
<button class="carousel-control-next" type="button" data-bs-target="#carousel-career" data-bs-slide="next">
|
||||
<span class="carousel-control-next-icon text-dark" aria-hidden="true"></span>
|
||||
<span class="visually-hidden">Next</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8 d-flex justify-content-center align-items-center">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title text-center">
|
||||
<a href="/resume" class="text-decoration-none">
|
||||
My Career
|
||||
</a>
|
||||
</h4>
|
||||
<p class="card-text">
|
||||
From IPB to ChatGPT and everything in-between; I have worked with, and on, many platforms. What I would refer to as my "professional experience" spans 7 years but my experience
|
||||
in this field spans another decade at least. Learn more when you view my Resume. It can be viewed, downloaded, and expounded upon via my blog. Feel free to explore and follow up with any questions.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card context-main context-main-bg col-8 offset-2 mb-5">
|
||||
<div class="row g-0 px-3">
|
||||
<div class="col-md-8 d-flex justify-content-center align-items-center">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title text-center">
|
||||
<a href="/portfolio" class="text-decoration-none">
|
||||
My Products
|
||||
</a>
|
||||
</h4>
|
||||
<p class="card-text">
|
||||
One of the downfalls I have as a developer is failing to save my failures. (trust me, its less philosophical than it sounds) Many times when I finish projects, or call it quits, the code is
|
||||
either resigned to its life in production where I would prefer it not to be publicly available, or It goes to the big backup disk in the sky. When you factor in my immense respect
|
||||
for lawyers and the whimsically worded writs they have me sign; I am left with limited examples to share. Fortunately II have some long running project examples which are available for download and review.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div id="carousel-products" class="carousel slide carousel-fade m-3" data-bs-ride="carousel">
|
||||
<div class="carousel-inner">
|
||||
<div class="carousel-item active d-flex justify-content-center align-items-center" style="height: 250px;">
|
||||
<img src="{ROOT_URL}images/AAA_M_Additions.png" class="img-fluid" alt="AAA M+ Additions" style="max-height: 100%; max-width: 100%; object-fit: contain;">
|
||||
</div>
|
||||
<div class="carousel-item d-flex justify-content-center align-items-center" style="height: 250px;">
|
||||
<img src="{ROOT_URL}images/bedrock.jpg" class="img-fluid" alt="Bedrock" style="max-height: 100%; max-width: 100%; object-fit: contain;">
|
||||
</div>
|
||||
<div class="carousel-item d-flex justify-content-center align-items-center" style="height: 250px;">
|
||||
<img src="{ROOT_URL}images/canary.jpg" class="img-fluid" alt="Canary" style="max-height: 100%; max-width: 100%; object-fit: contain;">
|
||||
</div>
|
||||
<div class="carousel-item d-flex justify-content-center align-items-center" style="height: 250px;">
|
||||
<img src="{ROOT_URL}images/houdini.jpg" class="img-fluid" alt="Houdini" style="max-height: 100%; max-width: 100%; object-fit: contain;">
|
||||
</div>
|
||||
<div class="carousel-item d-flex justify-content-center align-items-center" style="height: 250px;">
|
||||
<img src="{ROOT_URL}images/hermes.jpg" class="img-fluid" alt="Houdini" style="max-height: 100%; max-width: 100%; object-fit: contain;">
|
||||
</div>
|
||||
</div>
|
||||
<button class="carousel-control-prev" type="button" data-bs-target="#carousel-products" data-bs-slide="prev">
|
||||
<span class="carousel-control-prev-icon text-dark" aria-hidden="true"></span>
|
||||
<span class="visually-hidden">Previous</span>
|
||||
</button>
|
||||
<button class="carousel-control-next" type="button" data-bs-target="#carousel-products" data-bs-slide="next">
|
||||
<span class="carousel-control-next-icon text-dark" aria-hidden="true"></span>
|
||||
<span class="visually-hidden">Next</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card context-main context-main-bg col-8 offset-2 mb-5">
|
||||
<div class="row g-0 px-3">
|
||||
<div class="col-md-4">
|
||||
<div id="carousel-projects" class="carousel slide carousel-fade m-3" data-bs-ride="carousel">
|
||||
<div class="carousel-inner">
|
||||
<div class="carousel-item active d-flex justify-content-center align-items-center" style="height: 250px;">
|
||||
<img src="{ROOT_URL}images/tte.png" class="img-fluid" alt="TableTopElite" style="max-height: 100%; max-width: 100%; object-fit: contain;">
|
||||
</div>
|
||||
<div class="carousel-item d-flex justify-content-center align-items-center" style="height: 250px;">
|
||||
<img src="{ROOT_URL}images/ttp.jpg" class="img-fluid" alt="eMeals" style="max-height: 100%; max-width: 100%; object-fit: contain;">
|
||||
</div>
|
||||
<div class="carousel-item d-flex justify-content-center align-items-center" style="height: 250px;">
|
||||
<img src="{ROOT_URL}images/atb.jpg" class="img-fluid" alt="eMeals" style="max-height: 100%; max-width: 100%; object-fit: contain;">
|
||||
</div>
|
||||
</div>
|
||||
<button class="carousel-control-prev" type="button" data-bs-target="#carousel-projects" data-bs-slide="prev">
|
||||
<span class="carousel-control-prev-icon text-dark" aria-hidden="true"></span>
|
||||
<span class="visually-hidden">Previous</span>
|
||||
</button>
|
||||
<button class="carousel-control-next" type="button" data-bs-target="#carousel-projects" data-bs-slide="next">
|
||||
<span class="carousel-control-next-icon text-dark" aria-hidden="true"></span>
|
||||
<span class="visually-hidden">Next</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8 d-flex justify-content-center align-items-center">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title text-center">
|
||||
<a href="/wip" class="text-decoration-none">
|
||||
My Projects
|
||||
</a>
|
||||
</h4>
|
||||
<p class="card-text">
|
||||
At any given time I have at least a half dozen projects in various stages of completion. As most could attest; interests peak and
|
||||
wain as moods and times change. Here you can find a brief overview of the various projects I am devoting some level of attention to.
|
||||
Not guaranteed acuate, and not guaranteed complete, but you're here anyways, so take a peak behind the homepage
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card context-main context-main-bg col-8 offset-2 mb-5">
|
||||
<div class="row g-0 px-3">
|
||||
<div class="col-md-8 d-flex justify-content-center align-items-center">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title text-center">
|
||||
Contact Me
|
||||
</h4>
|
||||
<p class="card-text">
|
||||
While I do not make my phone number or email available, you can still reach out about anything using my contact form here.
|
||||
</p>
|
||||
<div class="text-center">
|
||||
<a class="btn btn-outline-primary btn-lg" href="/contact" role="button">Contact Me</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 p-3">
|
||||
<img class="img-fluid" src="/images/vacation.jpg" alt="still-working">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -58,22 +58,6 @@ class TheTempusProject extends Bedrock {
|
||||
private $initialized = false;
|
||||
public $contact_footer_links = [];
|
||||
public $info_footer_links = [
|
||||
[
|
||||
'text' => 'FAQs',
|
||||
'url' => '{ROOT_URL}home/faq',
|
||||
],
|
||||
[
|
||||
'text' => 'About',
|
||||
'url' => '{ROOT_URL}home/about',
|
||||
],
|
||||
[
|
||||
'text' => 'Privacy Policy',
|
||||
'url' => '{ROOT_URL}home/privacy',
|
||||
],
|
||||
[
|
||||
'text' => 'Terms of Service',
|
||||
'url' => '{ROOT_URL}home/terms',
|
||||
],
|
||||
];
|
||||
public $admin_links = [
|
||||
[
|
||||
@ -144,6 +128,10 @@ class TheTempusProject extends Bedrock {
|
||||
'text' => 'About Me',
|
||||
'url' => '{ROOT_URL}home/about',
|
||||
],
|
||||
[
|
||||
'text' => 'Blog',
|
||||
'url' => '{ROOT_URL}blog/index',
|
||||
],
|
||||
[
|
||||
'text' => 'Hire Me',
|
||||
'url' => '{ROOT_URL}home/hire',
|
||||
|
BIN
images/atb.jpg
Normal file
After Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 15 KiB |
BIN
images/logo.png
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 11 KiB |
BIN
images/logoLarge.png
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
images/logoScaled.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
images/ttp.jpg
Normal file
After Width: | Height: | Size: 57 KiB |