Compare commits
25 Commits
main
...
1b2427352e
Author | SHA1 | Date | |
---|---|---|---|
1b2427352e | |||
7044a8d236 | |||
3c5a914edc | |||
96642ff189 | |||
3d0ae0c031 | |||
221173053f | |||
ea3b6ad716 | |||
ca053216a1 | |||
155c6a70f5 | |||
77446dff94 | |||
b1eef15ba9 | |||
b8d2550901 | |||
02892dfe6d | |||
9fe4829b47 | |||
2004837a8f | |||
f7371ae579 | |||
0067c49d4a | |||
aca4b7a528 | |||
c355b6e510 | |||
58b4ffe3af | |||
9d53ddbd94 | |||
1d311c5655 | |||
891d6d229e | |||
baa8a86606 | |||
6f0b75cfd0 |
@ -1,74 +0,0 @@
|
||||
stages:
|
||||
- prepare
|
||||
- build
|
||||
- test
|
||||
- update
|
||||
- deploy
|
||||
|
||||
variables:
|
||||
TIMEZONE: "America/New_York" # For the system in general
|
||||
DATE_TIMEZONE: ${TIMEZONE} # For PHP
|
||||
|
||||
GIT_DEPTH: 1
|
||||
GITLAB_API_URL: ${CI_API_V4_URL}
|
||||
TARGET_BRANCH: ${CI_COMMIT_REF_NAME} # This is the branch chosen in the `Pipeline Schedule`
|
||||
TARGET_REMOTE: "https://${GITLAB_USERNAME}:${GITLAB_ACCESS_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}.git"
|
||||
|
||||
# These could/should be overridden in an extending job:
|
||||
UPDATE_BRANCH_PREFIX: "update_PHP_deps_" # Used for the update branch name, it will be followed by the datetime
|
||||
GIT_USER: "DependBot" # Used for the update commit
|
||||
GIT_EMAIL: "webmaster@thetempusproject.com" # Used for the update commit
|
||||
GITLAB_USERNAME: "root" # Used for pushing the new branch and opening the MR
|
||||
GITLAB_ACCESS_TOKEN: "glpat-PKEmivGtBfbz4DVPdhzk" # Used for pushing the new branch and opening the MR
|
||||
MERGE_IF_SUCCESSFUL: "true" # Set to true, to merge automatically if the pipeline succeeds
|
||||
SECONDS_BETWEEN_POOLING: 10 # Nbr of seconds between checking if the MR pipeline is successful, so then it will merge
|
||||
JOB_GIT_FLAGS: ""
|
||||
JOB_CURL_FLAGS: ""
|
||||
JOB_COMPOSER_FLAGS: ""
|
||||
|
||||
composer_update:
|
||||
stage: update
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "main"'
|
||||
image: composer:latest
|
||||
interruptible: true # allows to stop the job if a newer pipeline starts, saving resources and allowing new jobs to start because job concurrency is limited
|
||||
script:
|
||||
- git ${JOB_GIT_FLAGS} fetch origin ${TARGET_BRANCH}
|
||||
- git ${JOB_GIT_FLAGS} checkout ${TARGET_BRANCH}
|
||||
- git reset --hard origin/main
|
||||
- git pull --allow-unrelated-histories
|
||||
- export DATE_TIME="$(date '+%Y%m%d%H%M%S')"
|
||||
- export MR_BRANCH="${UPDATE_BRANCH_PREFIX}${DATE_TIME}"
|
||||
- git ${JOB_GIT_FLAGS} checkout -b "${MR_BRANCH}"
|
||||
- composer update ${JOB_COMPOSER_FLAGS}
|
||||
- if [ "$(git diff)" == "" ]; then echo "No updates needed!"; exit 0; fi
|
||||
- export TITLE="Update PHP dependencies [${DATE_TIME}]"
|
||||
- git ${JOB_GIT_FLAGS} commit -a -m "${TITLE}"
|
||||
- git ${JOB_GIT_FLAGS} push "${TARGET_REMOTE}" "${MR_BRANCH}"
|
||||
artifacts:
|
||||
paths:
|
||||
- vendor/
|
||||
cache:
|
||||
key: ${CI_COMMIT_REF_SLUG}
|
||||
paths:
|
||||
- vendor/
|
||||
|
||||
prepare:
|
||||
stage: prepare
|
||||
script:
|
||||
- echo "Preparing environment..."
|
||||
|
||||
build:
|
||||
stage: build
|
||||
script:
|
||||
- echo "Building the project..."
|
||||
|
||||
test:
|
||||
stage: test
|
||||
script:
|
||||
- echo "Running tests..."
|
||||
|
||||
deploy:
|
||||
stage: deploy
|
||||
script:
|
||||
- echo "Deploying the project..."
|
@ -1,127 +0,0 @@
|
||||
<?php
|
||||
$finder = PhpCsFixer\Finder::create()
|
||||
//->exclude('somedir')
|
||||
//->notPath('src/Symfony/Component/Translation/Tests/fixtures/resources.php'
|
||||
->in(__DIR__)
|
||||
;
|
||||
|
||||
$config = new \PhpCsFixer\Config();
|
||||
return $config->setRules([
|
||||
'@PSR2' => true,
|
||||
'array_indentation' => true,
|
||||
'array_syntax' => ['syntax' => 'short'],
|
||||
'combine_consecutive_unsets' => true,
|
||||
'class_attributes_separation' => ['elements' => ['method' => 'one',]],
|
||||
'multiline_whitespace_before_semicolons' => false,
|
||||
'single_quote' => true,
|
||||
'strict_param' => false,
|
||||
'binary_operator_spaces' => [
|
||||
'operators' => [
|
||||
// '=>' => 'align',
|
||||
// '=' => 'align'
|
||||
]
|
||||
],
|
||||
// 'blank_line_after_opening_tag' => true,
|
||||
// 'blank_line_before_statement' => true,
|
||||
'braces' => [
|
||||
'allow_single_line_closure' => true,
|
||||
'position_after_functions_and_oop_constructs' => 'same'
|
||||
],
|
||||
// 'cast_spaces' => true,
|
||||
// 'class_definition' => array('singleLine' => true),
|
||||
'concat_space' => ['spacing' => 'one'],
|
||||
// 'declare_equal_normalize' => true,
|
||||
// 'function_typehint_space' => true,
|
||||
// 'single_line_comment_style' => ['comment_types' => ['hash']],
|
||||
// 'include' => true,
|
||||
// 'lowercase_cast' => true,
|
||||
// 'native_function_casing' => true,
|
||||
// 'new_with_braces' => true,
|
||||
// 'no_blank_lines_after_class_opening' => true,
|
||||
// 'no_blank_lines_after_phpdoc' => true,
|
||||
// 'no_blank_lines_before_namespace' => true,
|
||||
'no_empty_comment' => true,
|
||||
'no_empty_phpdoc' => true,
|
||||
// 'no_empty_statement' => true,
|
||||
'no_extra_blank_lines' => [
|
||||
'tokens' => [
|
||||
// 'curly_brace_block',
|
||||
// 'extra',
|
||||
// 'parenthesis_brace_block',
|
||||
// 'square_brace_block',
|
||||
// 'throw',
|
||||
// 'use',
|
||||
]
|
||||
],
|
||||
'no_leading_import_slash' => true,
|
||||
'no_leading_namespace_whitespace' => true,
|
||||
'no_mixed_echo_print' => ['use' => 'echo'],
|
||||
'no_multiline_whitespace_around_double_arrow' => true,
|
||||
'no_short_bool_cast' => true,
|
||||
'no_singleline_whitespace_before_semicolons' => true,
|
||||
'no_spaces_around_offset' => ['positions' => ['outside']],
|
||||
'no_trailing_comma_in_singleline' => ['elements' => ['arguments', 'array_destructuring', 'array', 'group_import']],
|
||||
|
||||
'spaces_inside_parentheses' => ['space' => 'single'],
|
||||
// 'no_spaces_inside_parenthesis' => false,
|
||||
'control_structure_braces' => true,
|
||||
|
||||
'curly_braces_position' => [
|
||||
'control_structures_opening_brace' => 'same_line',
|
||||
'functions_opening_brace' => 'same_line',
|
||||
'classes_opening_brace' => 'same_line',
|
||||
],
|
||||
|
||||
|
||||
// need to add space after array declaration
|
||||
// need to put each element on a line by itself when an array is multi line
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
'no_unneeded_control_parentheses' => true,
|
||||
'no_unused_imports' => true,
|
||||
'no_whitespace_before_comma_in_array' => true,
|
||||
'no_whitespace_in_blank_line' => true,
|
||||
'normalize_index_brace' => true,
|
||||
// 'object_operator_without_whitespace' => true,
|
||||
// 'php_unit_fqcn_annotation' => true,
|
||||
// 'phpdoc_align' => true,
|
||||
// 'phpdoc_annotation_without_dot' => true,
|
||||
// 'phpdoc_indent' => true,
|
||||
// 'phpdoc_inline_tag' => true,
|
||||
// 'phpdoc_no_access' => true,
|
||||
// 'phpdoc_no_alias_tag' => true,
|
||||
// 'phpdoc_no_empty_return' => true,
|
||||
// 'phpdoc_no_package' => true,
|
||||
// 'phpdoc_no_useless_inheritdoc' => true,
|
||||
// 'phpdoc_return_self_reference' => true,
|
||||
// 'phpdoc_scalar' => true,
|
||||
// 'phpdoc_separation' => true,
|
||||
// 'phpdoc_single_line_var_spacing' => true,
|
||||
// 'phpdoc_summary' => true,
|
||||
// 'phpdoc_to_comment' => true,
|
||||
// 'phpdoc_trim' => true,
|
||||
// 'phpdoc_types' => true,
|
||||
'phpdoc_var_without_name' => false,
|
||||
'increment_style' => ['style' => 'post'],
|
||||
'return_type_declaration' => true,
|
||||
// 'self_accessor' => true, // risky
|
||||
'short_scalar_cast' => true,
|
||||
'single_class_element_per_statement' => true,
|
||||
'standardize_not_equals' => true,
|
||||
'ternary_operator_spaces' => true,
|
||||
'trailing_comma_in_multiline' => true,
|
||||
'trim_array_spaces' => false,
|
||||
'unary_operator_spaces' => true,
|
||||
'whitespace_after_comma_in_array' => true,
|
||||
'single_blank_line_at_eof' => true
|
||||
])
|
||||
->setLineEnding("\n")
|
||||
;
|
@ -1,47 +0,0 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at webmaster@thetempusproject.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
|
||||
|
||||
[homepage]: http://contributor-covenant.org
|
||||
[version]: http://contributor-covenant.org/version/1/4/
|
135
CONTRIBUTING.md
@ -1,135 +0,0 @@
|
||||
# Contribution Guidelines for TheTempusProject
|
||||
Contributing to TheTempusProject is completely voluntary and should follow all of the guidelines listed here in order to ensure the highest probability of acceptance. It is highly recommended to use a php linter to automate more of this process. The project is maintained on github and all contributions need to be submitted via pull request to their specific repository under the `dev` branch. In order to contribute, simply follow the instructions for [creating a pull request](#creating-a-pull-request) below.
|
||||
|
||||
## Pull Request Requirements
|
||||
- All revisions must follow TTP naming conventions (see [Naming Conventions](#naming-conventions) Section)
|
||||
- Include a clear and concise explanation of the features or changes included in your revision listed by file.
|
||||
- All code must follow [PSR 2](http://www.php-fig.org/psr/psr-2/) standards
|
||||
- prefer the use of [] for arrays over array()
|
||||
- All functions must be documented with the exception of controller methods (see [Documentation](#documentation) Section)
|
||||
- Controller methods may be doc-blocked when necessary for clarity (see [Documentation](#documentation) Section)
|
||||
- All new Classes must include a class level doc-block (see [Documentation](#documentation) Section)
|
||||
- Any new dependencies will have a longer validation process and should be accompanied by the required information (see [Dependencies](#dependencies) Section)
|
||||
|
||||
## Naming Conventions
|
||||
- File names are to be lower case
|
||||
- All class names must be upper case
|
||||
- Any data being stored as a file must be saved in the app directory (with the exception of config which should be stored under config/)
|
||||
- Controllers must have a constructor and destructor using the constructor and destructor methods found in resources/
|
||||
- Views must be named using lowerCamelCase
|
||||
|
||||
## Dependencies
|
||||
Whenever a dependency is updated or added, pull requests must include a section that answers the following questions.
|
||||
- Why is this dependency required
|
||||
- Could this be reasonably accomplished within the app by implementing new features in a later version? explain.
|
||||
- What is the latest stable version that can be used
|
||||
- What features are absolutely necessary for your feature or modification to work
|
||||
|
||||
## Documentation
|
||||
### Classes
|
||||
|
||||
New classes must be prefaced with a doc-block following this style:
|
||||
```
|
||||
/**
|
||||
* app/controllers/admin/admin.php
|
||||
*
|
||||
* This is the admin controller.
|
||||
*
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
```
|
||||
|
||||
From top to bottom:
|
||||
- Filename on the second line
|
||||
- A description for the file
|
||||
- The TTP version this file was built for
|
||||
`@version 1.0`
|
||||
- The Authors name or alias and email
|
||||
`@author first last <email@link.com>`
|
||||
- A copy of the MIT license
|
||||
`@license https://opensource.org/licenses/MIT [MIT LICENSE]`
|
||||
- May include a link for more information
|
||||
`@link http://link.com`
|
||||
|
||||
### Functions
|
||||
Functions must be prefaced with a doc-block following this style:
|
||||
```
|
||||
/**
|
||||
* Intended as a self-destruct session. If the specified session does not
|
||||
* exist, it is created. If the specified session does exist, it will be
|
||||
* destroyed and returned.
|
||||
*
|
||||
* @param string $name - Session name to be created or checked
|
||||
* @param string $string - The string to be used if session needs to be
|
||||
* created. (optional)
|
||||
*
|
||||
* @return bool|string - Returns bool if creating, and a string if the
|
||||
* check is successful.
|
||||
*/
|
||||
```
|
||||
|
||||
From top to bottom:
|
||||
- There must be a description of the functions intended usage on the second line
|
||||
- All parameters should be documented like this
|
||||
`@param [type] $name - description`
|
||||
- Any function with a return statement must also be documented as such
|
||||
`@return [type] - description`
|
||||
|
||||
## Creating a Pull Request
|
||||
This is a simple explanation of how to create a pull request for changes to TheTempusProject. You can find a detailed walk-through on how to [create a pull request](https://help.github.com/articles/creating-a-pull-request/) on github.
|
||||
|
||||
1. First ensure you have followed all the contributing guidelines
|
||||
2. Squash your merge into a single revision. This will make it easier to view the changes as a whole.
|
||||
3. You can submit a pull request [here](https://github.com/TheTempusProject/TheTempusProject/compare)
|
||||
4. Please submit all pull requests to the dev branch or they will be ignored.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
add spaces after everything
|
||||
|
||||
avoid "return;" just make the previous line the return
|
||||
|
||||
use []
|
||||
|
||||
do not use array()
|
||||
|
||||
do not use (array)
|
||||
|
||||
do not add useless variables
|
||||
|
||||
if you are going to set something or check if its empty, just never set it to begin with, don't set it to null
|
25
LICENSE
@ -1,25 +0,0 @@
|
||||
Copyright (c) 2024-present Joey Kimsey
|
||||
|
||||
Portions of this software are licensed as follows:
|
||||
|
||||
* All content residing under the "app/" directory of this repository, excluding "app/plugins/"; is licensed under "Creative Commons: CC BY-SA 4.0 license".
|
||||
* All third party components incorporated into The Tempus Project Software including plugins are licensed under the original license provided by the owner of the applicable component.
|
||||
* Content outside of the above mentioned directories or restrictions above is available under the "MIT Expat" license as defined below.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
131
README.md
@ -1,131 +0,0 @@
|
||||
# The Tempus Project
|
||||
|
||||
_Rapid Prototyping Framework built on PHP utilizing the MVC pattern with a Bootstrap front-end_
|
||||
|
||||
__Developer(s):__
|
||||
|
||||
- __Joey Kimsey__ - _Lead Developer_
|
||||
|
||||
The aim of this project is to provide a simple and stable platform from which to easily add functionality. The goal being the ability to quickly build and test new projects with a lightweight ecosystem to help.
|
||||
|
||||
**Notice: This code is in _still_ not production ready. This framework is provided as is, use at your own risk.**\
|
||||
I am working very hard to ensure the system is safe and reliable enough for me to endorse its widespread use. Unfortunately, it still needs a lot of QA and improvements.
|
||||
|
||||
## Table of contents
|
||||
|
||||
[[_TOC_]]
|
||||
|
||||
## Find Us
|
||||
|
||||
* [DockerHub](https://hub.docker.com/repositories/thetempusproject)
|
||||
* [Packagist](https://packagist.org/packages/thetempusproject/)
|
||||
* [GitLab](https://git.thetempusproject.com/the-tempus-project/thetempusproject)
|
||||
|
||||
## Summary
|
||||
|
||||
The Tempus Project is a PHP application utilizing the MVC pattern to serve up simple pages and APIs with minimal effort. It requires a MySQL database to function and is designed to run equally well with nginx or apache powering the webserver. Most of the core functionality is developed in house and provided through dependencies. At this time, the frontend is driven on bootstrap 3 and FontAwesome for simplicity.
|
||||
|
||||
## Features
|
||||
|
||||
- A Plugin system that allows plug-and-play functionality
|
||||
- A User management system
|
||||
- groups
|
||||
- permissions
|
||||
- preferences
|
||||
- registration and recovery
|
||||
(All Controlled dynamically via our plugin interface)
|
||||
- Compatibility with both Apache and NGINX
|
||||
- Built with Bootstrap with a focus on mobile compatibility
|
||||
- Incredibly easy to set-up, deploy, and develop
|
||||
|
||||
## Installation
|
||||
|
||||
The preferred method for installation is [Composer](#composer) but special attention has been given to installation and usage [without Composer](#composer).
|
||||
|
||||
### Composer
|
||||
|
||||
The simplest method to start a new project is to use composer to create a new project and automatically clone all the necessary files:
|
||||
|
||||
#### via create-project
|
||||
|
||||
```
|
||||
composer create-project thetempusproject/thetempusproject test-app
|
||||
```
|
||||
|
||||
#### via clone & install
|
||||
|
||||
1. Clone the directory to wherever you want to install the framework.
|
||||
`git clone https://git.thetempusproject.com/the-tempus-project/thetempusproject.git <test-app>`
|
||||
1. Open your terminal to the directory you previously cloned the repository.
|
||||
`cd <test-app>`
|
||||
1. Install using composer:
|
||||
`php composer.phar install`
|
||||
|
||||
### Manually
|
||||
|
||||
1. Clone the directory to wherever you want to install the framework.
|
||||
`git clone https://git.thetempusproject.com/the-tempus-project/thetempusproject.git <test-app>`
|
||||
1. Open your terminal to the directory you previously cloned the repository.
|
||||
`cd <test-app>/`
|
||||
1. Clone the dependency directories to the vendor/ folder.
|
||||
```
|
||||
cd vendor/
|
||||
git clone https://git.thetempusproject.com/the-tempus-project/bedrock.git bedrock
|
||||
git clone https://git.thetempusproject.com/the-tempus-project/canary.git canary
|
||||
git clone https://git.thetempusproject.com/the-tempus-project/hermes.git hermes
|
||||
git clone https://git.thetempusproject.com/the-tempus-project/houdini.git houdini
|
||||
```
|
||||
|
||||
__Note:__ The autoloader should automatically detect and use the dependencies, but they need to be sorted into the folders ans shown above.
|
||||
|
||||
|
||||
## Docker
|
||||
|
||||
To enable quick deployment and collaboration The Tempus Project is distributed with the files to build your own docker images or stack with apache or nginx The included `docker-compose.yml` will load up an entire stack including apache and nginx, as well as a MySQL server with phpmyadmin.
|
||||
|
||||
You will need docker installed on your system then you can either download the latest images from DockerHud:
|
||||
|
||||
```
|
||||
docker pull thetempusproject/ttp-apache
|
||||
docker pull thetempusproject/ttp-nginx
|
||||
```
|
||||
|
||||
Or you can build your own images from this repository. More information can be found in the included README files:
|
||||
|
||||
* [Apache Image](docker/ttp-apache/README.md)
|
||||
* [Nginx Image](docker/ttp-nginx/README.md)
|
||||
|
||||
### Docker-Compose
|
||||
|
||||
The Docker stack included here will build new versions of the nginx and apache webserver and launch them in individual containers. It will also create 2 more containers; one for php, and one for phpmyadmin.
|
||||
|
||||
```
|
||||
docker-compose -f docker-compose.yml up --build -d --no-cache
|
||||
```
|
||||
|
||||
__Note:__ If you cloned the repository from git, you will need to copy the `docker/.env.example` to `.env` in the root directory and update the contents before proceeding with docker-compose.
|
||||
|
||||
## Contributing
|
||||
|
||||
TheTempusProject is an open source project and welcomes community contributions. Please refer to the [Contributing file](CONTRIBUTING.md) for more details.
|
||||
|
||||
## License
|
||||
|
||||
See the [LICENSE](LICENSE) file for licensing information as it pertains to files in this repository.
|
||||
|
||||
## Known Issues
|
||||
|
||||
- [ ] The blog plugin should add a welcome post during the installResources step of the installer. It doesn't work right now.
|
||||
|
||||
## Currently being developed
|
||||
|
||||
- [ ] Adding documentation
|
||||
- [ ] Unit testing
|
||||
|
||||
## Future updates
|
||||
|
||||
- [ ] Expansion of PDO to allow different database types
|
||||
- [ ] Update installer to account for database deltas, allowing easy updating.
|
||||
- [ ] Implement uniformity in terms of error reporting, exceptions, logging.
|
||||
- [ ] I want to make an api that allows you to download and install new plugins from a centralized repository
|
||||
- [ ] i want plugin instalation to be compatible with composer for easier management of added plugins.
|
@ -74,7 +74,7 @@ class Config extends BedrockConfig {
|
||||
$html .= '<div class="mb-3 row">';
|
||||
$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="'.$fieldname.'Text" value="'.$node['value'] . '">';
|
||||
$html .= '<input type="text" class="form-control" name="'.$name.'Text" value="'.$node['value'] . '">';
|
||||
$html .= '</div>';
|
||||
$html .= '</div>';
|
||||
$html .= '<div class="mb-3 row">';
|
||||
|
@ -164,7 +164,7 @@ class Email {
|
||||
}
|
||||
}
|
||||
$data->MAIL_FOOT = Views::simpleView( 'email.foot' );
|
||||
$data->MAIL_TITLE = Template::parse( self::$title );
|
||||
$data->MAIL_TITLE = self::$title;
|
||||
$data->MAIL_BODY = Template::parse( self::$message, $data );
|
||||
$subject = Template::parse( self::$subject, $data );
|
||||
$body = Views::simpleView( 'email.template', $data );
|
||||
|
@ -358,10 +358,6 @@ class Forms extends Check {
|
||||
self::addUserError( 'Invalid Email.' );
|
||||
return false;
|
||||
}
|
||||
if ( $user->usernameExists( Input::post( 'username' ) ) ) {
|
||||
self::addUserError( 'A user with that username is already registered.' );
|
||||
return false;
|
||||
}
|
||||
if ( !$user->noEmailExists( Input::post( 'email' ) ) ) {
|
||||
self::addUserError( 'A user with that email is already registered.' );
|
||||
return false;
|
||||
|
@ -78,6 +78,11 @@ class Home extends AdminController {
|
||||
$users = Views::simpleView( 'admin.dashboard.users', self::$user->recent( 5 ) );
|
||||
Components::set( 'userDash', $users );
|
||||
|
||||
if ( Input::exists( 'submit' ) ) {
|
||||
$results = Views::simpleView( 'admin.dashboard.users', self::$user->search( Input::post('searchTerm') ) );
|
||||
Components::set( 'searchResults', $results );
|
||||
}
|
||||
|
||||
Views::view( 'admin.dashboard.dash' );
|
||||
}
|
||||
}
|
||||
|
@ -24,6 +24,7 @@ class Auth extends ApiController {
|
||||
self::$tokens = new Token;
|
||||
}
|
||||
|
||||
/**
|
||||
public function refresh() {
|
||||
$token = self::$tokens->refresh( self::$authToken->ID );
|
||||
if ( empty( $token ) ) {
|
||||
@ -35,4 +36,5 @@ class Auth extends ApiController {
|
||||
}
|
||||
Views::view( 'api.response', ['response' => json_encode( [ $responseType => $response ], true )]);
|
||||
}
|
||||
*/
|
||||
}
|
@ -31,6 +31,7 @@ class Login extends ApiController {
|
||||
Template::addHeader( 'Content-Type: application/json; charset=utf-8' );
|
||||
}
|
||||
|
||||
/**
|
||||
public function index() {
|
||||
if ( ! Forms::check( 'apiLogin' ) ) {
|
||||
$responseType = 'error';
|
||||
@ -47,4 +48,5 @@ class Login extends ApiController {
|
||||
$token = self::$tokens->findOrCreateUserToken( $user->ID, true );
|
||||
return Views::view( 'api.response', ['response' => json_encode( [ $responseType => $token ], true )]);
|
||||
}
|
||||
*/
|
||||
}
|
@ -23,6 +23,13 @@ class Users extends ApiController {
|
||||
self::$user = new User;
|
||||
}
|
||||
|
||||
/**
|
||||
* This is actually just for testing. It can provide attack information in the way of user count if not disabled.
|
||||
*
|
||||
* @param [type] $id
|
||||
* @return void
|
||||
*/
|
||||
/**
|
||||
public function find( $id = null ) {
|
||||
$user = self::$user->get( $id );
|
||||
if ( ! $user ) {
|
||||
@ -34,4 +41,5 @@ class Users extends ApiController {
|
||||
}
|
||||
Views::view( 'api.response', ['response' => json_encode( [ $responseType => $response ], true )]);
|
||||
}
|
||||
*/
|
||||
}
|
@ -106,4 +106,10 @@ class Home extends Controller {
|
||||
self::$pageDescription = 'Many times, we aren\'t the first to ask why or how something works. Here you will find a list of {SITENAME} commonly asked questions and our best answers.' ;
|
||||
Views::view( 'faq' );
|
||||
}
|
||||
|
||||
public function getstarted() {
|
||||
self::$title = 'Get Started - {SITENAME}';
|
||||
self::$pageDescription = '{SITENAME} is a great tool to bring your ideas to reality. On this page, you can find out how to get started today.' ;
|
||||
Views::view( 'start' );
|
||||
}
|
||||
}
|
||||
|
125
app/controllers/libraries.php
Normal file
@ -0,0 +1,125 @@
|
||||
<?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\Houdini\Classes\Views;
|
||||
use TheTempusProject\Classes\Controller;
|
||||
|
||||
class Libraries extends Controller {
|
||||
public function index() {
|
||||
self::$title = 'Libraries - {SITENAME}';
|
||||
self::$pageDescription = '{SITENAME} depends on several very important libraries, some of which are developed exclusively to support the project. Here you can find a list with more information.' ;
|
||||
Views::view( 'deps.index' );
|
||||
}
|
||||
|
||||
public function ttp( $method = null ) {
|
||||
self::$title = '{SITENAME} - TheTempusProject';
|
||||
self::$pageDescription = 'TheTempusProject is the primary repo of {SITENAME} which houses the main application.';
|
||||
if ( empty( $method ) ) {
|
||||
return Views::view( 'deps.ttp' );
|
||||
}
|
||||
switch ( $method ) {
|
||||
case 'git':
|
||||
return Redirect::external( 'https://git.thetempusproject.com/the-tempus-project/thetempusproject' );
|
||||
case 'packagist':
|
||||
return Redirect::external( 'https://packagist.org/packages/thetempusproject/thetempusproject' );
|
||||
case 'changes':
|
||||
self::$title .= ' Changes';
|
||||
self::$pageDescription = 'This pages lists the most recent changes to TheTempusProject with some details on those changes.';
|
||||
return Views::view( 'changes.ttp' );
|
||||
default:
|
||||
return Views::view( 'deps.ttp' );
|
||||
}
|
||||
}
|
||||
|
||||
public function hermes( $method = null ) {
|
||||
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.';
|
||||
if ( empty( $method ) ) {
|
||||
return Views::view( 'deps.hermes' );
|
||||
}
|
||||
switch ( $method ) {
|
||||
case 'git':
|
||||
return Redirect::external( 'https://git.thetempusproject.com/the-tempus-project/hermes' );
|
||||
case 'packagist':
|
||||
return Redirect::external( 'https://packagist.org/packages/thetempusproject/hermes' );
|
||||
case 'changes':
|
||||
self::$title .= ' Changes';
|
||||
self::$pageDescription = 'Hermes is a dependency of {SITENAME} and this pages lists the most recent changes with some details on those changes.';
|
||||
return Views::view( 'changes.hermes' );
|
||||
default:
|
||||
return Views::view( 'deps.hermes' );
|
||||
}
|
||||
}
|
||||
|
||||
public function canary( $method = null ) {
|
||||
self::$title = '{SITENAME} - Canary';
|
||||
self::$pageDescription = 'Canary is a dependency of {SITENAME} that both records and reports logs from various PHP applications.';
|
||||
if ( empty( $method ) ) {
|
||||
return Views::view( 'deps.canary' );
|
||||
}
|
||||
switch ( $method ) {
|
||||
case 'git':
|
||||
return Redirect::external( 'https://git.thetempusproject.com/the-tempus-project/canary' );
|
||||
case 'packagist':
|
||||
return Redirect::external( 'https://packagist.org/packages/thetempusproject/canary' );
|
||||
case 'changes':
|
||||
self::$title .= ' Changes';
|
||||
self::$pageDescription = 'Canary is a dependency of {SITENAME} and this pages lists the most recent changes with some details on those changes.';
|
||||
return Views::view( 'changes.canary' );
|
||||
default:
|
||||
return Views::view( 'deps.canary' );
|
||||
}
|
||||
}
|
||||
|
||||
public function bedrock( $method = null ) {
|
||||
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.';
|
||||
if ( empty( $method ) ) {
|
||||
return Views::view( 'deps.bedrock' );
|
||||
}
|
||||
switch ( $method ) {
|
||||
case 'git':
|
||||
return Redirect::external( 'https://git.thetempusproject.com/the-tempus-project/bedrock' );
|
||||
case 'packagist':
|
||||
return Redirect::external( 'https://packagist.org/packages/thetempusproject/bedrock' );
|
||||
case 'changes':
|
||||
self::$title .= ' Changes';
|
||||
self::$pageDescription = 'Bedrock is a dependency of {SITENAME} and this pages lists the most recent changes with some details on those changes.';
|
||||
return Views::view( 'changes.bedrock' );
|
||||
default:
|
||||
return Views::view( 'deps.bedrock' );
|
||||
}
|
||||
}
|
||||
|
||||
public function houdini( $method = null ) {
|
||||
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.';
|
||||
if ( empty( $method ) ) {
|
||||
return Views::view( 'deps.houdini' );
|
||||
}
|
||||
switch ( $method ) {
|
||||
case 'git':
|
||||
return Redirect::external( 'https://git.thetempusproject.com/the-tempus-project/houdini' );
|
||||
case 'packagist':
|
||||
return Redirect::external( 'https://packagist.org/packages/thetempusproject/houdini' );
|
||||
case 'changes':
|
||||
self::$title .= ' Changes';
|
||||
self::$pageDescription = 'Houdini is a dependency of {SITENAME} and this pages lists the most recent changes with some details on those changes.';
|
||||
return Views::view( 'changes.houdini' );
|
||||
default:
|
||||
return Views::view( 'deps.houdini' );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -25,7 +25,6 @@ use TheTempusProject\TheTempusProject as App;
|
||||
use TheTempusProject\Classes\Controller;
|
||||
use TheTempusProject\Classes\Forms;
|
||||
use TheTempusProject\Bedrock\Classes\Config;
|
||||
use TheTempusProject\Plugins\Turnstile;
|
||||
|
||||
class Register extends Controller {
|
||||
public function confirm( $code = null ) {
|
||||
@ -48,19 +47,11 @@ class Register extends Controller {
|
||||
public function index() {
|
||||
self::$title = '{SITENAME} Sign Up';
|
||||
self::$pageDescription = 'Many features of {SITENAME} are disabled or hidden from unregistered users. On this page you can sign up for an account to access all the app has to offer.';
|
||||
|
||||
if ( ! Config::getValue( 'main/registrationEnabled' ) ) {
|
||||
return Issues::add( 'notice', 'The site administrator has disable the ability to register a new account.' );
|
||||
}
|
||||
$turnstile = '';
|
||||
if ( class_exists( 'TheTempusProject\Plugins\Turnstile' ) ) {
|
||||
$turnstile = new Turnstile;
|
||||
if ( ! $turnstile->checkEnabled() ) {
|
||||
Components::set( 'TURNSTILE_WIDGET', '' );
|
||||
$turnstile = '';
|
||||
}
|
||||
} else {
|
||||
Components::set( 'TURNSTILE_WIDGET', '' );
|
||||
}
|
||||
|
||||
Components::set( 'TERMS', Views::simpleView( 'auth.terms' ) );
|
||||
if ( App::$isLoggedIn ) {
|
||||
return Issues::add( 'notice', 'You are currently logged in.' );
|
||||
@ -68,20 +59,10 @@ class Register extends Controller {
|
||||
if ( !Input::exists() ) {
|
||||
return Views::view( 'auth.register' );
|
||||
}
|
||||
if ( Input::exists( 'userEmail' ) ) {
|
||||
// for the really bad AI / headless bots
|
||||
Session::flash( 'success', 'Thank you for registering! Please check your email to confirm your account.' );
|
||||
Redirect::to( 'home/index' );
|
||||
}
|
||||
if ( !Forms::check( 'register' ) ) {
|
||||
Issues::add( 'error', [ 'There was an error with your registration.' => Check::userErrors() ] );
|
||||
return Views::view( 'auth.register' );
|
||||
}
|
||||
if ( ! empty( $turnstile ) ) {
|
||||
if ( empty( $turnstile->verify() ) ) {
|
||||
return Views::view( 'auth.register' );
|
||||
}
|
||||
}
|
||||
self::$user->create( [
|
||||
'username' => Input::post( 'username' ),
|
||||
'password' => Hash::make( Input::post( 'password' ) ),
|
||||
|
@ -9,15 +9,6 @@
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
|
||||
.context-popover {
|
||||
background-color: #383838;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.context-popover .popover-header {
|
||||
background-color: #2c2c2c;
|
||||
}
|
||||
|
||||
.context-main-border {
|
||||
border-color: #f5f5f5!important;
|
||||
}
|
||||
|
@ -8,40 +8,6 @@
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
.facebook {
|
||||
border-color: #1877F2 !important; /* Facebook Blue */
|
||||
color: #1877F2 !important;
|
||||
}
|
||||
|
||||
.x-black {
|
||||
border-color: #000000 !important; /* X (formerly Twitter) Black */
|
||||
color: #000000 !important;
|
||||
}
|
||||
|
||||
.reddit {
|
||||
border-color: #FF4500 !important; /* Reddit Orange */
|
||||
color: #FF4500 !important;
|
||||
}
|
||||
|
||||
.opera {
|
||||
border-color: #FF1B2D !important; /* Opera Red */
|
||||
color: #FF1B2D !important;
|
||||
}
|
||||
|
||||
.firefox {
|
||||
border-color: #FF7139 !important; /* Firefox Orange */
|
||||
color: #FF7139 !important;
|
||||
}
|
||||
|
||||
.edge {
|
||||
border-color: #0078D7 !important; /* Microsoft Edge Blue */
|
||||
color: #0078D7 !important;
|
||||
}
|
||||
|
||||
.safari {
|
||||
border-color: #0B78E3 !important; /* Safari Blue */
|
||||
color: #0B78E3 !important;
|
||||
}
|
||||
|
||||
.context-main-border {
|
||||
border-color: #1e1e1e!important;
|
||||
|
Before Width: | Height: | Size: 117 KiB |
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 47 KiB |
@ -8,13 +8,8 @@
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
/**
|
||||
* Progressive Web-App
|
||||
**/
|
||||
let deferredPrompt;
|
||||
const installPrompt = document.getElementById("install-prompt");
|
||||
const chromeMessage = document.getElementById("chrome-install-message");
|
||||
const iosMessage = document.getElementById("ios-install-message");
|
||||
const installButton = document.getElementById("install-button");
|
||||
const dismissButton = document.querySelector("#install-prompt .btn-close");
|
||||
|
||||
@ -24,28 +19,8 @@ if ( ! localStorage.getItem("pwaInstallDismissed") ) {
|
||||
event.preventDefault();
|
||||
deferredPrompt = event;
|
||||
installPrompt.classList.remove("d-none");
|
||||
installPrompt.classList.add("d-block"); // Show the alert
|
||||
if ( chromeMessage ) {
|
||||
chromeMessage.classList.remove("d-none");
|
||||
chromeMessage.classList.add("d-block"); // Show the prompt
|
||||
}
|
||||
installPrompt.classList.add("d-block"); // Show the prompt
|
||||
});
|
||||
|
||||
if ( isIos() && ! isInStandaloneMode() ) {
|
||||
installPrompt.classList.remove("d-none");
|
||||
installPrompt.classList.add("d-block"); // Show the alert
|
||||
|
||||
if ( iosMessage ) {
|
||||
iosMessage.classList.remove("d-none");
|
||||
iosMessage.classList.add("d-block"); // Show the prompt
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ios REQUIRES a service worker
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('/app/js/sw.js')
|
||||
.then(() => console.log('Service Worker Registered'));
|
||||
}
|
||||
|
||||
// Handle Install Button Click
|
||||
@ -90,14 +65,6 @@ if (localStorage.getItem("pwaInstallDismissed")) {
|
||||
}
|
||||
}
|
||||
|
||||
function isIos() {
|
||||
return /iphone|ipad|ipod/i.test(navigator.userAgent);
|
||||
}
|
||||
|
||||
function isInStandaloneMode() {
|
||||
return window.matchMedia('(display-mode: standalone)').matches || window.navigator.standalone;
|
||||
}
|
||||
|
||||
/**
|
||||
* Automatically selects/de-selects all check boxes associated with that field
|
||||
**/
|
||||
@ -301,13 +268,10 @@ document.querySelectorAll('[data-bs-toggle="collapse"]').forEach(button => {
|
||||
});
|
||||
|
||||
|
||||
|
||||
// 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, {
|
||||
customClass: 'context-popover',
|
||||
});
|
||||
return new bootstrap.Popover(popoverTriggerEl);
|
||||
});
|
||||
});
|
@ -1 +0,0 @@
|
||||
self.addEventListener('fetch', () => {});
|
@ -59,7 +59,7 @@ class Sessions extends DatabaseModel {
|
||||
public function checkSession( $sessionID ) {
|
||||
$user = new User;
|
||||
// @todo lets put this on some sort of realistic checking regime other than check everything every time
|
||||
if ( empty( $sessionID ) ) {
|
||||
if ( $sessionID == false ) {
|
||||
Debug::log( 'sessionID false' );
|
||||
return false;
|
||||
}
|
||||
|
@ -641,7 +641,7 @@ class User extends DatabaseModel {
|
||||
Debug::error( 'User not created.' );
|
||||
return false;
|
||||
}
|
||||
return self::$db->lastId();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -21,7 +21,6 @@ use TheTempusProject\Bedrock\Functions\Input;
|
||||
use TheTempusProject\Bedrock\Functions\Session;
|
||||
use TheTempusProject\Hermes\Functions\Redirect;
|
||||
use TheTempusProject\Models\Contact as ContactModel;
|
||||
use TheTempusProject\Plugins\Turnstile;
|
||||
|
||||
class Contact extends Controller {
|
||||
protected static $contact;
|
||||
@ -30,16 +29,6 @@ class Contact extends Controller {
|
||||
self::$contact = new ContactModel;
|
||||
self::$title = 'Contact - {SITENAME}';
|
||||
self::$pageDescription = 'At {SITENAME}, we value our users\' input. You can provide any contact or suggestions using this form.';
|
||||
$turnstile = '';
|
||||
if ( class_exists( 'TheTempusProject\Plugins\Turnstile' ) ) {
|
||||
$turnstile = new Turnstile;
|
||||
if ( ! $turnstile->checkEnabled() ) {
|
||||
Components::set( 'TURNSTILE_WIDGET', '' );
|
||||
$turnstile = '';
|
||||
}
|
||||
} else {
|
||||
Components::set( 'TURNSTILE_WIDGET', '' );
|
||||
}
|
||||
if ( !Input::exists() ) {
|
||||
return Views::view( 'contact.create' );
|
||||
}
|
||||
@ -47,11 +36,6 @@ class Contact extends Controller {
|
||||
Issues::add( 'error', [ 'There was an error with your form, please check your submission and try again.' => Check::userErrors() ] );
|
||||
return Views::view( 'contact.create' );
|
||||
}
|
||||
if ( ! empty( $turnstile ) ) {
|
||||
if ( empty( $turnstile->verify() ) ) {
|
||||
return Views::view( 'contact.create' );
|
||||
}
|
||||
}
|
||||
$result = self::$contact->create( Input::post( 'name' ), Input::post( 'contactEmail' ), Input::post( 'entry' ) );
|
||||
if ( $result ) {
|
||||
Session::flash( 'success', 'Thank you! Your contact has been received.' );
|
||||
|
@ -40,7 +40,6 @@
|
||||
|
||||
<!-- Submit Button -->
|
||||
<div class="text-center">
|
||||
{TURNSTILE_WIDGET}
|
||||
<button type="submit" name="submit" value="submit" class="btn btn-primary btn-lg">Submit</button>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -35,6 +35,8 @@ class Notifications extends AdminController {
|
||||
self::$notifications = new NotificationsModel;
|
||||
self::$user = new User;
|
||||
self::$group = new Group;
|
||||
$view = Navigation::activePageSelect( 'nav.admin', '/admin/Notifications' );
|
||||
Components::set( 'ADMINNAV', $view );
|
||||
}
|
||||
|
||||
public function index( $data = null ) {
|
||||
|
@ -121,21 +121,21 @@ class Notification extends DatabaseModel {
|
||||
return true;
|
||||
}
|
||||
|
||||
public function filter( $entities, $filters = [] ) {
|
||||
public function filter( $messageArray, $filters = [] ) {
|
||||
$out = [];
|
||||
foreach ( $entities as $entity ) {
|
||||
if ( !is_object( $entity ) ) {
|
||||
$entity = $entities;
|
||||
foreach ( $messageArray as $message ) {
|
||||
if ( !is_object( $message ) ) {
|
||||
$message = $messageArray;
|
||||
$end = true;
|
||||
}
|
||||
if ( $entity->seenAt == 0 ) {
|
||||
$entity->unseenBadge = Views::simpleView( 'notifications.unseenBadge' );
|
||||
$entity->markReadLink = '<a href="{ROOT_URL}notifications/markRead/'.$entity->ID.'" class="btn btn-sm btn-primary"><i class="fa-solid fa-fw fa-envelope-open"></i></a>';
|
||||
if ( $message->seenAt == 0 ) {
|
||||
$message->unseenBadge = Views::simpleView( 'notifications.unseenBadge' );
|
||||
$message->markReadLink = '<a href="{ROOT_URL}notifications/markRead/'.$message->ID.'" class="btn btn-sm btn-primary"><i class="fa-solid fa-fw fa-envelope-open"></i></a>';
|
||||
} else {
|
||||
$entity->unseenBadge = '';
|
||||
$entity->markReadLink = '';
|
||||
$message->unseenBadge = '';
|
||||
$message->markReadLink = '';
|
||||
}
|
||||
$out[] = (object) $entity;
|
||||
$out[] = (object) $message;
|
||||
if ( !empty( $end ) ) {
|
||||
$out = $out[0];
|
||||
break;
|
||||
|
@ -1,85 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* app/plugins/turnstile/plugin.php
|
||||
*
|
||||
* This houses all of the main plugin info and functionality.
|
||||
*
|
||||
* @package TP Turnstile
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
namespace TheTempusProject\Plugins;
|
||||
|
||||
use TheTempusProject\TheTempusProject as App;
|
||||
use TheTempusProject\Classes\Plugin;
|
||||
use TheTempusProject\Models\Notification;
|
||||
use TheTempusProject\Houdini\Classes\Components;
|
||||
use TheTempusProject\Houdini\Classes\Views;
|
||||
use TheTempusProject\Bedrock\Classes\Config;
|
||||
use TheTempusProject\Bedrock\Functions\Input;
|
||||
use TheTempusProject\Houdini\Classes\Issues;
|
||||
|
||||
class Turnstile extends Plugin {
|
||||
private static $loaded = false;
|
||||
public $pluginName = 'TP Turnstile';
|
||||
public $pluginAuthor = 'JoeyK';
|
||||
public $pluginWebsite = 'https://TheTempusProject.com';
|
||||
public $modelVersion = '1.0';
|
||||
public $pluginVersion = '3.0';
|
||||
public $pluginDescription = 'A simple plugin which adds a site wide cloudflare turnstile integration.';
|
||||
public $configName = 'turnstile';
|
||||
public $configMatrix = [
|
||||
'secretKey' => [
|
||||
'type' => 'text',
|
||||
'pretty' => 'Turnstile Secret Key',
|
||||
'default' => 'xxxxxxxxxxxxx',
|
||||
],
|
||||
'apiKey' => [
|
||||
'type' => 'text',
|
||||
'pretty' => 'Turnstile API Key',
|
||||
'default' => 'xxxxxxxxxxxxxx',
|
||||
],
|
||||
];
|
||||
|
||||
public function __construct( $load = false ) {
|
||||
parent::__construct( $load );
|
||||
if ( ! self::$loaded ) {
|
||||
if ( $this->checkEnabled() ) {
|
||||
Components::set( 'TURNSTILE_API_KEY', Config::getValue( 'turnstile/apiKey' ) );
|
||||
Components::set( 'TURNSTILE_WIDGET', Views::simpleView( 'turnstile.widget') );
|
||||
Components::append( 'TEMPLATE_JS_INCLUDES', '<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>' );
|
||||
}
|
||||
self::$loaded = true;
|
||||
}
|
||||
}
|
||||
|
||||
public function verify() {
|
||||
if ( ! Input::exists('cf-turnstile-response') ) {
|
||||
Issues::add( 'notice', 'Turnstile verification failed. Please try again.' );
|
||||
return false;
|
||||
}
|
||||
$verify_url = "https://challenges.cloudflare.com/turnstile/v0/siteverify";
|
||||
$data = [
|
||||
"secret" => Config::getValue( 'turnstile/secretKey' ),
|
||||
"response" => Input::post('cf-turnstile-response'),
|
||||
"remoteip" => $_SERVER["REMOTE_ADDR"] // Optional, helps detect abuse
|
||||
];
|
||||
$options = [
|
||||
"http" => [
|
||||
"header" => "Content-Type: application/x-www-form-urlencoded",
|
||||
"method" => "POST",
|
||||
"content" => http_build_query($data)
|
||||
]
|
||||
];
|
||||
$context = stream_context_create($options);
|
||||
$response = file_get_contents($verify_url, false, $context);
|
||||
$result = json_decode($response, true);
|
||||
if ( ! $result["success"]) {
|
||||
Issues::add( 'notice', 'Turnstile verification failed. Please try again. If the issue persists, please contact the site administrator.' );
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
@ -1 +0,0 @@
|
||||
<div class="cf-turnstile" data-sitekey="{TURNSTILE_API_KEY}"></div>
|
@ -1,179 +0,0 @@
|
||||
{
|
||||
"main": {
|
||||
"name": {
|
||||
"type": "text",
|
||||
"pretty": "Site Name",
|
||||
"default": "TTP Example",
|
||||
"value": "TTP Example"
|
||||
},
|
||||
"loginLimit": {
|
||||
"type": "text",
|
||||
"pretty": "Maximum Login Attempts per hour",
|
||||
"default": 5,
|
||||
"value": 5
|
||||
},
|
||||
"logo": {
|
||||
"type": "file",
|
||||
"pretty": "Site Logo (Used mostly in emails)",
|
||||
"default": "images/logo.png",
|
||||
"value": "images/logo.png"
|
||||
},
|
||||
"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
|
||||
}
|
||||
},
|
||||
"uploads": {
|
||||
"files": {
|
||||
"type": "radio",
|
||||
"pretty": "Enable File Uploads",
|
||||
"default": true,
|
||||
"value": true
|
||||
},
|
||||
"images": {
|
||||
"type": "radio",
|
||||
"pretty": "Enable Image Uploads",
|
||||
"default": true,
|
||||
"value": true
|
||||
},
|
||||
"maxFileSize": {
|
||||
"type": "text",
|
||||
"pretty": "Maximum File Size",
|
||||
"default": 5000000,
|
||||
"value": 5000000
|
||||
},
|
||||
"maxImageSize": {
|
||||
"type": "text",
|
||||
"pretty": "Maximum Image Size",
|
||||
"default": 500000,
|
||||
"value": 500000
|
||||
}
|
||||
},
|
||||
"database": {
|
||||
"dbHost": {
|
||||
"type": "text",
|
||||
"pretty": "Database Host (IE: http://localhost:3306)",
|
||||
"default": "127.0.0.1",
|
||||
"protected": true,
|
||||
"value": "127.0.0.1"
|
||||
},
|
||||
"dbUsername": {
|
||||
"type": "text",
|
||||
"pretty": "Database Username",
|
||||
"default": "root",
|
||||
"protected": true,
|
||||
"value": "root"
|
||||
},
|
||||
"dbPrefix": {
|
||||
"type": "text",
|
||||
"pretty": "Database table Prefix",
|
||||
"default": "TTP_",
|
||||
"protected": true,
|
||||
"value": "TTP_"
|
||||
},
|
||||
"dbPassword": {
|
||||
"type": "text",
|
||||
"pretty": "Database Password",
|
||||
"default": "",
|
||||
"protected": true,
|
||||
"value": ""
|
||||
},
|
||||
"dbName": {
|
||||
"type": "text",
|
||||
"pretty": "Database Name",
|
||||
"default": "ttp-example",
|
||||
"protected": true,
|
||||
"value": "ttp-example"
|
||||
},
|
||||
"dbEnabled": {
|
||||
"type": "radio",
|
||||
"pretty": "Database Enabled",
|
||||
"default": true,
|
||||
"protected": true,
|
||||
"value": true
|
||||
},
|
||||
"dbMaxQuery": {
|
||||
"type": "text",
|
||||
"pretty": "Maximum results per query",
|
||||
"default": 100,
|
||||
"protected": true,
|
||||
"value": 100
|
||||
}
|
||||
},
|
||||
"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
|
||||
}
|
||||
},
|
||||
"bugReports": {
|
||||
"enabled": {
|
||||
"type": "radio",
|
||||
"pretty": "Enable Bug reporting.",
|
||||
"default": true,
|
||||
"value": true
|
||||
},
|
||||
"sendEmail": {
|
||||
"type": "radio",
|
||||
"pretty": "Email the user after submiting.",
|
||||
"default": true,
|
||||
"value": true
|
||||
},
|
||||
"emailTemplate": {
|
||||
"type": "text",
|
||||
"pretty": "Email Template",
|
||||
"default": "BugReportEmail",
|
||||
"value": "BugReportEmail"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"enabled": {
|
||||
"type": "radio",
|
||||
"pretty": "Enable User Feedback.",
|
||||
"default": true,
|
||||
"value": true
|
||||
},
|
||||
"sendEmail": {
|
||||
"type": "radio",
|
||||
"pretty": "Email the user after submiting.",
|
||||
"default": false,
|
||||
"value": false
|
||||
},
|
||||
"emailTemplate": {
|
||||
"type": "text",
|
||||
"pretty": "Email Template",
|
||||
"default": "feedbackEmail",
|
||||
"value": "feedbackEmail"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,162 +0,0 @@
|
||||
{
|
||||
"installHash": "014c857a650bcb0e4b08b14e1924287c",
|
||||
"installStep": "complete",
|
||||
"modules": {
|
||||
"Group": {
|
||||
"name": "Group",
|
||||
"installDate": 1670000000,
|
||||
"lastUpdate": 1670000000,
|
||||
"installStatus": "Installed",
|
||||
"installedVersion": "3.0",
|
||||
"folder": "/var/www/app/models/",
|
||||
"installTable": "Success",
|
||||
"installPermissions": "Success",
|
||||
"installConfigs": "Success",
|
||||
"installResources": "Success",
|
||||
"installPreferences": "Not Required",
|
||||
"installedResources": ["1", "2", "3", "4", "5", "6"]
|
||||
},
|
||||
"Log": {
|
||||
"name": "Log",
|
||||
"installDate": 1670000000,
|
||||
"lastUpdate": 1670000000,
|
||||
"installStatus": "Installed",
|
||||
"installedVersion": "3.0",
|
||||
"folder": "/var/www/app/models/",
|
||||
"installTable": "Success",
|
||||
"installPermissions": "Not Required",
|
||||
"installConfigs": "Success",
|
||||
"installResources": "Not Required",
|
||||
"installPreferences": "Not Required"
|
||||
},
|
||||
"Message": {
|
||||
"name": "Message",
|
||||
"installDate": 1670000000,
|
||||
"lastUpdate": 1670000000,
|
||||
"installStatus": "Installed",
|
||||
"installedVersion": "3.0",
|
||||
"folder": "/var/www/app/models/",
|
||||
"installTable": "Success",
|
||||
"installPermissions": "Success",
|
||||
"installConfigs": "Not Required",
|
||||
"installResources": "Not Required",
|
||||
"installPreferences": "Not Required"
|
||||
},
|
||||
"Routes": {
|
||||
"name": "Routes",
|
||||
"installDate": 1670000000,
|
||||
"lastUpdate": 1670000000,
|
||||
"installStatus": "Installed",
|
||||
"installedVersion": "3.0",
|
||||
"folder": "/var/www/app/models/",
|
||||
"installTable": "Success",
|
||||
"installPermissions": "Success",
|
||||
"installConfigs": "Not Required",
|
||||
"installResources": "Success",
|
||||
"installPreferences": "Not Required",
|
||||
"installedResources": ["1", "2", "3", "4", "5"]
|
||||
},
|
||||
"Sessions": {
|
||||
"name": "Sessions",
|
||||
"installDate": 1670000000,
|
||||
"lastUpdate": 1670000000,
|
||||
"installStatus": "Installed",
|
||||
"installedVersion": "3.0",
|
||||
"folder": "/var/www/app/models/",
|
||||
"installTable": "Success",
|
||||
"installPermissions": "Not Required",
|
||||
"installConfigs": "Not Required",
|
||||
"installResources": "Not Required",
|
||||
"installPreferences": "Not Required"
|
||||
},
|
||||
"User": {
|
||||
"name": "User",
|
||||
"installDate": 1670000000,
|
||||
"lastUpdate": 1670000000,
|
||||
"installStatus": "Installed",
|
||||
"installedVersion": "3.0",
|
||||
"folder": "/var/www/app/models/",
|
||||
"installTable": "Success",
|
||||
"installPermissions": "Success",
|
||||
"installConfigs": "Not Required",
|
||||
"installResources": "Not Required",
|
||||
"installPreferences": "Success"
|
||||
},
|
||||
"Blog": {
|
||||
"name": "Blog",
|
||||
"enabled": true,
|
||||
"enabled_txt": "yes",
|
||||
"installDate": 1670000000,
|
||||
"lastUpdate": 1670000000,
|
||||
"installStatus": "Installed",
|
||||
"installedVersion": "3.0",
|
||||
"folder": "/var/www/app/plugins/",
|
||||
"installTable": "Success",
|
||||
"installPermissions": "Not Required",
|
||||
"installConfigs": "Not Required",
|
||||
"installResources": "Success",
|
||||
"installPreferences": "Not Required",
|
||||
"installedResources": ["1"]
|
||||
},
|
||||
"Bugreport": {
|
||||
"name": "Bugreport",
|
||||
"enabled": true,
|
||||
"enabled_txt": "yes",
|
||||
"installDate": 1670000000,
|
||||
"lastUpdate": 1670000000,
|
||||
"installStatus": "Installed",
|
||||
"installedVersion": "3.0",
|
||||
"folder": "/var/www/app/plugins/",
|
||||
"installTable": "Success",
|
||||
"installPermissions": "Success",
|
||||
"installConfigs": "Success",
|
||||
"installResources": "Not Required",
|
||||
"installPreferences": "Not Required"
|
||||
},
|
||||
"Comments": {
|
||||
"name": "Comments",
|
||||
"enabled": true,
|
||||
"enabled_txt": "yes",
|
||||
"installDate": 1670000000,
|
||||
"lastUpdate": 1670000000,
|
||||
"installStatus": "Installed",
|
||||
"installedVersion": "3.0",
|
||||
"folder": "/var/www/app/plugins/",
|
||||
"installTable": "Success",
|
||||
"installPermissions": "Not Required",
|
||||
"installConfigs": "Not Required",
|
||||
"installResources": "Not Required",
|
||||
"installPreferences": "Not Required"
|
||||
},
|
||||
"Feedback": {
|
||||
"name": "Feedback",
|
||||
"enabled": true,
|
||||
"enabled_txt": "yes",
|
||||
"installDate": 1670000000,
|
||||
"lastUpdate": 1670000000,
|
||||
"installStatus": "Installed",
|
||||
"installedVersion": "3.0",
|
||||
"folder": "/var/www/app/plugins/",
|
||||
"installTable": "Success",
|
||||
"installPermissions": "Success",
|
||||
"installConfigs": "Success",
|
||||
"installResources": "Not Required",
|
||||
"installPreferences": "Not Required"
|
||||
},
|
||||
"Subscribe": {
|
||||
"name": "Subscribe",
|
||||
"enabled": true,
|
||||
"enabled_txt": "yes",
|
||||
"installDate": 1670000000,
|
||||
"lastUpdate": 1670000000,
|
||||
"installStatus": "Installed",
|
||||
"installedVersion": "3.0",
|
||||
"folder": "/var/www/app/plugins/",
|
||||
"installTable": "Success",
|
||||
"installPermissions": "Not Required",
|
||||
"installConfigs": "Not Required",
|
||||
"installResources": "Not Required",
|
||||
"installPreferences": "Not Required"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
{
|
||||
"adminAccess": {
|
||||
"pretty": "Access Administrator Areas",
|
||||
"default": false
|
||||
},
|
||||
"modAccess": {
|
||||
"pretty": "Access Moderator Areas",
|
||||
"default": false
|
||||
},
|
||||
"memberAccess": {
|
||||
"pretty": "Access Member Areas",
|
||||
"default": false
|
||||
},
|
||||
"sendMessages": {
|
||||
"pretty": "Send messages to other users",
|
||||
"default": false
|
||||
},
|
||||
"addRoute": {
|
||||
"pretty": "Add Custom Routes",
|
||||
"default": false
|
||||
},
|
||||
"uploadImages": {
|
||||
"pretty": "Upload images (such as avatars)",
|
||||
"default": false
|
||||
},
|
||||
"bugReport": {
|
||||
"pretty": "Can Submit Bug Reports",
|
||||
"default": false
|
||||
},
|
||||
"feedback": {
|
||||
"pretty": "Can Submit Feedback",
|
||||
"default": false
|
||||
}
|
||||
}
|
@ -1,78 +0,0 @@
|
||||
{
|
||||
"gender": {
|
||||
"pretty": "Gender",
|
||||
"type": "select",
|
||||
"default": "unspecified",
|
||||
"options": ["male", "female", "other", "unspecified"],
|
||||
"avatar": "/var/www/apache/images/defaultAvatar.png"
|
||||
},
|
||||
"email": {
|
||||
"pretty": "IDK what this is for",
|
||||
"type": "checkbox",
|
||||
"default": "true",
|
||||
"avatar": "/var/www/apache/images/defaultAvatar.png",
|
||||
"options": null
|
||||
},
|
||||
"newsletter": {
|
||||
"pretty": "Receive our Newsletter?",
|
||||
"type": "checkbox",
|
||||
"default": "true",
|
||||
"avatar": "/var/www/apache/images/defaultAvatar.png",
|
||||
"options": null
|
||||
},
|
||||
"avatar": {
|
||||
"pretty": "Avatar",
|
||||
"type": "file",
|
||||
"default": "images/defaultAvatar.png",
|
||||
"avatar": "/var/www/apache/images/defaultAvatar.png",
|
||||
"options": null
|
||||
},
|
||||
"timezone": {
|
||||
"pretty": "Timezone",
|
||||
"type": "timezone",
|
||||
"default": "America/New_York",
|
||||
"avatar": "/var/www/apache/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/apache/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/apache/images/defaultAvatar.png"
|
||||
},
|
||||
"pageLimit": {
|
||||
"pretty": "Items Displayed Per Page",
|
||||
"type": "select",
|
||||
"default": "10",
|
||||
"options": ["10", "15", "20", "25", "50"],
|
||||
"avatar": "/var/www/apache/images/defaultAvatar.png"
|
||||
}
|
||||
}
|
@ -1,54 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* app/resources/controllers/example.php
|
||||
*
|
||||
* This is an example controller layout.
|
||||
*
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
namespace TheTempusProject\Controllers;
|
||||
|
||||
use TheTempusProject\Classes\Controller;
|
||||
use TheTempusProject\Houdini\Classes\Template;
|
||||
use TheTempusProject\Houdini\Classes\Views;
|
||||
use TheTempusProject\Canary\Bin\Canary as Debug;
|
||||
|
||||
// The new controller must extend the default controller class or some functionality will be lost.
|
||||
class Example extends Controller {
|
||||
/**
|
||||
* A constructor does not have to be defined.
|
||||
* If a constructor is used, it must call the parent constructor first.
|
||||
*/
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
Template::noFollow();
|
||||
Template::noIndex();
|
||||
Template::setTemplate( 'example' );
|
||||
}
|
||||
|
||||
/**
|
||||
* A destructor does not have to be defined.
|
||||
* If a destructor is used, it must call the parent destructor last.
|
||||
*/
|
||||
public function __destruct() {
|
||||
Debug::log( 'Something to log before the app ends execution.' );
|
||||
parent::__destruct();
|
||||
}
|
||||
|
||||
public function index() {
|
||||
self::$title = 'Example Controller';
|
||||
Issues::add( 'error', [ 'This is an error with multiple parts.' => [ 'Error 1', 'Error 2' ] ] );
|
||||
Issues::add( 'error', 'This is a single error.' );
|
||||
Issues::add( 'success', [ 'This is a success with multiple parts.' => [ 'Success 1', 'Success 2' ] ] );
|
||||
Issues::add( 'success', 'This is a single success.' );
|
||||
Issues::add( 'notice', 'This is a single notice.' );
|
||||
Issues::add( 'info', 'This is a single info.' );
|
||||
Components::set( 'simple', Views::simpleView( 'simple' ) );
|
||||
Components::set( 'complex', Views::simpleView( 'complex' ) );
|
||||
Views::view( 'example' );
|
||||
$example = Views::simpleView( 'example' );
|
||||
}
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
server {
|
||||
listen 8080 default_server;
|
||||
listen [::]:8080 default_server;
|
||||
listen 8081 ssl default_server;
|
||||
listen [::]:8081 ssl default_server;
|
||||
|
||||
ssl_prefer_server_ciphers on;
|
||||
|
||||
include snippets/common.conf;
|
||||
|
||||
access_log /var/log/nginx/access.log;
|
||||
error_log /var/log/nginx/error.log;
|
||||
|
||||
location ~* \.(?:js|css|png|jpg|gif|ico)$ {
|
||||
access_log off;
|
||||
log_not_found off;
|
||||
}
|
||||
|
||||
location /js/ {
|
||||
access_log off;
|
||||
log_not_found off;
|
||||
try_files $uri /index.php?error=js404&file=$uri;
|
||||
}
|
||||
|
||||
location /css/ {
|
||||
access_log off;
|
||||
log_not_found off;
|
||||
try_files $uri /index.php?error=css404&file=$uri;
|
||||
}
|
||||
|
||||
location / {
|
||||
if (!-e $request_filename){
|
||||
rewrite ^/images/(.*)$ /index.php?error=image404&url=$1 break;
|
||||
rewrite ^/uploads/(.*)$ /index.php?error=upload404&url=$1 break;
|
||||
}
|
||||
rewrite ^/errors/(.*)$ /index.php?error=$1 break;
|
||||
rewrite ^/(.+)$ /index.php?url=$1&$args;
|
||||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
|
||||
include snippets/fastcgi-php.conf;
|
||||
}
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* app/resources/models/example.php
|
||||
*
|
||||
* This is an example model.
|
||||
*
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
namespace TheTempusProject\Models;
|
||||
|
||||
use TheTempusProject\Bedrock\Classes\Model;
|
||||
|
||||
class Example extends Model {
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
}
|
||||
}
|
@ -1,99 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* app/plugins/XXXXXXXXXX/plugin.php
|
||||
*
|
||||
* This houses all of the main plugin info and functionality.
|
||||
*
|
||||
* @package TP XXXXXXXXXX
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
namespace TheTempusProject\Plugins;
|
||||
|
||||
use ReflectionClass;
|
||||
use TheTempusProject\Classes\Installer;
|
||||
use TheTempusProject\Houdini\Navigation;
|
||||
use TheTempusProject\Models\forealthough as forealthoughModel;
|
||||
use TheTempusProject\TheTempusProject as App;
|
||||
|
||||
class notrealplugin extends forealthoughModel {
|
||||
public static $initialized;
|
||||
public $pluginName = 'TP XXXXXXXXXX';
|
||||
public $pluginAuthor = 'JoeyK';
|
||||
public $pluginWebsite = 'https://TheTempusProject.com';
|
||||
public $modelVersion = '1.0';
|
||||
public $pluginVersion = '1.0';
|
||||
public $pluginDescription = 'A simple plugin which adds a site wide XXXXXXXXXX system.';
|
||||
public $configName = 'XXXXXXXXXX';
|
||||
public $databaseMatrix = [
|
||||
[ 'title', 'varchar', '86' ],
|
||||
[ 'suggestion', 'text', '' ],
|
||||
[ 'suggestedOn', 'int', '10' ],
|
||||
[ 'approved', 'varchar', '5' ],
|
||||
[ 'approvedOn', 'int', '10' ],
|
||||
[ 'approvedBy', 'int', '11' ],
|
||||
[ 'author', 'int', '11' ],
|
||||
];
|
||||
public $configMatrix = [
|
||||
'enabled' => [
|
||||
'type' => 'radio',
|
||||
'pretty' => 'Enable XXXXXXXXXX.',
|
||||
'default' => true,
|
||||
],
|
||||
];
|
||||
public $permissionMatrix = [
|
||||
'XXXXXXXXXX' => [
|
||||
'pretty' => 'Can create XXXXXXXXXX',
|
||||
'default' => false,
|
||||
],
|
||||
];
|
||||
public $admin_links = [
|
||||
[
|
||||
'text' => '<i class="fa fa-fw fa-copy"></i> Suggestions',
|
||||
'url' => '{ROOT_URL}admin/suggestions',
|
||||
],
|
||||
];
|
||||
public $main_links = [
|
||||
[
|
||||
'text' => 'Suggestions',
|
||||
'url' => '{ROOT_URL}suggestions/index',
|
||||
],
|
||||
];
|
||||
public $resourceMatrix = [
|
||||
[
|
||||
'title' => 'Welcome',
|
||||
'content' => '<p>This is just a simple message to say thank you for installing The Tempus Project. If you have any questions you can find everything through our website <a href="https://TheTempusProject.com">here</a>.</p>',
|
||||
'author' => 1,
|
||||
'created{time}' => 0,
|
||||
'edited{time}' => 0,
|
||||
'draft' => 0,
|
||||
],
|
||||
];
|
||||
public $contact_footer_links = [
|
||||
[
|
||||
'text' => 'Bug Report',
|
||||
'url' => '{ROOT_URL}bugreport',
|
||||
],
|
||||
];
|
||||
public function __construct() {
|
||||
$reflect = new ReflectionClass( $this );
|
||||
if ( true === self::$initialized || !Installer::pluginEnabled( $reflect->getShortName() ) ) {
|
||||
return;
|
||||
}
|
||||
foreach ( $this->contact_footer_links as $key => $link ) {
|
||||
Navigation::addLink( App::CONTACT_FOOTER_MENU_NAME, $link );
|
||||
}
|
||||
foreach ( $this->info_footer_links as $key => $link ) {
|
||||
Navigation::addLink( App::INFO_MENU_NAME, $link );
|
||||
}
|
||||
foreach ( $this->main_links as $key => $link ) {
|
||||
Navigation::addLink( App::MAIN_MENU_NAME, $link );
|
||||
}
|
||||
foreach ( $this->admin_links as $key => $link ) {
|
||||
Navigation::addLink( App::ADMIN_MENU_NAME, $link );
|
||||
}
|
||||
self::$initialized = true;
|
||||
}
|
||||
}
|
@ -1,80 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<!--
|
||||
* app/resources/templates/example.tpl
|
||||
*
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>{TITLE}</title>
|
||||
<meta name="description" content="{PAGE_DESCRIPTION}">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="author" content="The Tempus Project">
|
||||
{ROBOT}
|
||||
<link rel="alternate" hreflang="en-us" href="alternateURL">
|
||||
<link rel="icon" href="{BASE}images/favicon.ico">
|
||||
<!-- Required CSS -->
|
||||
<!-- Custom styles for this template -->
|
||||
<link rel="stylesheet" href="{BASE}Templates/default/default.css">
|
||||
<!-- Required JS -->
|
||||
<script language="JavaScript" type="text/javascript" src="{BASE}JS/default.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<nav class="navbar navbar-inverse navbar-fixed-top">
|
||||
<!--Brand and toggle should get grouped for better mobile display
|
||||
but I had to account for additional menus-->
|
||||
<div class="navbar-header">
|
||||
<a href="{BASE}" class="navbar-brand">{SITENAME}</a>
|
||||
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target=".navbar-ex1-collapse" style="">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
<div class="collapse navbar-collapse navbar-ex1-collapse">
|
||||
{topNavLeft}
|
||||
<div class="navbar-right">
|
||||
<ul class=" navbar-nav">
|
||||
{topNavRight}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="container-fluid">
|
||||
<div class="foot-pad">
|
||||
{ISSUES}
|
||||
<div class="row">
|
||||
<div class="container">
|
||||
{ERROR}
|
||||
{NOTICE}
|
||||
{SUCCESS}
|
||||
{INFO}
|
||||
</div>
|
||||
</div>
|
||||
{/ISSUES}
|
||||
<div class="row">
|
||||
<div class="container">
|
||||
{CONTENT}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<footer>
|
||||
{FOOT}
|
||||
{COPY}
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Bootstrap core JavaScript and jquery -->
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
|
||||
<script src="{BASE}vendor/twbs/bootstrap/dist/js/bootstrap.min.js"></script>
|
||||
</body>
|
||||
</html>
|
@ -1,34 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* app/resources/templates/example.inc.php
|
||||
*
|
||||
* This is an example loader for the example template.
|
||||
*
|
||||
* @version 5.0.1
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
namespace TheTempusProject\Templates;
|
||||
|
||||
use TheTempusProject\Houdini\Classes\Views;
|
||||
use TheTempusProject\Houdini\Classes\Navigation;
|
||||
use TheTempusProject\Houdini\Classes\Components;
|
||||
use TheTempusProject\Bedrock\Classes\Config;
|
||||
use TheTempusProject\TheTempusProject as App;
|
||||
|
||||
class ExampleLoader {
|
||||
public function __construct() {
|
||||
Components::set( 'TEMPLATE_URL', Template::parse( '{ROOT_URL}app/templates/default/' ) );
|
||||
Components::set( 'LOGO', Config::get( 'main/logo' ) );
|
||||
Components::set( 'FOOT', Views::simpleView( 'foot' ) );
|
||||
Components::set( 'COPY', Views::simpleView( 'copy' ) );
|
||||
if ( App::$isLoggedIn ) {
|
||||
Components::set( 'STATUS', Views::simpleView( 'nav.statusLoggedIn' ) );
|
||||
Components::set( 'USERNAME', App::$activeUser->username );
|
||||
} else {
|
||||
Components::set( 'STATUS', Views::simpleView( 'nav.statusLoggedOut' ) );
|
||||
}
|
||||
Components::set( 'topNavLeft', Navigation::activePageSelect( 'nav.main' ) );
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
<p>This is a more complex component that includes another component...</p>
|
||||
{simple}
|
||||
<p>...right in the middle!</p>
|
@ -1,141 +0,0 @@
|
||||
|
||||
<p>It is comprised entirely of free form HTML</p>
|
||||
<p>If you are feeling extra bold you can use the templating engine to set variables to be replaced at runtime such as {variable} or even {variable2}, or maybe even just look through some data:</p>
|
||||
{loop}
|
||||
{value1} is the first value.<br />
|
||||
{value2} is the second value.<br />
|
||||
{value3} is the third value.<br />
|
||||
{/loop}
|
||||
{ALT}No Loop{/ALT}
|
||||
{footer}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h1>This is a default view </h1>
|
||||
|
||||
<p>The Tempus-Project template-processor works with the backend to render html for the end user. This process has several steps and components that can get pretty complex. For the moment let's just review a few that can be used to generate web pages. </p>
|
||||
|
||||
<h2>Views</h2>
|
||||
<p>Views are the most basic interaction between the front-end and back-end. Inside of a controler, you can call a view in two ways:</p>
|
||||
<h3>1. Normal - Views::view</h3>
|
||||
<pre></pre>
|
||||
<h3>2. Inline - Views::simpleView</h3>
|
||||
<pre></pre>
|
||||
|
||||
|
||||
<h2>Components</h2>
|
||||
<p>You can think of components as a sort of front-end variable that can be filled in by the back-end before being send to the end-user. You can include components in all template parsing with a simple command:</p>
|
||||
<pre></pre>
|
||||
Adding this to a controler will give access to that component's value in the rendering engine. For example:
|
||||
<pre></pre>
|
||||
|
||||
<h2>Pagination</h2>
|
||||
PAGINATION
|
||||
if (Pagination::totalPages() <= 1) {
|
||||
Components::set('PAGINATION', '<lb>');
|
||||
} else {
|
||||
Components::set('PAGINATION', Views::simpleView('nav.pagination', $pageData));
|
||||
}
|
||||
|
||||
|
||||
|
||||
<h2>Navigation</h2>
|
||||
|
||||
<h2>Filters</h2>
|
||||
<p>In some cases, you may want to hide or show text on a page conditionally. For example, you may have administrator controls on a commonly used page. Obviously you would like to hide those controls from regular users; even if you have safeguards to prevent them from performing any restricted actions.</p>
|
||||
<p>This is where filters come in. They do exactly that, conditionally hide or show part of a page based on back-end logic. The admin example is so common, its already built in. If a user has the isAdmin permission on thier group, they will be able to see anything within the "ADMIN" tag:</p>
|
||||
<pre>
|
||||
Filters::add('member', '#{MEMBER}(.*?){/MEMBER}#is', (self::$isMember ? '$1' : ''), true);
|
||||
Filters::add('mod', '#{MOD}(.*?){/MOD}#is', (self::$isMod ? '$1' : ''), true);
|
||||
Filters::add('admin', '#{ADMIN}(.*?){/ADMIN}#is', (self::$isAdmin ? '$1' : ''), true);
|
||||
</pre>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
'#\[b\](.*?)\[/b\]#is' => '<b>$1</b>',
|
||||
'#\[p\](.*?)\[/p\]#is' => '<p>$1</p>',
|
||||
'#\[i\](.*?)\[/i\]#is' => '<i>$1</i>',
|
||||
'#\[u\](.*?)\[/u\]#is' => '<u>$1</u>',
|
||||
'#\[s\](.*?)\[/s\]#is' => '<del>$1</del>',
|
||||
'#\[code\](.*?)\[/code\]#is' => '<code>$1</code>',
|
||||
'#\[color=(.*?)\](.*?)\[/color\]#is' => "<font color='$1'>$2</font>",
|
||||
'#\[img\](.*?)\[/img\]#is' => "<img src='$1'>",
|
||||
'#\[url=(.*?)\](.*?)\[/url\]#is' => "<a href='$1'>$2</a>",
|
||||
'#\[quote=(.*?)\](.*?)\[/quote\]#is' => "<blockquote cite='$1'>$2</blockquote>",
|
||||
'#\(c\)#is' => '✔',
|
||||
'#\(x\)#is' => '✖',
|
||||
'#\(!\)#is' => '❕',
|
||||
'#\(\?\)#is' => '❔',
|
||||
'#\[list\](.*?)\[/list\]#is' => '<ul>$1</ul>',
|
||||
'#\(\.\)(.*)$#m' => '<li>$1</li>',
|
||||
'/(^|\s)@(\w*[a-zA-Z_]+\w*)/' => ' <a href="http://twitter.com/search?q=%40\2">@\2</a>',
|
||||
'/(^|\s)#(\w*[a-zA-Z_]+\w*)/' => ' <a href="http://twitter.com/search?q=%23\2">#\2</a>',
|
||||
'#/\*.*?\*/#s' => null,
|
||||
'#(?<!:)//.*#' => null,
|
||||
"#{CHECKED:(.*?)=(.*?)}#s" => null,
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2>Issues</h2>
|
||||
<p>One of the pre-existing filters happens to be Issues. In the controller for this file, you should see a block that includes several examples of Issues. These issues are automatically added as individual components and hidden with the issues filter.<p>
|
||||
<pre>
|
||||
Issues::add( 'error', [ 'This is an error with multiple parts.' => [ 'Error 1', 'Error 2' ] ] );
|
||||
Issues::add( 'error', 'This is a single error.' );
|
||||
Issues::add( 'success', [ 'This is a success with multiple parts.' => [ 'Success 1', 'Success 2' ] ] );
|
||||
Issues::add( 'success', 'This is a single success.' );
|
||||
Issues::add( 'notice', 'This is a single notice.' );
|
||||
Issues::add( 'info', 'This is a single info.' );
|
||||
Filters::add('issues', '#{ISSUES}(.*?){/ISSUES}#is', (Issues::hasIssues() ? '$1' : ''), true);
|
||||
Components::set( 'NOTICE', $test );
|
||||
Components::set( 'SUCCESS', $test );
|
||||
Components::set( 'ERROR', $test );
|
||||
Components::set( 'INFO', $test );
|
||||
</pre>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h2>Forms</h2>
|
||||
select Radio
|
||||
$selected = 'CHECKED:' . $fieldName . '=' . $value;
|
||||
Components::set($selected, 'checked="checked"');
|
||||
select Option
|
||||
$find = "#\<option (.*?)value=\'" . $value . "\'#s";
|
||||
$replace = "<option $1value='" . $value . "' selected";
|
||||
self::$options[$find] = $replace;
|
@ -1 +0,0 @@
|
||||
<p>This is a simple component.</p>
|
@ -49,7 +49,6 @@ class DefaultLoader extends Loader {
|
||||
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>' );
|
||||
$this->addJs( '<script language="JavaScript" crossorigin="anonymous" type="text/javascript" src="{ROOT_URL}app/js/sw.js"></script>' );
|
||||
Components::setIfNull( 'LOGO', Config::getValue( 'main/logo' ) ?? TP_DEFAULT_LOGO );
|
||||
|
||||
if ( ! empty( Config::getValue( 'share/enabled' ) ) ) {
|
||||
|
@ -28,12 +28,7 @@
|
||||
{AUTHOR}
|
||||
{ROBOT}
|
||||
<link rel="icon" href="{ROOT_URL}images/favicon.ico" sizes="32x32">
|
||||
<!-- Apple PWA -->
|
||||
<link rel="apple-touch-icon" href="{ROOT_URL}images/apple-touch-icon.png"><!-- 180×180 -->
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||
<meta name="apple-mobile-web-app-title" content="{SITENAME}">
|
||||
<!-- PWA -->
|
||||
<link rel="manifest" href="{ROOT_URL}manifest.webmanifest">
|
||||
<!-- Required CSS -->
|
||||
<!-- <link rel="stylesheet" href="{FONT_AWESOME_URL}fontawesome.min.css" crossorigin="anonymous"> -->
|
||||
|
@ -19,7 +19,7 @@
|
||||
<tbody>
|
||||
{LOOP}
|
||||
<tr>
|
||||
<td class="text-center">{ID}</td>
|
||||
<td align="center">{ID}</td>
|
||||
<td><a href='{ROOT_URL}admin/users/view/{ID}' class="text-decoration-none">{usernamePretty}</a></td>
|
||||
<td>{DTC date}{registered}{/DTC}</td>
|
||||
<td><a href="{ROOT_URL}admin/users/edit/{ID}" class="btn btn-sm btn-warning"><i class="fa fa-fw fa-pencil"></i></a></td>
|
||||
@ -31,7 +31,7 @@
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<tr>
|
||||
<td class="text-center" colspan="6">
|
||||
<td align="center" colspan="6">
|
||||
No results to show.
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -15,7 +15,6 @@
|
||||
<label for="email" class="col-lg-6 col-form-label text-lg-end">Email:</label>
|
||||
<div class="col-lg-2">
|
||||
<input type="email" class="form-control" name="email" id="email" required>
|
||||
<input type="email" class="d-none" name="userEmail" id="userEmail">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -43,13 +42,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Cloudflare Turnstile Widget -->
|
||||
<div class="mb-3 row">
|
||||
<div class="col-2 offset-5">
|
||||
{TURNSTILE_WIDGET}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Terms of Service -->
|
||||
<div class="mb-3 text-center">
|
||||
<div class="">
|
||||
|
311
app/views/changes/bedrock.html
Normal file
@ -0,0 +1,311 @@
|
||||
<div class="m-2 m-lg-4">
|
||||
<div class="col-12 col-sm-10 col-lg-8 mx-auto p-2 p-md-3 p-lg-4 rounded shadow-sm context-main-bg">
|
||||
<div class="card context-main-bg context-main border-0">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="{ROOT_URL}libraries" class="text-decoration-none">
|
||||
Libraries
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item">
|
||||
<a href="{ROOT_URL}libraries/bedrock" class="text-decoration-none">
|
||||
Bedrock
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active" aria-current="page">
|
||||
Changes
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="card-body text-center text-lg-start">
|
||||
<h5 class="card-title">Bedrock Changes</h5>
|
||||
<p class="card-text">
|
||||
Here you can find a simple list of the important changes made to the Bedrock library.
|
||||
</p>
|
||||
</div>
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.1.2 <span class="badge text-bg-success">Latest</span></p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Comments and readme updates</li>
|
||||
<li>Composer updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/bedrock/-/tags/1.1.1" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.1.1</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/bedrock/-/tags/1.1.1" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.1</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/bedrock/-/tags/1.1" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.11</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Improved Config Form handling</li>
|
||||
<li>Improved token handling</li>
|
||||
<li>Improved error reporting</li>
|
||||
<li>Adjusted log severity</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/bedrock/-/tags/1.0.11" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.10</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Pagination bugfix</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/bedrock/-/tags/1.0.10" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.9</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
<li>Naming Fixes</li>
|
||||
<li>Migrate CustomException to Canary</li>
|
||||
<li>Hermes autoloading added</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/bedrock/-/tags/1.0.9" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.8</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Pagination bugfix</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/bedrock/-/tags/1.0.8" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.7</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Session bugfixes</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/bedrock/-/tags/1.0.7" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.6</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
<li>Gitlab CI additions</li>
|
||||
<li>Session bugfixes and improved logging</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/bedrock/-/tags/1.0.6" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.5</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/bedrock/-/tags/1.0.5" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.4</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
<li>Naming bugfix</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/bedrock/-/tags/1.0.4" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.3</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Added constants</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/bedrock/-/tags/1.0.3" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.2</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
<li>Naming Convention Changes</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/bedrock/-/tags/1.0.2" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.1</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/bedrock/-/tags/1.0.1" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Initial Release</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/bedrock/-/tags/1.0" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="card-body">
|
||||
<p class="text-center text-lg-start">
|
||||
Bedrock actually began its life as TempusProjectCore on <a href="https://github.com/TheTempusProject/TempusProjectCore" class="text-decoration-none">Github</a>.
|
||||
On March 18, 2018 the latest released tag was <strong>2.1.0</strong>.
|
||||
Over the years this code has remained dormant, then received a ton of attention, then been forgotten again.
|
||||
For most intents, this is the same code, just being actively developed.
|
||||
</p>
|
||||
<p class="text-muted text-center">
|
||||
Not all changes may be addressed individually on this page.
|
||||
</p>
|
||||
<div class="text-center py-3">
|
||||
<a href="#top" class="btn btn-outline-primary">Back to Top</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
185
app/views/changes/canary.html
Normal file
@ -0,0 +1,185 @@
|
||||
<div class="m-2 m-lg-4">
|
||||
<div class="col-12 col-sm-10 col-lg-8 mx-auto p-2 p-md-3 p-lg-4 rounded shadow-sm context-main-bg">
|
||||
<div class="card context-main-bg context-main border-0">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="{ROOT_URL}libraries" class="text-decoration-none">
|
||||
Libraries
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item">
|
||||
<a href="{ROOT_URL}libraries/canary" class="text-decoration-none">
|
||||
Canary
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active" aria-current="page">
|
||||
Changes
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="card-body text-center text-lg-start">
|
||||
<h5 class="card-title">Canary Changes</h5>
|
||||
<p class="card-text">
|
||||
Here you can find a simple list of the important changes made to the Canary library.
|
||||
</p>
|
||||
</div>
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.7 <span class="badge text-bg-success">Latest</span></p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Comments and readme updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/canary/-/tags/1.0.7" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.6</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Re-added log option for variables.</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/canary/-/tags/1.0.6" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.5</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Naming Convention Changes</li>
|
||||
<li>Migrated CustomException from Bedrock</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/canary/-/tags/1.0.5" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.4</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Improve line limit and added a new config for it.</li>
|
||||
<li>Bugfix for missed rename.</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/canary/-/tags/1.0.4" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.3</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Gitignore addition</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/canary/-/tags/1.0.3" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.2</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Bugfix for addLog events when the log is blank.</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/canary/-/tags/1.0.2" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.1</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Add Composer lock file</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/canary/-/tags/1.0.1" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Initial Release</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/canary/-/tags/1.0" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="card-body">
|
||||
<p class="text-center text-lg-start">
|
||||
Canary actually began its life as TempusDebugger on <a href="https://github.com/TheTempusProject/TempusDebugger" class="text-decoration-none">Github</a>.
|
||||
On March 26, 2018 the latest released tag was <strong>1.1</strong>.
|
||||
Over the years this code has remained dormant, then received a ton of attention, then been forgotten again.
|
||||
For most intents, this is the same code, just being actively developed.
|
||||
The foundation of TempusDebugger was originally sending debug messages to chrome's developer-tools.
|
||||
Now the primary focus lies in sending the logs directly to frontend elements or saving them to files.
|
||||
</p>
|
||||
<p class="text-muted text-center">
|
||||
Not all changes may be addressed individually on this page.
|
||||
</p>
|
||||
<div class="text-center py-3">
|
||||
<a href="#top" class="btn btn-outline-primary">Back to Top</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
121
app/views/changes/hermes.html
Normal file
@ -0,0 +1,121 @@
|
||||
<div class="m-2 m-lg-4">
|
||||
<div class="col-12 col-sm-10 col-lg-8 mx-auto p-2 p-md-3 p-lg-4 rounded shadow-sm context-main-bg">
|
||||
<div class="card context-main-bg context-main border-0">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="{ROOT_URL}libraries" class="text-decoration-none">
|
||||
Libraries
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item">
|
||||
<a href="{ROOT_URL}libraries/hermes" class="text-decoration-none">
|
||||
Hermes
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active" aria-current="page">
|
||||
Changes
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="card-body text-center text-lg-start">
|
||||
<h5 class="card-title">Hermes Changes</h5>
|
||||
<p class="card-text">
|
||||
Here you can find a simple list of the important changes made to the Hermes library.
|
||||
</p>
|
||||
</div>
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.4 <span class="badge text-bg-success">Latest</span></p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Comments and readme updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/hermes/-/tags/1.0.4" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.3</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Improved http vs https detection when traffic is being forwarded or proxied.</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/hermes/-/tags/1.0.3" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.2</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Bugfix for camelCase filenames which lead to some cases where files where not auto-loaded by name properly.</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/hermes/-/tags/1.0.2" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.1</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Comments and readme updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/hermes/-/tags/1.0.1" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Initial Release</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/hermes/-/tags/1.0" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="card-body">
|
||||
<p class="text-muted text-center">
|
||||
Not all changes may be addressed individually on this page.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
280
app/views/changes/houdini.html
Normal file
@ -0,0 +1,280 @@
|
||||
<div class="m-2 m-lg-4">
|
||||
<div class="col-12 col-sm-10 col-lg-8 mx-auto p-2 p-md-3 p-lg-4 rounded shadow-sm context-main-bg">
|
||||
<div class="card context-main-bg context-main border-0">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="{ROOT_URL}libraries" class="text-decoration-none">
|
||||
Libraries
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item">
|
||||
<a href="{ROOT_URL}libraries/houdini" class="text-decoration-none">
|
||||
Houdini
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active" aria-current="page">
|
||||
Changes
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="card-body text-center text-lg-start">
|
||||
<h5 class="card-title">Houdini Changes</h5>
|
||||
<p class="card-text">
|
||||
Here you can find a simple list of the important changes made to the Houdini library.
|
||||
</p>
|
||||
</div>
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">2.0.3 <span class="badge text-bg-success">Latest</span></p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Comments and readme updates</li>
|
||||
<li>Improved Navigation display for Bootstrap 5</li>
|
||||
<li>Improved active page select for Bootstrap 5</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/houdini/-/tags/2.0.2" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">2.0.2</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Improved Navigation display for Bootstrap 5</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/houdini/-/tags/2.0.2" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">2.0.1</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/houdini/-/tags/2.0.1" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">2.0</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Improved issue display</li>
|
||||
<li>Add component::prepend</li>
|
||||
<li>Add switches to form html</li>
|
||||
<li>Updated form html to Bootstrap 5</li>
|
||||
<li>Updated navigation html to Bootstrap 5</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/houdini/-/tags/2.0" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.8</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Added setIfNull to components</li>
|
||||
<li>Composer updates</li>
|
||||
<li>Re-integrated CustomExceptions</li>
|
||||
<li>Various filter updates to fix long-standing bugs and improve reliability.</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/houdini/-/tags/1.0.8" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.7</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
<li>Gitlab CI fixes</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/houdini/-/tags/1.0.7" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.6</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
<li>Gitlab CI additions</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/houdini/-/tags/1.0.6" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.5</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/houdini/-/tags/1.0.5" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.4</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/houdini/-/tags/1.0.4" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.3</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Naming Convention Changes</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/houdini/-/tags/1.0.3" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.2</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/houdini/-/tags/1.0.2" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0.1</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/houdini/-/tags/1.0.1" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">1.0</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Initial Release</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/houdini/-/tags/1.0" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="card-body">
|
||||
<p class="text-center text-lg-start">
|
||||
Houdini actually began its life as part of TempusProjectCore on <a href="https://github.com/TheTempusProject/TempusProjectCore" class="text-decoration-none">Github</a>.
|
||||
On March 18, 2018 the latest released tag was <strong>2.1.0</strong>.
|
||||
Over the years this code has remained dormant, then received a ton of attention, then been forgotten again.
|
||||
For most intents, this is the same code, just being actively developed.
|
||||
Once TempusProjectCore got large enough, it became clear that the front-end needed some hard separation from the backend.
|
||||
Over the years, this has morphed into several individual and distinct libraries.
|
||||
The front-end is Houdini and all back-end code is handled by a series of more specialized libraries.
|
||||
</p>
|
||||
<p class="text-muted text-center">
|
||||
Not all changes may be addressed individually on this page.
|
||||
</p>
|
||||
<div class="text-center py-3">
|
||||
<a href="#top" class="btn btn-outline-primary">Back to Top</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
499
app/views/changes/ttp.html
Normal file
@ -0,0 +1,499 @@
|
||||
<div class="m-2 m-lg-4">
|
||||
<div class="col-12 col-sm-10 col-lg-8 mx-auto p-2 p-md-3 p-lg-4 rounded shadow-sm context-main-bg">
|
||||
<div class="card context-main-bg context-main border-0">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="{ROOT_URL}libraries" class="text-decoration-none">
|
||||
Libraries
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item">
|
||||
<a href="{ROOT_URL}libraries/ttp" class="text-decoration-none">
|
||||
TheTempusProject
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active" aria-current="page">
|
||||
Changes
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<div class="card-body text-center text-lg-start">
|
||||
<h5 class="card-title">TheTempusProject Changes</h5>
|
||||
<p class="card-text">
|
||||
Here you can find a simple list of the important changes made to the Houdini library.
|
||||
</p>
|
||||
</div>
|
||||
<ul class="list-group list-group-flush">
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">5.0 <span class="badge text-bg-success">Latest</span></p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
<li>UI Improvements - mostly for mobile layout</li>
|
||||
<li>Installer bugfixes</li>
|
||||
<li>Cleanup</li>
|
||||
<li>Readme update</li>
|
||||
<li>Added image manager</li>
|
||||
<li>Added maintenance mode</li>
|
||||
<li>Removed unused code</li>
|
||||
<li>View organization</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/5.0" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">4.0.4</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
<li>UI Improvements</li>
|
||||
<li>Added Contact list to dash</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/4.0.4" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">4.0.3</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Installer fixes for missing config values</li>
|
||||
<li>Added new-registrations toggle</li>
|
||||
<li>Added redirects link to main menu</li>
|
||||
<li>UserCP uploads bugfix</li>
|
||||
<li>Routes bugfix</li>
|
||||
<li>SendMail bugfix</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/4.0.3" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">4.0.2</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Removed unused code</li>
|
||||
<li>Install-Complete bugfix</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/4.0.2" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">4.0.1</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>DarkMode Added</li>
|
||||
<li>Default-group bugfix</li>
|
||||
<li>Notifications and Messages access better communicated.</li>
|
||||
<li>Various UI improvements</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/4.0.1" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">4.0</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Bugfixes</li>
|
||||
<li>Comment updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/4.0" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">3.0.17</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer update</li>
|
||||
<li>Switch to composer dependencies for front-end assets</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/3.0.17" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">3.0.16</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer update</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/3.0.16" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">3.0.15</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer update</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/3.0.15" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">3.0.14</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Numerous bugfixes</li>
|
||||
<li>Composer update</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/3.0.14" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">3.0.13</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Numerous UI fixes</li>
|
||||
<li>Numerous plugin fixes</li>
|
||||
<li>Installer bugfixes</li>
|
||||
<li>Migrated forms functionality to one file</li>
|
||||
<li>Separated the footer into components</li>
|
||||
<li>Cleanup</li>
|
||||
<li>Composer updates</li>
|
||||
<li>Readme update</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/3.0.13" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">3.0.12</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Cleanup</li>
|
||||
<li>Composer updates</li>
|
||||
<li>License update</li>
|
||||
<li>Readme update</li>
|
||||
<li>Docker updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/3.0.12" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">3.0.11</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/3.0.11" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">3.0.10</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
<li>Installer bugfixes</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/3.0.10" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">3.0.9</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
<li>Gitignore addition</li>
|
||||
<li>Plugin bugfixes</li>
|
||||
<li>Installer bugfixes</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/3.0.9" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">3.0.8</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
<li>Gitlab CI additions</li>
|
||||
<li>Installer Bugfixes</li>
|
||||
<li>Cleanup</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/3.0.8" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">3.0.7</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Installer Bugfixes</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/3.0.7" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">3.0.6</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/3.0.6" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">3.0.5</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
<li>Naming Convention Changes</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/3.0.5" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">3.0.4</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Constant changes to support autoloading</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/3.0.4" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">3.0.3</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
<li>Naming Fixes</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/3.0.3" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">3.0.2</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Composer updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/3.0.2" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">3.0.1</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Add Composer lock file</li>
|
||||
<li>Gitignore additions</li>
|
||||
<li>Cleanup</li>
|
||||
<li>Token Bugfix</li>
|
||||
<li>Docker updates</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2"href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/3.0.1" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="list-group-item context-main-bg context-main context-main-border">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<p class="h5">3.0</p>
|
||||
</div>
|
||||
<div class="col-9">
|
||||
<ul>
|
||||
<li>Initial Release</li>
|
||||
</ul>
|
||||
<p class="text-center">
|
||||
<a class="btn btn-md btn-outline-primary mt-2" href="https://git.thetempusproject.com/the-tempus-project/TheTempusProject/-/tags/3.0" target="_blank">
|
||||
<span class="fa-brands fa-fw fa-gitlab"></span> Tag
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="card-body">
|
||||
<p class="text-center text-lg-start">
|
||||
Bedrock actually began its life on <a href="https://github.com/TheTempusProject/TheTempusProject" class="text-decoration-none">Github</a>.
|
||||
On March 18, 2018 the latest released tag was <strong>2.1.0</strong>.
|
||||
Over the years this code has remained dormant, then received a ton of attention, then been forgotten again.
|
||||
For most intents, this is the same code, just being actively developed.
|
||||
</p>
|
||||
<p class="text-muted text-center">
|
||||
Not all changes may be addressed individually on this page.
|
||||
</p>
|
||||
<div class="text-center py-3">
|
||||
<a href="#top" class="btn btn-outline-primary">Back to Top</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
41
app/views/deps/bedrock.html
Normal file
@ -0,0 +1,41 @@
|
||||
<div class="m-2 m-lg-4">
|
||||
<div class="col-12 col-md-10 col-lg-8 mx-auto p-4 context-main-bg">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="{ROOT_URL}libraries" class="text-decoration-none">
|
||||
Libraries
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active" aria-current="page">
|
||||
Bedrock
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<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 mx-auto mx-lg-0">
|
||||
<img src="{ROOT_URL}images/bedrock.jpg" class="d-block mx-lg-auto img-fluid rounded" alt="Bootstrap Themes" width="700" height="300" 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-flex justify-content-center justify-content-lg-start">
|
||||
<a href="/libraries/bedrock/git" class="btn btn-primary px-3 btn-lg m-2">
|
||||
Git
|
||||
</a>
|
||||
<a href="/libraries/bedrock/packagist" class="btn btn-outline-primary px-3 m-2 btn-lg">
|
||||
Packagist
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-center text-muted">
|
||||
For a list of recent changes, please check <a href="/libraries/bedrock/changes" class="text-decoration-none">here</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
41
app/views/deps/canary.html
Normal file
@ -0,0 +1,41 @@
|
||||
<div class="m-2 m-lg-4">
|
||||
<div class="col-12 col-md-10 col-lg-8 mx-auto p-4 context-main-bg">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="{ROOT_URL}libraries" class="text-decoration-none">
|
||||
Libraries
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active" aria-current="page">
|
||||
Canary
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<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 mx-auto mx-lg-0">
|
||||
<img src="{ROOT_URL}images/canary.jpg" class="d-block mx-lg-auto img-fluid rounded" alt="Bootstrap Themes" width="700" height="300" 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-flex justify-content-center justify-content-lg-start">
|
||||
<a href="/libraries/canary/git" class="btn btn-primary px-3 btn-lg m-2">
|
||||
Git
|
||||
</a>
|
||||
<a href="/libraries/canary/packagist" class="btn btn-outline-primary px-3 m-2 btn-lg">
|
||||
Packagist
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-center text-muted">
|
||||
For a list of recent changes, please check <a href="/libraries/canary/changes" class="text-decoration-none">here</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
41
app/views/deps/hermes.html
Normal file
@ -0,0 +1,41 @@
|
||||
<div class="m-2 m-lg-4">
|
||||
<div class="col-12 col-md-10 col-lg-8 mx-auto p-4 context-main-bg">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="{ROOT_URL}libraries" class="text-decoration-none">
|
||||
Libraries
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active" aria-current="page">
|
||||
Hermes
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<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 mx-auto mx-lg-0">
|
||||
<img src="{ROOT_URL}images/hermes.jpg" class="d-block mx-lg-auto img-fluid rounded" alt="Bootstrap Themes" width="700" height="300" 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-flex justify-content-center justify-content-lg-start">
|
||||
<a href="/libraries/hermes/git" class="btn btn-primary px-3 btn-lg m-2">
|
||||
Git
|
||||
</a>
|
||||
<a href="/libraries/hermes/packagist" class="btn btn-outline-primary px-3 m-2 btn-lg">
|
||||
Packagist
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-center text-muted">
|
||||
For a list of recent changes, please check <a href="/libraries/hermes/changes" class="text-decoration-none">here</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
41
app/views/deps/houdini.html
Normal file
@ -0,0 +1,41 @@
|
||||
<div class="m-2 m-lg-4">
|
||||
<div class="col-12 col-md-10 col-lg-8 mx-auto p-4 context-main-bg">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="{ROOT_URL}libraries" class="text-decoration-none">
|
||||
Libraries
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active" aria-current="page">
|
||||
Houdini
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<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 mx-auto mx-lg-0">
|
||||
<img src="{ROOT_URL}images/houdini.jpg" class="d-block mx-lg-auto img-fluid rounded" alt="Bootstrap Themes" width="700" height="300" 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-flex justify-content-center justify-content-lg-start">
|
||||
<a href="/libraries/houdini/git" class="btn btn-primary px-3 btn-lg m-2">
|
||||
Git
|
||||
</a>
|
||||
<a href="/libraries/houdini/packagist" class="btn btn-outline-primary px-3 m-2 btn-lg">
|
||||
Packagist
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-center text-muted">
|
||||
For a list of recent changes, please check <a href="/libraries/houdini/changes" class="text-decoration-none">here</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
58
app/views/deps/index.html
Normal file
@ -0,0 +1,58 @@
|
||||
<div class="m-2 m-lg-4">
|
||||
<div class="col-12 mx-5 col-sm-10 col-lg-8 mx-auto p-4 rounded shadow-sm context-main-bg">
|
||||
<h2 class="text-center mb-4">{SITENAME} Libraries</h2>
|
||||
<hr>
|
||||
<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>
|
||||
<div class="container p-2 p-md-4" id="custom-cards">
|
||||
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 align-items-center justify-content-center g-2 g-md-4">
|
||||
<div class="col">
|
||||
<a href="/libraries/bedrock" class="text-decoration-none">
|
||||
<div class="card card-cover overflow-hidden text-bg-dark rounded-4 shadow-lg" style="background-image: url('{ROOT_URL}images/bedrock.jpg'); height: 300px;">
|
||||
<div class="d-flex flex-column p-2 p-md-3 p-lg-3">
|
||||
<h3 class="h4 lh-1 fw-bold text-dark">Bedrock</h3>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a href="/libraries/canary" class="text-decoration-none">
|
||||
<div class="card card-cover overflow-hidden text-bg-dark rounded-4 shadow-lg" style="background-image: url('{ROOT_URL}images/canary.jpg'); height: 300px;">
|
||||
<div class="d-flex flex-column p-2 p-md-3 p-lg-3">
|
||||
<h3 class="h4 lh-1 fw-bold text-dark">Canary</h3>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a href="/libraries/hermes" class="text-decoration-none">
|
||||
<div class="card card-cover overflow-hidden text-bg-dark rounded-4 shadow-lg" style="background-image: url('{ROOT_URL}images/hermes.jpg'); height: 300px;">
|
||||
<div class="d-flex flex-column p-2 p-md-3 p-lg-3">
|
||||
<h3 class="h4 lh-1 fw-bold text-dark">Hermes</h3>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a href="/libraries/houdini" class="text-decoration-none">
|
||||
<div class="card card-cover overflow-hidden text-bg-dark rounded-4 shadow-lg" style="background-image: url('{ROOT_URL}images/houdini.jpg'); height: 300px;">
|
||||
<div class="d-flex flex-column p-2 p-md-3 p-lg-3">
|
||||
<h3 class="h4 lh-1 fw-bold text-dark">Houdini</h3>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a href="/libraries/ttp" class="text-decoration-none">
|
||||
<div class="card card-cover overflow-hidden text-bg-dark rounded-4 shadow-lg" style="background-image: url('{ROOT_URL}images/logoLarge.jpg'); height: 300px;">
|
||||
<div class="d-flex flex-column p-2 p-md-3 p-lg-3">
|
||||
<h3 class="h4 lh-1 fw-bold text-light">The Tempus Project</h3>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
40
app/views/deps/ttp.html
Normal file
@ -0,0 +1,40 @@
|
||||
<div class="m-2 m-lg-4">
|
||||
<div class="col-12 col-md-10 col-lg-8 mx-auto p-4 context-main-bg">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="{ROOT_URL}libraries" class="text-decoration-none">
|
||||
Libraries
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active" aria-current="page">
|
||||
The Tempus Project
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<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 mx-auto mx-lg-0">
|
||||
<img src="{ROOT_URL}images/logoLarge.jpg" class="d-block mx-lg-auto img-fluid rounded" alt="Bootstrap Themes" width="700" height="300" loading="lazy">
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<h1 class="display-5 fw-bold lh-1 mb-3">The Tempus Project</h1>
|
||||
<p class="lead">
|
||||
The Tempus Project is the main repo housing the web application. Essentially the app you are using right now.
|
||||
</p>
|
||||
<div class="d-flex justify-content-center justify-content-lg-start">
|
||||
<a href="/libraries/ttp/git" class="btn btn-primary px-3 btn-lg m-2">
|
||||
Git
|
||||
</a>
|
||||
<a href="/libraries/ttp/packagist" class="btn btn-outline-primary px-3 m-2 btn-lg">
|
||||
Packagist
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-center text-muted">
|
||||
For a list of recent changes, please check <a href="/libraries/ttp/changes" class="text-decoration-none">here</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
@ -3,13 +3,13 @@
|
||||
<div class="px-4 mt-2">
|
||||
<!-- Share Button (visible only on medium+ screens) -->
|
||||
<button type="button" class="btn btn-outline-primary"
|
||||
data-bs-toggle="popover" data-bs-html="true" title="Share" data-bs-placement="top" data-bs-trigger="focus"
|
||||
data-bs-toggle="popover" data-bs-html="true" title="Share"
|
||||
data-bs-content='
|
||||
{QR_CODE}
|
||||
<div class="d-flex justify-content-between">
|
||||
<a href="https://www.reddit.com/submit?type=LINK&url={CURRENT_URL_SAFE}" target="_blank" class="mx-1 btn btn-lg reddit"><i class="fa-brands fa-fw fa-reddit"></i></a>
|
||||
<a href="https://www.facebook.com/sharer/sharer.php?u={CURRENT_URL_SAFE}" target="_blank" class="mx-1 btn btn-lg facebook"><i class="fa-brands fa-fw fa-facebook"></i></a>
|
||||
<a href="https://x.com/intent/tweet?url={CURRENT_URL_SAFE}" target="_blank" class="mx-1 btn btn-lg x-black"><i class="fa-brands fa-fw fa-x"></i></a>
|
||||
<a href="https://www.reddit.com/submit?type=LINK&url={CURRENT_URL_SAFE}" target="_blank" class="mx-1 btn btn-sm btn-outline-danger"><i class="fa-brands fa-fw fa-reddit"></i></a>
|
||||
<a href="https://www.facebook.com/sharer/sharer.php?u={CURRENT_URL_SAFE}" target="_blank" class="mx-1 btn btn-sm btn-outline-primary"><i class="fa-brands fa-fw fa-facebook"></i></a>
|
||||
<a href="https://twitter.com/intent/tweet?url={CURRENT_URL_SAFE}" target="_blank" class="mx-1 btn btn-sm btn-outline-info"><i class="fa-brands fa-fw fa-x"></i></a>
|
||||
</div>'>
|
||||
Share
|
||||
</button>
|
||||
|
@ -1,75 +1,145 @@
|
||||
<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="pt-3 mt-4 text-center">
|
||||
<img class="d-block mx-auto mb-4" src="{root_URL}images/logoWhite.png" alt="" width="72" height="57">
|
||||
<h1 class="display-5 fw-bold">The Tempus Project</h1>
|
||||
<div class="col-lg-6 mx-auto px-2">
|
||||
<p class="lead mb-4">
|
||||
{SITENAME} allows you to quickly design, develop, and customize responsive mobile-first web applications.
|
||||
</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>
|
||||
|
||||
<div class="b-example-divider"></div>
|
||||
|
||||
<div class="container px-1 py-4 p-sm-4">
|
||||
<p class="col-12 col-lg-8 offset-lg-2">
|
||||
Utilizing our in-house <a href="/home/libraries" class="text-decoration-none">libraries</a>, {SITENAME} provides a very basic PHP web application utilizing the MVC (Model View Controller) pattern, paired with Bootstrap for a robust front-end experience. {SITENAME} can be deployed on most server architecture in seconds and can be installed and customized within minutes. Paired with Bootstrap, the world's most popular front-end open source toolkit, you have a great platform to build just about anything.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="b-example-divider"></div>
|
||||
|
||||
<div class="container pt-3 p-sm-4" id="hanging-icons">
|
||||
<h2 class="pb-2 border-bottom context-main-border">Includes many systems right oout of the box</h2>
|
||||
<div class="row g-4 py-5 row-cols-1 row-cols-lg-3">
|
||||
<div class="col d-flex align-items-start">
|
||||
<div
|
||||
class="icon-square text-bg-light d-inline-flex align-items-center justify-content-center fs-4 flex-shrink-0 me-3">
|
||||
<i class="fa-solid fa-user"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="fs-2">User Management</h3>
|
||||
<p>From new user registrations to forgotten password recovery and everything in-between, the included authentication and authorization controls can handle all your needs and include groups with highly customizable permissions systems.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex align-items-start">
|
||||
<div
|
||||
class="icon-square text-bg-light d-inline-flex align-items-center justify-content-center fs-4 flex-shrink-0 me-3">
|
||||
<i class="fa-solid fa-screwdriver-wrench"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="fs-2">Administration</h3>
|
||||
<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.
|
||||
Everything from your sitename and timezone to notifications and emails are a breeze with the included Admin panel. Out of the box you will have direct control over most of your application and you can easily expand or add new controls as you need.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex align-items-start">
|
||||
<div
|
||||
class="icon-square text-bg-light d-inline-flex align-items-center justify-content-center fs-4 flex-shrink-0 me-3">
|
||||
<i class="fa-regular fa-folder-open"></i>
|
||||
</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>
|
||||
<div>
|
||||
<h3 class="fs-2">Plugins</h3>
|
||||
<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-gitlab.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.
|
||||
One of the best features of {SITENAME} is the plugin functionality. Much of the system has been modeled to work as self-contained applications that work together. Many of the features available here are plugins aty their core.
|
||||
</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 class="b-example-divider"></div>
|
||||
|
||||
<div class="container pt-3 p-sm-4" id="icon-grid">
|
||||
<h2 class="pb-2 border-bottom context-main-border">Plugins</h2>
|
||||
<div class="row row-cols-1 row-cols-sm-2 row-cols-md-3 row-cols-lg-4 g-4 py-5">
|
||||
<div class="col d-flex align-items-start">
|
||||
<i class="fa-solid fa-pen-nib fa-3x"></i>
|
||||
<div class="ps-3">
|
||||
<h3 class="fw-bold mb-0 fs-4">Blog</h3>
|
||||
<p>Whether its the companies transparency or your own need to share, our blog plugin makes it simple.</p>
|
||||
</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="col d-flex align-items-start">
|
||||
<i class="fa-solid fa-bug fa-3x"></i>
|
||||
<div class="ps-3">
|
||||
<h3 class="fw-bold mb-0 fs-4">Bug Reports</h3>
|
||||
<p>An unfortunate reality iis that every application has bugs, never leave your users without the ability to report them to you.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex align-items-start">
|
||||
<i class="fa-solid fa-comment fa-3x"></i>
|
||||
<div class="ps-3">
|
||||
<h3 class="fw-bold mb-0 fs-4">Comments</h3>
|
||||
<p>Allowing users the opportunity to share feedback is crucial. Our comments plugin not only integrates with the blog, but many other plugins to enable users to comment on any content you want.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex align-items-start">
|
||||
<i class="fa-solid fa-envelope fa-3x"></i>
|
||||
<div class="ps-3">
|
||||
<h3 class="fw-bold mb-0 fs-4">Contact</h3>
|
||||
<p>A contact form is another simple but essential tool for your business or website.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex align-items-start">
|
||||
<i class="fa-solid fa-file fa-3x"></i>
|
||||
<div class="ps-3">
|
||||
<h3 class="fw-bold mb-0 fs-4">Resume</h3>
|
||||
<p>Whether you're looking for a new gig or just want an easy way for others to see your work, our resume plugin might be the key.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex align-items-start">
|
||||
<i class="fa-solid fa-inbox fa-3x"></i>
|
||||
<div class="ps-3">
|
||||
<h3 class="fw-bold mb-0 fs-4">Subscribe</h3>
|
||||
<p>Building your list should always be a part of your application and services and it made as simple as can be with this plugin.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex align-items-start">
|
||||
<i class="fa-solid fa-list fa-3x"></i>
|
||||
<div class="ps-3">
|
||||
<h3 class="fw-bold mb-0 fs-4">WIP (Work in Progress)</h3>
|
||||
<p>A light-weight and simple plugin that allows you to keep a running list of works in progress to share with site visitors..</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex align-items-start">
|
||||
<i class="fa-brands fa-stripe fa-3x"></i>
|
||||
<div class="ps-3">
|
||||
<h3 class="fw-bold mb-0 fs-4">Memberships / Payments</h3>
|
||||
<p>Our membership plugin integrates with Stripe to allow incredibly simple membership setup and can be easily expanded to sell any of your products.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="b-example-divider"></div>
|
||||
<div class="container pt-3 p-sm-4">
|
||||
<h2 class="pb-2 border-bottom context-main-border">Light / Dark Modes</h2>
|
||||
<div class="d-lg-flex flex-lg-equal my-md-3 ps-md-3">
|
||||
<div class="col-12 col-lg-6 text-bg-dark text-white col-6 text-center overflow-hidden d-flex flex-column mb-3 mb-lg-0">
|
||||
<div class="my-3 py-3">
|
||||
<h2 class="display-6">When you stick with the light</h2>
|
||||
<p class="lead">everything looks great.</p>
|
||||
</div>
|
||||
<img class="bg-dark shadow-sm mx-auto d-flex mt-auto border-top border-light" src="{root_URL}images/lightMobile.png" alt="Light-mode mobile view" height="300" style="border-radius: 21px 21px 0 0;">
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 bg-light text-dark col-6 text-center overflow-hidden d-flex flex-column">
|
||||
<div class="my-3 py-3">
|
||||
<h2 class="display-6">But when you go to the dark side</h2>
|
||||
<p class="lead">everything is just a bit better.</p>
|
||||
</div>
|
||||
<img class="bg-dark shadow-sm mx-auto d-flex mt-auto border-top border-dark" src="{root_URL}images/darkMobile.png" alt="Dark-mode mobile view" height="300" style="border-radius: 21px 21px 0 0;">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
@ -1,32 +0,0 @@
|
||||
<div class="container py-5">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-8 text-center">
|
||||
<!-- Success Icon -->
|
||||
<div class="mb-4">
|
||||
<i class="fa fa-check-circle text-success display-3"></i>
|
||||
</div>
|
||||
<!-- Title -->
|
||||
<h1 class="display-5 fw-bold text-success">Success</h1>
|
||||
<!-- Subtitle -->
|
||||
<h3 class="mt-3">
|
||||
The Tempus Project has been successfully installed.
|
||||
</h3>
|
||||
<p class="lead mt-3">
|
||||
You can now log in and manage your site or jump straight into building your new features!
|
||||
</p>
|
||||
<!-- Info Readout Placeholder -->
|
||||
<p class="mt-4 text-muted">
|
||||
<em>Some plugins may need additional configuration and there are already some pre-made resources to get you started. (Both in the files and the Admin Panel)</em>
|
||||
</p>
|
||||
<!-- Call-to-Action Buttons -->
|
||||
<div class="d-flex justify-content-center gap-3 mt-4">
|
||||
<a href="/home/login" class="btn btn-success btn-lg">
|
||||
<i class="fa fa-sign-in-alt me-2"></i> Log In
|
||||
</a>
|
||||
<a href="/home/index" class="btn btn-outline-success btn-lg">
|
||||
<i class="fa fa-cogs me-2"></i> Go to Homepage
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,44 +0,0 @@
|
||||
<div class="context-main-bg my-3 pb-3 rounded col-10 offset-1">
|
||||
{installer-nav}
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-10">
|
||||
<legend class="my-3 text-center">Configure</legend>
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
<fieldset>
|
||||
<div class="mb-3 col-md-4 offset-md-4">
|
||||
<label for="siteName" class="form-label">Site Name:</label>
|
||||
<input class="form-control" type="text" name="siteName" id="siteName" value="">
|
||||
</div>
|
||||
<div class="mb-3 col-md-4 offset-md-4">
|
||||
<label for="logo" class="form-label">Logo (200 x 200px):</label>
|
||||
<input class="form-control" type="file" name="logo" id="logo">
|
||||
</div>
|
||||
<div class="mb-3 col-md-4 offset-md-4">
|
||||
<label for="dbPrefix" class="form-label">Database Table Prefix:</label>
|
||||
<input class="form-control" type="text" name="dbPrefix" id="dbPrefix" value="">
|
||||
</div>
|
||||
<div class="mb-3 col-md-4 offset-md-4">
|
||||
<label for="dbHost" class="form-label">Database Host:</label>
|
||||
<input class="form-control" type="text" name="dbHost" id="dbHost" value="">
|
||||
</div>
|
||||
<div class="mb-3 col-md-4 offset-md-4">
|
||||
<label for="dbName" class="form-label">Database Name:</label>
|
||||
<input class="form-control" type="text" name="dbName" id="dbName" value="">
|
||||
</div>
|
||||
<div class="mb-3 col-md-4 offset-md-4">
|
||||
<label for="dbUsername" class="form-label">Database Username:</label>
|
||||
<input class="form-control" type="text" name="dbUsername" id="dbUsername" value="">
|
||||
</div>
|
||||
<div class="mb-3 col-md-4 offset-md-4">
|
||||
<label for="dbPassword" class="form-label">Database Password:</label>
|
||||
<input class="form-control" type="password" name="dbPassword" id="dbPassword">
|
||||
</div>
|
||||
</fieldset>
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<div class="text-center mb-3">
|
||||
<button class="btn btn-lg btn-primary center-block" type="submit" name="submit" value="submit">Save</button><br>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,37 +0,0 @@
|
||||
<div class="context-main-bg my-3 pb-3 rounded col-10 offset-1">
|
||||
{installer-nav}
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-10">
|
||||
<p class="my-4">All models are required for proper installation of The Tempus Project. In this step, we will add the database tables required for these models. In the next step, you'll be able to select which plugins you would like installed.</p>
|
||||
<form method="post">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="px-5" style="width: 70%">Model Name</th>
|
||||
<th class="text-center" style="width: 20%">Version</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{LOOP}
|
||||
<tr>
|
||||
<td class="px-5">{name}</td>
|
||||
<td class="text-center">{version}</td>
|
||||
</tr>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<tr>
|
||||
<td class="text-center" colspan="3">
|
||||
No models to install.
|
||||
</td>
|
||||
</tr>
|
||||
{/ALT}
|
||||
</tbody>
|
||||
</table>
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<div class="text-center">
|
||||
<button class="btn btn-lg btn-primary center-block" type="submit" name="submit" value="submit">Install</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,12 +0,0 @@
|
||||
<div class="nav nav-tabs justify-content-center pt-3 col-10 offset-1" id="nav-tab" role="tablist">
|
||||
<button class="nav-link {menu-Welcome}" type="button" role="tab">Welcome</button>
|
||||
<button class="nav-link {menu-Terms}" type="button" role="tab">Terms</button>
|
||||
<button class="nav-link {menu-Verify}" type="button" role="tab">Verify</button>
|
||||
<button class="nav-link {menu-Configure}" type="button" role="tab">Configure</button>
|
||||
<button class="nav-link {menu-Routing}" type="button" role="tab">Routing</button>
|
||||
<button class="nav-link {menu-Models}" type="button" role="tab">Models</button>
|
||||
<button class="nav-link {menu-Plugins}" type="button" role="tab">Plugins</button>
|
||||
<button class="nav-link {menu-Resources}" type="button" role="tab">Resources</button>
|
||||
<button class="nav-link {menu-User}" type="button" role="tab">User</button>
|
||||
<button class="nav-link {menu-Complete}" type="button" role="tab">Complete</button>
|
||||
</div>
|
@ -1,45 +0,0 @@
|
||||
<div class="context-main-bg my-3 pb-3 rounded col-10 offset-1">
|
||||
{installer-nav}
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-10">
|
||||
<p class="my-4">
|
||||
The Tempus Project was built to utilize all of the plugins provided with the installer. You can choose not to enable any one of them, but it may negatively impact the operation of your site.
|
||||
</p>
|
||||
<form method="post">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="px-5" style="width: 70%">Plugin Name</th>
|
||||
<th class="text-center" style="width: 20%">Version</th>
|
||||
<th class="text-center" style="width: 10%">
|
||||
<input type="checkbox" onchange="checkAll(this)" name="check.m" value="P_[]" checked="checked">
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{LOOP}
|
||||
<tr>
|
||||
<td class="px-5">{name}</td>
|
||||
<td class="text-center">{version}</td>
|
||||
<td class="text-center">
|
||||
<input type="checkbox" value="{name}" name="P_[]" checked="checked">
|
||||
</td>
|
||||
</tr>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<tr>
|
||||
<td align="center" colspan="3">
|
||||
No models to install.
|
||||
</td>
|
||||
</tr>
|
||||
{/ALT}
|
||||
</tbody>
|
||||
</table>
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<div class="text-center mb-3">
|
||||
<button class="btn btn-lg btn-primary center-block" type="submit" name="submit" value="submit">Install</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,16 +0,0 @@
|
||||
<div class="context-main-bg my-3 pb-3 rounded col-10 offset-1">
|
||||
{installer-nav}
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-10">
|
||||
<p class="my-4">
|
||||
Some models such as groups will need additional database resources and configurations to function properly. In this step, we will install those features.
|
||||
</p>
|
||||
<form method="post">
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<div class="text-center my-3">
|
||||
<button class="btn btn-lg btn-primary center-block" type="submit" name="submit" value="submit">Install Resources</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,18 +0,0 @@
|
||||
<div class="context-main-bg my-3 pb-3 rounded col-10 offset-1">
|
||||
{installer-nav}
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-10">
|
||||
<p class="mt-4">The Tempus Project uses rewrites in htaccess files (Apache), or location directives (Nginx), to automatically route all incoming traffic through the app. In this step, we will help set-up and then test that the required configurations have been made.</p>
|
||||
<h3>Apache Users</h3>
|
||||
<p>In this step, we will attempt to generate the appropriate files for Apache servers.</p>
|
||||
<h3>Nginx Users</h3>
|
||||
<p>If you are using Nginx, you will need to update your server's configuration manually. Please see the documentation, for convenience, an example configuration has been provided with TheTempusProject and can be found in the app/resources directory.</p>
|
||||
<form method="post">
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<div class="text-center">
|
||||
<button class="btn btn-lg btn-primary center-block mb-3" type="submit" name="submit" value="submit">Generate</button><br>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,16 +0,0 @@
|
||||
<div class="context-main-bg my-3 pb-3 rounded col-10 offset-1">
|
||||
{installer-nav}
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-10">
|
||||
<div class="install-terms col-lg-8 mx-auto mt-4">
|
||||
{TERMS}
|
||||
</div>
|
||||
<div class="text-center my-4">
|
||||
<form method="post">
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<button class="btn btn-lg btn-primary center-block mb-3" type="submit" name="submit" value="submit">I Agree</button><br>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,35 +0,0 @@
|
||||
<div class="context-main-bg my-3 pb-3 rounded col-10 offset-1">
|
||||
{installer-nav}
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-10 pt-4">
|
||||
<form method="post">
|
||||
<fieldset>
|
||||
<div class="mb-3 col-md-4 offset-md-4">
|
||||
<label for="newUsername" class="form-label">Username:</label>
|
||||
<input class="form-control" type="text" name="newUsername" id="newUsername" value="">
|
||||
</div>
|
||||
<div class="mb-3 col-md-4 offset-md-4">
|
||||
<label for="userEmail" class="form-label">Email:</label>
|
||||
<input class="form-control" type="email" name="userEmail" id="userEmail" value="">
|
||||
</div>
|
||||
<div class="mb-3 col-md-4 offset-md-4">
|
||||
<label for="userEmail2" class="form-label">Re-enter Email:</label>
|
||||
<input class="form-control" type="email" name="userEmail2" id="userEmail2" value="">
|
||||
</div>
|
||||
<div class="mb-3 col-md-4 offset-md-4">
|
||||
<label for="userPassword" class="form-label">Password:</label>
|
||||
<input class="form-control" type="password" name="userPassword" id="userPassword">
|
||||
</div>
|
||||
<div class="mb-3 col-md-4 offset-md-4">
|
||||
<label for="userPassword2" class="form-label">Re-enter Password:</label>
|
||||
<input class="form-control" type="password" name="userPassword2" id="userPassword2">
|
||||
</div>
|
||||
</fieldset>
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<div class="text-center">
|
||||
<button class="btn btn-lg btn-primary center-block" type="submit" name="submit" value="submit">Complete</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,23 +0,0 @@
|
||||
<div class="context-main-bg my-3 pb-3 rounded col-10 offset-1">
|
||||
{installer-nav}
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-10">
|
||||
<h2 class="mt-4">Requirements</h2>
|
||||
<ul>
|
||||
<li>PHP version greater than 5.6</li>
|
||||
<li>Session storage must be enabled</li>
|
||||
<li>PHP mail must be enabled.</li>
|
||||
<li>Safe mode must be disabled.</li>
|
||||
<li>Rewrite rule must be on</li>
|
||||
<li>file uploads must be on</li>
|
||||
<li>mysql_pdo must be enabled</li>
|
||||
</ul>
|
||||
<div class="text-center">
|
||||
<form method="post">
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<button class="btn btn-lg btn-primary center-block mb-3" type="submit" name="submit" value="submit">Check</button><br>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,17 +0,0 @@
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-10 text-center">
|
||||
<div class="context-main-bg my-3 pb-3 rounded">
|
||||
{installer-nav}
|
||||
<h1 class="mt-5 mb-4">Welcome to The Tempus Project Installer.</h1>
|
||||
<p class="lead p-3">
|
||||
This installer will guide you through the process of installing and configuring The Tempus Project. Do not forget to delete this file once you have completed installation.
|
||||
</p>
|
||||
<form method="post">
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<button class="btn btn-lg btn-primary center-block mb-3" type="submit" name="submit" id="submit" value="submit">Begin Installation</button><br>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
146
app/views/landing.html
Normal file
@ -0,0 +1,146 @@
|
||||
<div class="px-4 py-5 my-5 text-center">
|
||||
<img class="d-block mx-auto mb-4" src="{root_URL}images/logoWhite.png" alt="" width="72" height="57">
|
||||
<h1 class="display-5 fw-bold">The Tempus Project</h1>
|
||||
<div class="col-lg-6 mx-auto">
|
||||
<p class="lead mb-4">
|
||||
{SITENAME} allows you to quickly develop, design, and customize responsive mobile-first web applications.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="b-example-divider"></div>
|
||||
|
||||
<div class="container px-4 py-5">
|
||||
<p class="col-8 offset-2">
|
||||
Utilizing our in-house <a href="/home/libraries" class="text-decoration-none">libraries</a>, {SITENAME} provides a very basic PHP web application utilizing the MVC (Model View Controller) pattern, paired with Bootstrap for a robust front-end experience. {SITENAME} can be deployed on most server architecture in seconds and can be installed and customized within minutes. Paired with Bootstrap, the world's most popular front-end open source toolkit, you have a great platform to build just about anything.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="b-example-divider"></div>
|
||||
|
||||
<div class="container px-4 py-5" id="hanging-icons">
|
||||
<h2 class="pb-2 border-bottom">Includes many systems right oout of the box</h2>
|
||||
<div class="row g-4 py-5 row-cols-1 row-cols-lg-3">
|
||||
<div class="col d-flex align-items-start">
|
||||
<div
|
||||
class="icon-square text-bg-light d-inline-flex align-items-center justify-content-center fs-4 flex-shrink-0 me-3">
|
||||
<i class="fa-solid fa-user"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="fs-2">User Management</h3>
|
||||
<p>From new user registrations to forgotten password recovery and everything in-between, the included authentication and authorization controls can handle all your needs and include groups with highly customizable permissions systems.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex align-items-start">
|
||||
<div
|
||||
class="icon-square text-bg-light d-inline-flex align-items-center justify-content-center fs-4 flex-shrink-0 me-3">
|
||||
<i class="fa-solid fa-screwdriver-wrench"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="fs-2">Administration</h3>
|
||||
<p>
|
||||
Everything from your sitename and timezone to notifications and emails are a breeze with the included Admin panel. Out of the box you will have direct control over most of your application and you can easily expand or add new controls as you need.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex align-items-start">
|
||||
<div
|
||||
class="icon-square text-bg-light d-inline-flex align-items-center justify-content-center fs-4 flex-shrink-0 me-3">
|
||||
<i class="fa-regular fa-folder-open"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="fs-2">Plugins</h3>
|
||||
<p>
|
||||
One of the best features of {SITENAME} is the plugin functionality. Much of the system has been modeled to work as self-contained applications that work together. Many of the features available here are plugins aty their core.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="b-example-divider"></div>
|
||||
|
||||
<div class="container px-4 py-5" id="icon-grid">
|
||||
<h2 class="pb-2 border-bottom">Plugins</h2>
|
||||
<div class="row row-cols-1 row-cols-sm-2 row-cols-md-3 row-cols-lg-4 g-4 py-5">
|
||||
<div class="col d-flex align-items-start">
|
||||
<i class="fa-solid fa-pen-nib fa-3x"></i>
|
||||
<div>
|
||||
<h3 class="fw-bold mb-0 fs-4">Blog</h3>
|
||||
<p>Whether its the companies transparency or your own need to share, our blog plugin makes it simple.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex align-items-start">
|
||||
<i class="fa-solid fa-bug fa-3x"></i>
|
||||
<div>
|
||||
<h3 class="fw-bold mb-0 fs-4">Bug Reports</h3>
|
||||
<p>An unfortunate reality iis that every application has bugs, never leave your users without the ability to report them to you.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex align-items-start">
|
||||
<i class="fa-solid fa-comment fa-3x"></i>
|
||||
<div>
|
||||
<h3 class="fw-bold mb-0 fs-4">Comments</h3>
|
||||
<p>Allowing users the opportunity to share feedback is crucial. Our comments plugin not only integrates with the blog, but many other plugins to enable users to comment on any content you want.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex align-items-start">
|
||||
<i class="fa-solid fa-envelope fa-3x"></i>
|
||||
<div>
|
||||
<h3 class="fw-bold mb-0 fs-4">Contact</h3>
|
||||
<p>A contact form is another simple but essential tool for your business or website.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex align-items-start">
|
||||
<i class="fa-solid fa-file fa-3x"></i>
|
||||
<div>
|
||||
<h3 class="fw-bold mb-0 fs-4">Resume</h3>
|
||||
<p>Whether you're looking for a new gig or just want an easy way for others to see your work, our resume plugin might be the key.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex align-items-start">
|
||||
<i class="fa-solid fa-inbox fa-3x"></i>
|
||||
<div>
|
||||
<h3 class="fw-bold mb-0 fs-4">Subscribe</h3>
|
||||
<p>Building your list should always be a part of your application and services and it made as simple as can be with this plugin.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex align-items-start">
|
||||
<i class="fa-solid fa-list fa-3x"></i>
|
||||
<div>
|
||||
<h3 class="fw-bold mb-0 fs-4">WIP (Work in Progress)</h3>
|
||||
<p>A light-weight and simple plugin that allows you to keep a running list of works in progress to share with site visitors..</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col d-flex align-items-start">
|
||||
<i class="fa-brands fa-stripe fa-3x"></i>
|
||||
<div>
|
||||
<h3 class="fw-bold mb-0 fs-4">Memberships / Payments</h3>
|
||||
<p>Our membership plugin integrates with Stripe to allow incredibly simple membership setup and can be easily expanded to sell any of your products.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="b-example-divider"></div>
|
||||
<!--
|
||||
<h2 class="pb-2 border-bottom py-5">Light / Dark Modes</h2>
|
||||
<div class="d-md-flex flex-md-equal my-md-3 ps-md-3">
|
||||
<div class="text-bg-dark text-white col-6 text-center overflow-hidden">
|
||||
<div class="my-3 py-3">
|
||||
<h2 class="display-5">When you stick with the light</h2>
|
||||
<p class="lead">everything looks great.</p>
|
||||
</div>
|
||||
<div class="bg-light shadow-sm mx-auto" style="width: 80%; height: 300px; border-radius: 21px 21px 0 0;">
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-light text-dark col-6 text-center overflow-hidden">
|
||||
<div class="my-3 py-3">
|
||||
<h2 class="display-5">But when you go to the dark side</h2>
|
||||
<p class="lead">everything is just a bit better.</p>
|
||||
</div>
|
||||
<div class="bg-dark shadow-sm mx-auto" style="width: 80%; height: 300px; border-radius: 21px 21px 0 0;">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
</div>
|
@ -1,18 +1,11 @@
|
||||
<div class="container pt-4 d-none" id="install-prompt">
|
||||
<div class="row">
|
||||
<div class="alert alert-success alert-dismissible w-100 d-none" role="alert" id="chrome-install-message">
|
||||
<div class="alert alert-success alert-dismissible w-100" role="alert">
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
{SITENAME} is now available as a Progressive Web App, click the button to install now.
|
||||
<button class="btn btn-md btn-outline-primary mx-2" id="install-button">Install App</button>
|
||||
</div>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-success alert-dismissible w-100 d-none" role="alert" id="ios-install-message">
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
{SITENAME} is now available as a Progressive-Web-App, tap <img src="/images/share-icon.png" width="20"> and then "Add to Home Screen".
|
||||
</div>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -9,13 +9,13 @@
|
||||
<p class="text-center text-lg-start">
|
||||
At this time, the best recommendation available is to contact us for more information.
|
||||
The site here is actively maintained so feel free to utilize any of our available resources for contact.
|
||||
In addition to the site here, you can contact the lead developer (me) directly through <a href="https://joeykimsey.com" class="text-white text-decoration-none">JoeyKimsey.com</a>.
|
||||
In addition to the site here, you can contact the lead developer (me) directly through <a href="https://joeykimsey.com">JoeyKimsey.com</a>.
|
||||
</p>
|
||||
<p class="text-muted text-center text-lg-start">
|
||||
Right now, this entire system was built and managed by myself. As stated, I have used my own version of this for years, but translating it to a publicly available product is not a 1-to-1 job. There may be bugs or issues encountered while you use the product. I can't guarantee a fix for every need in every case immediately, but I do actively keep track of bugs and work hard to ensure everyone has a great experience using the app.
|
||||
</p>
|
||||
<p class="text-center text-lg-start">
|
||||
If you encounter any bugs, feel free to report them <a href="/bugreport" class="text-white text-decoration-none">here</a>. Likewise, there are forms for feedback, reviews, suggestions, and a general contact form. Thanks for taking the time to check out the product!
|
||||
If you encounter any bugs, feel free to report them <a href="/bugreport" class="text-decoration-none">here</a>. Likewise, there are forms for feedback, reviews, suggestions, and a general contact form. Thanks for taking the time to check out the product!
|
||||
</p>
|
||||
<div class="text-center mt-4 pb-4">
|
||||
{loggedin}
|
||||
|
@ -149,6 +149,14 @@ class TheTempusProject extends Bedrock {
|
||||
'url' => '{ROOT_URL}home/index',
|
||||
'filter' => 'notloggedin',
|
||||
],
|
||||
[
|
||||
'text' => 'Libraries',
|
||||
'url' => '{ROOT_URL}libraries',
|
||||
],
|
||||
[
|
||||
'text' => 'Get Started',
|
||||
'url' => '{ROOT_URL}home/getstarted',
|
||||
],
|
||||
[
|
||||
'text' => 'Admin',
|
||||
'url' => '{ROOT_URL}admin/index',
|
||||
@ -274,14 +282,14 @@ class TheTempusProject extends Bedrock {
|
||||
"logo" => [
|
||||
"type" => "file",
|
||||
"pretty" => "Site Logo (Used mostly in emails)",
|
||||
"default" => "images/logoWhite.png",
|
||||
"value" => "images/logoWhite.png",
|
||||
"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/logoLarge.jpg",
|
||||
"default" => "images/logoLarge.png",
|
||||
"value" => "images/logoLarge.png",
|
||||
],
|
||||
"name" => [
|
||||
"type" => "text",
|
||||
|
@ -25,7 +25,7 @@
|
||||
{
|
||||
"endroid/qr-code": "^6.0",
|
||||
"fortawesome/font-awesome": "4.7",
|
||||
"thetempusproject/bedrock": "1.1.6",
|
||||
"thetempusproject/bedrock": "1.1.5",
|
||||
"thetempusproject/canary": "1.0.9",
|
||||
"thetempusproject/houdini": "2.0.5",
|
||||
"twbs/bootstrap": "5.2.3"
|
||||
|
425
composer.lock
generated
@ -4,151 +4,37 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "10e7ce6b744b46b0c10780dbd7786ecb",
|
||||
"content-hash": "b54d2da34f833481cff28144a669b2aa",
|
||||
"packages": [
|
||||
{
|
||||
"name": "bacon/bacon-qr-code",
|
||||
"version": "v3.0.1",
|
||||
"name": "components/jquery",
|
||||
"version": "1.9.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Bacon/BaconQrCode.git",
|
||||
"reference": "f9cc1f52b5a463062251d666761178dbdb6b544f"
|
||||
"url": "https://github.com/components/jquery.git",
|
||||
"reference": "ae5c0c13cf163b3751ce55f9d9e97c1ba7ff796d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/f9cc1f52b5a463062251d666761178dbdb6b544f",
|
||||
"reference": "f9cc1f52b5a463062251d666761178dbdb6b544f",
|
||||
"url": "https://api.github.com/repos/components/jquery/zipball/ae5c0c13cf163b3751ce55f9d9e97c1ba7ff796d",
|
||||
"reference": "ae5c0c13cf163b3751ce55f9d9e97c1ba7ff796d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"dasprid/enum": "^1.0.3",
|
||||
"ext-iconv": "*",
|
||||
"php": "^8.1"
|
||||
"robloach/component-installer": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"phly/keep-a-changelog": "^2.12",
|
||||
"phpunit/phpunit": "^10.5.11 || 11.0.4",
|
||||
"spatie/phpunit-snapshot-assertions": "^5.1.5",
|
||||
"squizlabs/php_codesniffer": "^3.9"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-imagick": "to generate QR code images"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"BaconQrCode\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-2-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Ben Scholzen 'DASPRiD'",
|
||||
"email": "mail@dasprids.de",
|
||||
"homepage": "https://dasprids.de/",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "BaconQrCode is a QR code generator for PHP.",
|
||||
"homepage": "https://github.com/Bacon/BaconQrCode",
|
||||
"support": {
|
||||
"issues": "https://github.com/Bacon/BaconQrCode/issues",
|
||||
"source": "https://github.com/Bacon/BaconQrCode/tree/v3.0.1"
|
||||
},
|
||||
"time": "2024-10-01T13:55:55+00:00"
|
||||
},
|
||||
{
|
||||
"name": "dasprid/enum",
|
||||
"version": "1.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/DASPRiD/Enum.git",
|
||||
"reference": "8dfd07c6d2cf31c8da90c53b83c026c7696dda90"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/DASPRiD/Enum/zipball/8dfd07c6d2cf31c8da90c53b83c026c7696dda90",
|
||||
"reference": "8dfd07c6d2cf31c8da90c53b83c026c7696dda90",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1 <9.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^7 || ^8 || ^9 || ^10 || ^11",
|
||||
"squizlabs/php_codesniffer": "*"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"DASPRiD\\Enum\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-2-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Ben Scholzen 'DASPRiD'",
|
||||
"email": "mail@dasprids.de",
|
||||
"homepage": "https://dasprids.de/",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "PHP 7.1 enum implementation",
|
||||
"keywords": [
|
||||
"enum",
|
||||
"map"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/DASPRiD/Enum/issues",
|
||||
"source": "https://github.com/DASPRiD/Enum/tree/1.0.6"
|
||||
},
|
||||
"time": "2024-08-09T14:30:48+00:00"
|
||||
},
|
||||
{
|
||||
"name": "endroid/qr-code",
|
||||
"version": "6.0.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/endroid/qr-code.git",
|
||||
"reference": "bdbb06e767efe9abe3c00461662b4059a6cd0b55"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/endroid/qr-code/zipball/bdbb06e767efe9abe3c00461662b4059a6cd0b55",
|
||||
"reference": "bdbb06e767efe9abe3c00461662b4059a6cd0b55",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"bacon/bacon-qr-code": "^3.0",
|
||||
"php": "^8.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"endroid/quality": "dev-main",
|
||||
"ext-gd": "*",
|
||||
"khanamiryan/qrcode-detector-decoder": "^2.0.2",
|
||||
"setasign/fpdf": "^1.8.2"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-gd": "Enables you to write PNG images",
|
||||
"khanamiryan/qrcode-detector-decoder": "Enables you to use the image validator",
|
||||
"roave/security-advisories": "Makes sure package versions with known security issues are not installed",
|
||||
"setasign/fpdf": "Enables you to use the PDF writer"
|
||||
},
|
||||
"type": "library",
|
||||
"type": "component",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "6.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Endroid\\QrCode\\": "src/"
|
||||
"component": {
|
||||
"files": [
|
||||
"jquery.min.js",
|
||||
"jquery-migrate.js",
|
||||
"jquery-migrate.min.js",
|
||||
"jquery.min.map"
|
||||
],
|
||||
"scripts": [
|
||||
"jquery.js"
|
||||
]
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
@ -157,30 +43,20 @@
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jeroen van den Enden",
|
||||
"email": "info@endroid.nl"
|
||||
"name": "John Resig",
|
||||
"email": "jeresig@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "Endroid QR Code",
|
||||
"homepage": "https://github.com/endroid/qr-code",
|
||||
"keywords": [
|
||||
"code",
|
||||
"endroid",
|
||||
"php",
|
||||
"qr",
|
||||
"qrcode"
|
||||
],
|
||||
"description": "jQuery JavaScript Library",
|
||||
"homepage": "http://jquery.com",
|
||||
"support": {
|
||||
"issues": "https://github.com/endroid/qr-code/issues",
|
||||
"source": "https://github.com/endroid/qr-code/tree/6.0.3"
|
||||
"forum": "http://forum.jquery.com",
|
||||
"irc": "irc://irc.freenode.org/jquery",
|
||||
"issues": "http://bugs.jquery.com",
|
||||
"source": "https://github.com/jquery/jquery",
|
||||
"wiki": "http://docs.jquery.com/"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/endroid",
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2024-10-29T19:28:52+00:00"
|
||||
"time": "2014-10-11T11:52:45+00:00"
|
||||
},
|
||||
{
|
||||
"name": "fortawesome/font-awesome",
|
||||
@ -234,19 +110,210 @@
|
||||
},
|
||||
"time": "2016-10-24T15:52:54+00:00"
|
||||
},
|
||||
{
|
||||
"name": "kriswallsmith/assetic",
|
||||
"version": "v1.4.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/kriswallsmith/assetic.git",
|
||||
"reference": "e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1",
|
||||
"reference": "e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.1",
|
||||
"symfony/process": "~2.1|~3.0"
|
||||
},
|
||||
"conflict": {
|
||||
"twig/twig": "<1.27"
|
||||
},
|
||||
"require-dev": {
|
||||
"leafo/lessphp": "^0.3.7",
|
||||
"leafo/scssphp": "~0.1",
|
||||
"meenie/javascript-packer": "^1.1",
|
||||
"mrclay/minify": "<2.3",
|
||||
"natxet/cssmin": "3.0.4",
|
||||
"patchwork/jsqueeze": "~1.0|~2.0",
|
||||
"phpunit/phpunit": "~4.8 || ^5.6",
|
||||
"psr/log": "~1.0",
|
||||
"ptachoire/cssembed": "~1.0",
|
||||
"symfony/phpunit-bridge": "~2.7|~3.0",
|
||||
"twig/twig": "~1.23|~2.0",
|
||||
"yfix/packager": "dev-master"
|
||||
},
|
||||
"suggest": {
|
||||
"leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler",
|
||||
"leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler",
|
||||
"leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin",
|
||||
"patchwork/jsqueeze": "Assetic provides the integration with the JSqueeze JavaScript compressor",
|
||||
"ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris",
|
||||
"twig/twig": "Assetic provides the integration with the Twig templating engine"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.4-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/functions.php"
|
||||
],
|
||||
"psr-0": {
|
||||
"Assetic": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Kris Wallsmith",
|
||||
"email": "kris.wallsmith@gmail.com",
|
||||
"homepage": "http://kriswallsmith.net/"
|
||||
}
|
||||
],
|
||||
"description": "Asset Management for PHP",
|
||||
"homepage": "https://github.com/kriswallsmith/assetic",
|
||||
"keywords": [
|
||||
"assets",
|
||||
"compression",
|
||||
"minification"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/kriswallsmith/assetic/issues",
|
||||
"source": "https://github.com/kriswallsmith/assetic/tree/master"
|
||||
},
|
||||
"time": "2016-11-11T18:43:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "robloach/component-installer",
|
||||
"version": "0.0.12",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/RobLoach/component-installer.git",
|
||||
"reference": "1864f25db21fc173e02a359f646acd596c1b0460"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/RobLoach/component-installer/zipball/1864f25db21fc173e02a359f646acd596c1b0460",
|
||||
"reference": "1864f25db21fc173e02a359f646acd596c1b0460",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"kriswallsmith/assetic": "1.*",
|
||||
"php": ">=5.3.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"composer/composer": "1.*"
|
||||
},
|
||||
"type": "composer-installer",
|
||||
"extra": {
|
||||
"class": "ComponentInstaller\\Installer"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"ComponentInstaller": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Rob Loach",
|
||||
"email": "robloach@gmail.com",
|
||||
"homepage": "http://robloach.net"
|
||||
}
|
||||
],
|
||||
"description": "Allows installation of Components via Composer.",
|
||||
"support": {
|
||||
"issues": "https://github.com/RobLoach/component-installer/issues",
|
||||
"source": "https://github.com/RobLoach/component-installer/tree/master"
|
||||
},
|
||||
"abandoned": "oomphinc/composer-installers-extender",
|
||||
"time": "2013-08-31T23:46:48+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/process",
|
||||
"version": "v3.4.47",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/process.git",
|
||||
"reference": "b8648cf1d5af12a44a51d07ef9bf980921f15fca"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/process/zipball/b8648cf1d5af12a44a51d07ef9bf980921f15fca",
|
||||
"reference": "b8648cf1d5af12a44a51d07ef9bf980921f15fca",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^5.5.9|>=7.0.8"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Component\\Process\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Tests/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony Process Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/process/tree/v3.4.47"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-10-24T10:57:07+00:00"
|
||||
},
|
||||
{
|
||||
"name": "thetempusproject/bedrock",
|
||||
"version": "1.1.6",
|
||||
"version": "1.1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://git.thetempusproject.com/the-tempus-project/bedrock",
|
||||
"reference": "cfa53c9e7058f78559ee8615431645c7eef972f8"
|
||||
"reference": "bcd73d58f9d7df41b5ec0f12871ff15cfcc215ae"
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.1.0",
|
||||
"thetempusproject/canary": "1.0.9",
|
||||
"thetempusproject/hermes": "1.0.5",
|
||||
"thetempusproject/houdini": "2.0.5"
|
||||
"thetempusproject/canary": "1.0.6",
|
||||
"thetempusproject/hermes": "1.0.3",
|
||||
"thetempusproject/houdini": "2.0.2"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -272,22 +339,20 @@
|
||||
}
|
||||
],
|
||||
"description": "Bedrock is intended as the core functionality used by The Tempus Project: a rapid prototyping framework. This library utilizes the MVC architecture in addition to a custom templating engine designed to make building web applications simple.",
|
||||
"homepage": "https://thetempusproject.com/libraries/bedrock",
|
||||
"homepage": "https://git.thetempusproject.com/the-tempus-project/bedrock",
|
||||
"keywords": [
|
||||
"framework",
|
||||
"mvc",
|
||||
"php",
|
||||
"thetempusproject"
|
||||
"mvc"
|
||||
],
|
||||
"time": "2025-02-06T03:02:46+00:00"
|
||||
"time": "2025-01-27T05:07:05+00:00"
|
||||
},
|
||||
{
|
||||
"name": "thetempusproject/canary",
|
||||
"version": "1.0.9",
|
||||
"version": "1.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://git.thetempusproject.com/the-tempus-project/canary",
|
||||
"reference": "77cef522e9919573836901eb82b59b20f453fb61"
|
||||
"reference": "44b2ad688cff933964ec2ff50b408d94c7f51e40"
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.1.0"
|
||||
@ -315,23 +380,22 @@
|
||||
}
|
||||
],
|
||||
"description": "Functionality for tracking, logging, and sending log messages to chrome for debugging.",
|
||||
"homepage": "https://thetempusproject.com/libraries/canary",
|
||||
"homepage": "https://git.thetempusproject.com/the-tempus-project/canary",
|
||||
"keywords": [
|
||||
"debugging",
|
||||
"logging",
|
||||
"php",
|
||||
"thetempusproject",
|
||||
"tools"
|
||||
],
|
||||
"time": "2025-02-04T12:16:29+00:00"
|
||||
"time": "2025-01-22T01:39:34+00:00"
|
||||
},
|
||||
{
|
||||
"name": "thetempusproject/hermes",
|
||||
"version": "1.0.5",
|
||||
"version": "1.0.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://git.thetempusproject.com/the-tempus-project/hermes",
|
||||
"reference": "802581b1d2d70877ccc75d8954b33efcc05d9371"
|
||||
"reference": "4b4e06a98f0f01695bda18de240bb3294d096ef4"
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.1.0"
|
||||
@ -358,29 +422,28 @@
|
||||
"role": "Lead Developer"
|
||||
}
|
||||
],
|
||||
"description": "This library handles redirects, provides a common backbone for routing, and can handle autoloading in cases where composer is unavailable.",
|
||||
"homepage": "https://thetempusproject.com/libraries/hermes",
|
||||
"description": "Php functions that aid in routing and redirecting; requests and responses.",
|
||||
"homepage": "https://git.thetempusproject.com/the-tempus-project/hermes",
|
||||
"keywords": [
|
||||
"autoloader",
|
||||
"php",
|
||||
"routing",
|
||||
"thetempusproject",
|
||||
"tools"
|
||||
],
|
||||
"time": "2025-02-02T23:22:15+00:00"
|
||||
"time": "2025-01-22T01:43:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "thetempusproject/houdini",
|
||||
"version": "2.0.5",
|
||||
"version": "2.0.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://git.thetempusproject.com/the-tempus-project/houdini",
|
||||
"reference": "2c7538471ab1f900048ccdb2c71d6bf2bee975e0"
|
||||
"reference": "fb027a4ebc327e709ad3da29a4cf112894c2b7e6"
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.1.0",
|
||||
"thetempusproject/canary": "1.0.9",
|
||||
"thetempusproject/hermes": "1.0.5"
|
||||
"thetempusproject/canary": "1.0.6",
|
||||
"thetempusproject/hermes": "1.0.3"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -403,15 +466,15 @@
|
||||
"role": "Lead Developer"
|
||||
}
|
||||
],
|
||||
"description": "This library handles creating, managing, and displaying frontend components.",
|
||||
"homepage": "https://thetempusproject.com/libraries/houdini",
|
||||
"description": "Php functions that aid in creating, managing, and displaying frontend components.",
|
||||
"homepage": "https://git.thetempusproject.com/the-tempus-project/houdini",
|
||||
"keywords": [
|
||||
"frontend",
|
||||
"php",
|
||||
"thetempusproject",
|
||||
"tools"
|
||||
],
|
||||
"time": "2025-02-04T12:19:25+00:00"
|
||||
"time": "2025-01-27T05:02:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "twbs/bootstrap",
|
||||
|
@ -1,57 +0,0 @@
|
||||
version: "3.8"
|
||||
|
||||
volumes:
|
||||
db-data:
|
||||
|
||||
services:
|
||||
ttp-database:
|
||||
container_name: TTP-MySQL
|
||||
image: mysql:8.0
|
||||
ports:
|
||||
- ${DOCKER_DB_PORT}:3306
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${DOCKER_DB_PASSWORD}
|
||||
MYSQL_DATABASE: ${DOCKER_DB_DATABASE}
|
||||
MYSQL_USER: ${DOCKER_DB_USERNAME}
|
||||
MYSQL_PASSWORD: ${DOCKER_DB_PASSWORD}
|
||||
volumes:
|
||||
- db-data:/var/lib/mysql
|
||||
healthcheck:
|
||||
test: ["CMD", "mysqladmin" ,"ping"]
|
||||
interval: 5s
|
||||
timeout: 10s
|
||||
retries: 10
|
||||
|
||||
ttp-phpmyadmin:
|
||||
container_name: TTP-PhpMyAdmin
|
||||
image: phpmyadmin:latest
|
||||
ports:
|
||||
- '7000:80'
|
||||
restart: always
|
||||
environment:
|
||||
PMA_HOST: database
|
||||
depends_on:
|
||||
ttp-database:
|
||||
condition: service_healthy
|
||||
|
||||
ttp-nginx:
|
||||
container_name: TTP-Nginx
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./docker/ttp-nginx/Dockerfile
|
||||
target: php-fpm
|
||||
ports:
|
||||
- "8080:80"
|
||||
environment:
|
||||
- APP_ENV=${APP_ENV}
|
||||
|
||||
ttp-apache:
|
||||
container_name: TTP-Apache
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./docker/ttp-apache/Dockerfile
|
||||
target: apache
|
||||
ports:
|
||||
- "8000:80"
|
||||
environment:
|
||||
- APP_ENV=${APP_ENV}
|
@ -1,5 +0,0 @@
|
||||
APP_ENV = "docker"
|
||||
DOCKER_DB_PORT = 3306
|
||||
DOCKER_DB_USERNAME = dbadmin
|
||||
DOCKER_DB_PASSWORD = secret
|
||||
DOCKER_DB_DATABASE = ttp
|
@ -1,13 +0,0 @@
|
||||
FROM php:8-apache as apache
|
||||
ENV COMPOSER_ALLOW_SUPERUSER=1
|
||||
RUN apt-get update -y
|
||||
RUN apt-get install git libzip-dev -y
|
||||
RUN a2enmod ssl && a2enmod rewrite
|
||||
RUN docker-php-ext-install mysqli pdo pdo_mysql zip
|
||||
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
||||
# RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
|
||||
WORKDIR /var/www
|
||||
RUN rm -rf html/
|
||||
RUN composer create-project thetempusproject/thetempusproject html
|
||||
RUN chmod -R 777 html/
|
||||
RUN chown -R www-data:www-data html/
|
@ -1,19 +0,0 @@
|
||||
# TheTempusProject Apache Docker Image
|
||||
|
||||
This image will build an apache webserver off php and use composer to clone the project to create a webserver TTP App.
|
||||
|
||||
## Build the image
|
||||
```
|
||||
docker build -t thetempusproject/ttp-apache:latest .
|
||||
docker build --no-cache -t thetempusproject/ttp-apache:latest .
|
||||
```
|
||||
|
||||
## Set the proper tag for dockerhub (in cases where you need to build your own image)
|
||||
```
|
||||
docker tag ttp-apache:latest thetempusproject/ttp-apache:latest
|
||||
```
|
||||
|
||||
## Run the image
|
||||
```
|
||||
docker run -d -p 80:80 thetempusproject/ttp-apache
|
||||
```
|
@ -1,29 +0,0 @@
|
||||
FROM php:8-fpm as php-fpm
|
||||
|
||||
# Env
|
||||
ENV COMPOSER_ALLOW_SUPERUSER=1
|
||||
|
||||
# Install Packages
|
||||
RUN apt-get update -y
|
||||
RUN apt-get install -y nginx libmariadb-dev git libzip-dev zip unzip supervisor
|
||||
RUN docker-php-ext-install mysqli pdo pdo_mysql zip
|
||||
|
||||
# Install Composer
|
||||
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
||||
|
||||
#Install TTP
|
||||
WORKDIR /var/www
|
||||
RUN rm -rf html/
|
||||
RUN composer create-project thetempusproject/thetempusproject html
|
||||
RUN chmod -R 777 html/
|
||||
RUN chown -R www-data:www-data html/
|
||||
|
||||
# Copy Nginx configuration file
|
||||
RUN cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.old
|
||||
COPY ./docker/ttp-nginx/nginx.conf /etc/nginx/nginx.conf
|
||||
|
||||
# Copy Supervisor configuration file
|
||||
COPY ./docker/ttp-nginx/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
||||
|
||||
# Start Supervisor, which will start both Nginx and PHP-FPM
|
||||
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
|
@ -1,19 +0,0 @@
|
||||
# TheTempusProject Nginx Docker Image
|
||||
|
||||
This image will build an nginx webserver off php and use composer to clone the project to create a webserver TTP App.
|
||||
|
||||
## Build the image
|
||||
```
|
||||
docker build -t thetempusproject/ttp-nginx:latest .
|
||||
docker build --no-cache -t thetempusproject/ttp-nginx:latest .
|
||||
```
|
||||
|
||||
## Set the proper tag for dockerhub (in cases where you need to build your own image)
|
||||
```
|
||||
docker tag thetempusproject/ttp-nginx:latest <username>/ttp-nginx:latest
|
||||
```
|
||||
|
||||
## Run the image
|
||||
```
|
||||
docker run -d -p 8000:80 thetempusproject/ttp-nginx
|
||||
```
|
@ -1,27 +0,0 @@
|
||||
|
||||
location /api/ {
|
||||
if ($request_method = 'OPTIONS') {
|
||||
add_header 'Access-Control-Allow-Origin' '*';
|
||||
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
|
||||
add_header 'Access-Control-Allow-Headers' 'Authorization,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
|
||||
add_header 'Access-Control-Request-Headers' 'Authorization,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always;
|
||||
add_header 'Access-Control-Max-Age' 1728000;
|
||||
add_header 'Content-Type' 'text/plain; charset=utf-8';
|
||||
add_header 'Content-Length' 0;
|
||||
return 204;
|
||||
}
|
||||
if ($request_method = 'POST') {
|
||||
add_header 'Access-Control-Allow-Origin' '*' always;
|
||||
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
|
||||
add_header 'Access-Control-Allow-Headers' 'Authorization,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always;
|
||||
add_header 'Access-Control-Request-Headers' 'Authorization,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always;
|
||||
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always;
|
||||
}
|
||||
if ($request_method = 'GET') {
|
||||
add_header 'Access-Control-Allow-Origin' '*' always;
|
||||
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
|
||||
add_header 'Access-Control-Allow-Headers' 'Authorization,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always;
|
||||
add_header 'Access-Control-Request-Headers' 'Authorization,DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always;
|
||||
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always;
|
||||
}
|
||||
}
|
@ -1,90 +0,0 @@
|
||||
user www-data;
|
||||
worker_processes auto;
|
||||
pid /run/nginx.pid;
|
||||
error_log /var/log/nginx/error.log;
|
||||
include /etc/nginx/modules-enabled/*.conf;
|
||||
|
||||
events {
|
||||
worker_connections 768;
|
||||
}
|
||||
|
||||
http {
|
||||
tcp_nopush on;
|
||||
types_hash_max_size 2048;
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
|
||||
ssl_prefer_server_ciphers on;
|
||||
|
||||
access_log /var/log/nginx/access.log;
|
||||
|
||||
gzip on;
|
||||
server {
|
||||
listen 80 default_server;
|
||||
index index.php;
|
||||
server_name TheTempusProject;
|
||||
root /var/www/html;
|
||||
charset utf-8;
|
||||
sendfile on;
|
||||
client_max_body_size 100m;
|
||||
|
||||
location /js/ {
|
||||
access_log off;
|
||||
log_not_found off;
|
||||
try_files $uri /index.php?error=js404&file=$uri;
|
||||
}
|
||||
|
||||
location /css/ {
|
||||
try_files $uri /index.php?error=css404&file=$uri;
|
||||
}
|
||||
|
||||
location /images/ {
|
||||
try_files $uri /index.php?error=image404&url=$uri;
|
||||
}
|
||||
|
||||
location /uploads/ {
|
||||
try_files $uri /index.php?error=upload404&url=$uri;
|
||||
}
|
||||
|
||||
location /errors/ {
|
||||
try_files $uri /index.php?error=$uri;
|
||||
}
|
||||
|
||||
location = /favicon.ico {
|
||||
access_log off;
|
||||
log_not_found off;
|
||||
rewrite ^(.+)$ /images/favicon.ico break;
|
||||
}
|
||||
|
||||
location = /robots.txt {
|
||||
allow all;
|
||||
access_log off;
|
||||
log_not_found off;
|
||||
rewrite ^(.+)$ /bin/robots.txt break;
|
||||
}
|
||||
|
||||
location ~* \.(?:js|css|png|jpg|gif|ico)$ {
|
||||
access_log off;
|
||||
log_not_found off;
|
||||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
fastcgi_pass 127.0.0.1:9000;
|
||||
include snippets/fastcgi-php.conf;
|
||||
include fastcgi_params;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_intercept_errors off;
|
||||
fastcgi_buffer_size 16k;
|
||||
fastcgi_buffers 4 16k;
|
||||
fastcgi_connect_timeout 60s;
|
||||
fastcgi_read_timeout 60s;
|
||||
fastcgi_send_timeout 60s;
|
||||
}
|
||||
|
||||
location / {
|
||||
rewrite ^/(.+)$ /index.php?url=$1&$args last;
|
||||
}
|
||||
}
|
||||
|
||||
include /etc/nginx/conf.d/*.conf;
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
[supervisord]
|
||||
nodaemon=true
|
||||
|
||||
[program:php-fpm]
|
||||
command=/usr/local/sbin/php-fpm
|
||||
|
||||
[program:nginx]
|
||||
command=/usr/sbin/nginx -g 'daemon off;'
|
@ -1,76 +0,0 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
ACCESS_TOKEN=""
|
||||
CURL_FLAGS=""
|
||||
GITLAB_API="${CI_API_V4_URL}"
|
||||
MERGE_IF_SUCCESSFUL="true"
|
||||
MR_BRANCH=""
|
||||
MR_TITLE="Auto-Merge-$(date '+%Y%m%d%H%M%S')"
|
||||
PROJECT_ID="${CI_PROJECT_ID}"
|
||||
SECONDS_BETWEEN_POOLING=10
|
||||
TARGET_BRANCH="main"
|
||||
eval "${@}"
|
||||
|
||||
if [ "${MR_BRANCH}" = '' ]; then
|
||||
echo "[ERROR] No MR branch was given."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "${ACCESS_TOKEN}" = '' ]; then
|
||||
echo "[ERROR] No access token was given."
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if [ "${MERGE_IF_SUCCESSFUL}" = "1" ] || [ "${MERGE_IF_SUCCESSFUL}" = "true" ]; then
|
||||
MERGE_IF_SUCCESSFUL="true"
|
||||
else
|
||||
MERGE_IF_SUCCESSFUL="false"
|
||||
fi
|
||||
|
||||
MR_JSON=$(curl ${CURL_FLAGS} \
|
||||
--request POST \
|
||||
--header "PRIVATE-TOKEN: ${ACCESS_TOKEN}" \
|
||||
--data-urlencode "source_branch=${MR_BRANCH}" \
|
||||
--data-urlencode "target_branch=${TARGET_BRANCH}" \
|
||||
--data-urlencode "title=${MR_TITLE}" \
|
||||
--data-urlencode "remove_source_branch=true" \
|
||||
"${GITLAB_API}/projects/${PROJECT_ID}/merge_requests"
|
||||
)
|
||||
CURL_EXIT_CODE=$?
|
||||
|
||||
if [ "${CURL_EXIT_CODE}" != "0" ]; then
|
||||
echo "[ERROR] Please check the returned response for details."
|
||||
echo "[INFO] CURL_EXIT_CODE=${CURL_EXIT_CODE}"
|
||||
echo "[INFO] MR_JSON=${MR_JSON}"
|
||||
exit ${CURL_EXIT_CODE}
|
||||
fi
|
||||
|
||||
echo "[SUCCESS] Merge request created successfully!"
|
||||
MR_URL=$(echo "${MR_JSON}" | jq '.web_url')
|
||||
echo "[INFO] Merge request URL: ${MR_URL}"
|
||||
|
||||
if [ "${MERGE_IF_SUCCESSFUL}" = "true" ]; then
|
||||
MR_ID=$(echo "${MR_JSON}" | jq '.iid')
|
||||
|
||||
echo "[INFO] Will merge MR ID ${MR_ID} (branch '${MR_BRANCH}' into '${TARGET_BRANCH}'), if and when the pipeline passes."
|
||||
echo "[INFO] Waiting for pipeline to finish..."
|
||||
while true; do
|
||||
PIPELINE_STATUS=$(curl ${CURL_FLAGS} --silent --header "PRIVATE-TOKEN: ${ACCESS_TOKEN}" \
|
||||
"${GITLAB_API}/projects/${PROJECT_ID}/merge_requests/${MR_ID}/pipelines" | jq '.[0].status')
|
||||
|
||||
if [ "${PIPELINE_STATUS}" = "\"success\"" ]; then
|
||||
echo "[INFO] Pipeline succeeded!"
|
||||
# Merge the merge request
|
||||
curl ${CURL_FLAGS} --request PUT --header "PRIVATE-TOKEN: ${ACCESS_TOKEN}" \
|
||||
"${GITLAB_API}/projects/${PROJECT_ID}/merge_requests/${MR_ID}/merge"
|
||||
echo "[SUCCESS] Merge request merged successfully!"
|
||||
exit 0
|
||||
elif [ "${PIPELINE_STATUS}" = "\"failed\"" ]; then
|
||||
echo "[ERROR] Pipeline failed!"
|
||||
exit 1
|
||||
else
|
||||
echo "[INFO] Pipeline still running..."
|
||||
sleep ${SECONDS_BETWEEN_POOLING}
|
||||
fi
|
||||
done
|
||||
fi
|
@ -1,46 +0,0 @@
|
||||
.update_PHP_deps:
|
||||
variables:
|
||||
TIMEZONE: "Europe/Amsterdam" # For the system in general
|
||||
DATE_TIMEZONE: ${TIMEZONE} # For PHP
|
||||
|
||||
GIT_DEPTH: 1
|
||||
GITLAB_API_URL: ${CI_API_V4_URL}
|
||||
TARGET_BRANCH: ${CI_COMMIT_REF_NAME} # This is the branch chosen in the `Pipeline Schedule`
|
||||
TARGET_REMOTE: "https://${GITLAB_USERNAME}:${GITLAB_ACCESS_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}.git"
|
||||
|
||||
# These could/should be overridden in an extending job:
|
||||
UPDATE_BRANCH_PREFIX: "update_PHP_deps_" # Used for the update branch name, it will be followed by the datetime
|
||||
GIT_USER: "" # Used for the update commit
|
||||
GIT_EMAIL: "" # Used for the update commit
|
||||
GITLAB_USERNAME: "" # Used for pushing the new branch and opening the MR
|
||||
GITLAB_ACCESS_TOKEN: "" # Used for pushing the new branch and opening the MR
|
||||
MERGE_IF_SUCCESSFUL: "false" # Set to true, to merge automatically if the pipeline succeeds
|
||||
SECONDS_BETWEEN_POOLING: 10 # Nbr of seconds between checking if the MR pipeline is successful, so then it will merge
|
||||
JOB_GIT_FLAGS: ""
|
||||
JOB_CURL_FLAGS: ""
|
||||
JOB_COMPOSER_FLAGS: ""
|
||||
interruptible: true # allows to stop the job if a newer pipeline starts, saving resources and allowing new jobs to start because job concurrency is limited
|
||||
stage: "update_PHP_deps"
|
||||
rules:
|
||||
- if: '$SCHEDULED_PIPELINE == $CI_JOB_NAME'
|
||||
script: # `git`, `jq` and `curl` are needed, so if they are not already installed, they should be installed in the `before_script` of the extending job
|
||||
- git ${JOB_GIT_FLAGS} fetch origin ${TARGET_BRANCH}
|
||||
- git ${JOB_GIT_FLAGS} checkout ${TARGET_BRANCH}
|
||||
- export DATE_TIME="$(date '+%Y%m%d%H%M%S')"
|
||||
- export MR_BRANCH="${UPDATE_BRANCH_PREFIX}${DATE_TIME}"
|
||||
- git ${JOB_GIT_FLAGS} checkout -b "${MR_BRANCH}"
|
||||
- composer update ${JOB_COMPOSER_FLAGS}
|
||||
- if [ "$(git diff)" == "" ]; then echo "No updates needed!"; exit 0; fi
|
||||
- export TITLE="Update PHP dependencies [${DATE_TIME}]"
|
||||
- git ${JOB_GIT_FLAGS} commit -a -m "${TITLE}"
|
||||
- git ${JOB_GIT_FLAGS} push "${TARGET_REMOTE}" "${MR_BRANCH}"
|
||||
- |
|
||||
vendor/hgraca/ci-cd-composer-update/src/GitLab/auto_merge_mr.sh \
|
||||
MERGE_IF_SUCCESSFUL="${MERGE_IF_SUCCESSFUL}" \
|
||||
MR_BRANCH="${MR_BRANCH}" \
|
||||
MR_TITLE="\"${TITLE}\"" \
|
||||
TARGET_BRANCH="${TARGET_BRANCH}" \
|
||||
ACCESS_TOKEN="${GITLAB_ACCESS_TOKEN}" \
|
||||
SECONDS_BETWEEN_POOLING="${SECONDS_BETWEEN_POOLING}" \
|
||||
GITLAB_API="${GITLAB_API_URL}" \
|
||||
CURL_FLAGS="${JOB_CURL_FLAGS}"
|
Before Width: | Height: | Size: 28 KiB |
BIN
images/bedrock.jpg
Normal file
After Width: | Height: | Size: 7.8 KiB |
BIN
images/canary.jpg
Normal file
After Width: | Height: | Size: 8.2 KiB |
BIN
images/darkMobile.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
images/hermes.jpg
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
images/houdini.jpg
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
images/icon-mask-dark.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
images/icon-mask-white.png
Normal file
After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 54 KiB |
BIN
images/lightMobile.png
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
images/logo192.png
Normal file
After Width: | Height: | Size: 20 KiB |