Merge branch 'main' into allthebookmarks-com
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@ -64,3 +64,4 @@ vendor/canary/logs/*
|
|||||||
components/*
|
components/*
|
||||||
mailhog.log
|
mailhog.log
|
||||||
uploads/*
|
uploads/*
|
||||||
|
images/qr-codes/
|
||||||
|
@ -76,25 +76,6 @@ class Images extends AdminController {
|
|||||||
Views::view( 'admin.images.upload' );
|
Views::view( 'admin.images.upload' );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private function getFolderObject( $folder, $subdirs = '' ) {
|
private function getFolderObject( $folder, $subdirs = '' ) {
|
||||||
$names = explode( DIRECTORY_SEPARATOR, $folder );
|
$names = explode( DIRECTORY_SEPARATOR, $folder );
|
||||||
$folderName = array_pop( $names );
|
$folderName = array_pop( $names );
|
||||||
@ -155,28 +136,6 @@ class Images extends AdminController {
|
|||||||
return $dirs;
|
return $dirs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
self::$title = 'Admin - Images';
|
self::$title = 'Admin - Images';
|
||||||
@ -204,25 +163,6 @@ class Images extends AdminController {
|
|||||||
Debug::error( 'There was an error with your upload.');
|
Debug::error( 'There was an error with your upload.');
|
||||||
Issues::add( 'error', [ 'There was an error with your upload.' => Check::userErrors() ] );
|
Issues::add( 'error', [ 'There was an error with your upload.' => Check::userErrors() ] );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// if ( self::$token->create(
|
|
||||||
// Input::post( 'name' ),
|
|
||||||
// Input::post( 'notes' ),
|
|
||||||
// Input::post( 'token_type' )
|
|
||||||
// ) ) {
|
|
||||||
// Session::flash( 'success', 'Token Created' );
|
|
||||||
// Redirect::to( 'admin/images' );
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
Views::view( 'admin.images.create' );
|
Views::view( 'admin.images.create' );
|
||||||
}
|
}
|
||||||
@ -261,7 +201,6 @@ class Images extends AdminController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function rename() {
|
public function rename() {
|
||||||
|
|
||||||
if ( ! Input::exists( 'fileLocation' ) ) {
|
if ( ! Input::exists( 'fileLocation' ) ) {
|
||||||
Session::flash( 'warning', 'Unknown image.' );
|
Session::flash( 'warning', 'Unknown image.' );
|
||||||
Redirect::to( 'admin/images' );
|
Redirect::to( 'admin/images' );
|
||||||
@ -274,7 +213,6 @@ class Images extends AdminController {
|
|||||||
Issues::add( 'error', [ 'There was an error renaming the image.' => Check::userErrors() ] );
|
Issues::add( 'error', [ 'There was an error renaming the image.' => Check::userErrors() ] );
|
||||||
} else {
|
} else {
|
||||||
$result = $this->renameFile( Input::post( 'filelocation' ), Input::post( 'newname' ) );
|
$result = $this->renameFile( Input::post( 'filelocation' ), Input::post( 'newname' ) );
|
||||||
|
|
||||||
if ( ! empty( $result ) ) {
|
if ( ! empty( $result ) ) {
|
||||||
Session::flash( 'success', 'Image has been renamed.' );
|
Session::flash( 'success', 'Image has been renamed.' );
|
||||||
Redirect::to( 'admin/images' );
|
Redirect::to( 'admin/images' );
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 117 KiB |
@ -8,6 +8,63 @@
|
|||||||
* @link https://TheTempusProject.com
|
* @link https://TheTempusProject.com
|
||||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||||
*/
|
*/
|
||||||
|
let deferredPrompt;
|
||||||
|
const installPrompt = document.getElementById("install-prompt");
|
||||||
|
const installButton = document.getElementById("install-button");
|
||||||
|
const dismissButton = document.querySelector("#install-prompt .btn-close");
|
||||||
|
|
||||||
|
// Check if the user previously dismissed the prompt
|
||||||
|
if (!localStorage.getItem("pwaInstallDismissed")) {
|
||||||
|
window.addEventListener("beforeinstallprompt", (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
deferredPrompt = event;
|
||||||
|
installPrompt.classList.remove("d-none");
|
||||||
|
installPrompt.classList.add("d-block"); // Show the prompt
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle Install Button Click
|
||||||
|
if ( installButton ) {
|
||||||
|
installButton.addEventListener("click", async () => {
|
||||||
|
if (deferredPrompt) {
|
||||||
|
deferredPrompt.prompt();
|
||||||
|
const { outcome } = await deferredPrompt.userChoice;
|
||||||
|
|
||||||
|
if (outcome === "dismissed") {
|
||||||
|
setInstallDismissed(); // Store that the user dismissed the prompt
|
||||||
|
}
|
||||||
|
|
||||||
|
deferredPrompt = null; // Reset prompt
|
||||||
|
installPrompt.classList.remove("d-block");
|
||||||
|
installPrompt.classList.add("d-none");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle Close Button Click
|
||||||
|
if ( dismissButton ) {
|
||||||
|
dismissButton.addEventListener("click", () => {
|
||||||
|
setInstallDismissed(); // Store that the user dismissed the prompt
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to remember user choice for 7 days
|
||||||
|
function setInstallDismissed() {
|
||||||
|
localStorage.setItem("pwaInstallDismissed", Date.now() + 7 * 24 * 60 * 60 * 1000);
|
||||||
|
installPrompt.classList.remove("d-block"); // Hide the prompt
|
||||||
|
installPrompt.classList.add("d-none");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the 7-day period has passed
|
||||||
|
if (localStorage.getItem("pwaInstallDismissed")) {
|
||||||
|
const dismissUntil = parseInt(localStorage.getItem("pwaInstallDismissed"), 10);
|
||||||
|
if (Date.now() < dismissUntil) {
|
||||||
|
//
|
||||||
|
} else {
|
||||||
|
localStorage.removeItem("pwaInstallDismissed"); // Reset after 7 days
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Automatically selects/de-selects all check boxes associated with that field
|
* Automatically selects/de-selects all check boxes associated with that field
|
||||||
**/
|
**/
|
||||||
|
@ -19,6 +19,15 @@ use TheTempusProject\Houdini\Classes\Components;
|
|||||||
use TheTempusProject\Bedrock\Classes\Config;
|
use TheTempusProject\Bedrock\Classes\Config;
|
||||||
use TheTempusProject\Bedrock\Functions\Input;
|
use TheTempusProject\Bedrock\Functions\Input;
|
||||||
use TheTempusProject\TheTempusProject as App;
|
use TheTempusProject\TheTempusProject as App;
|
||||||
|
use Endroid\QrCode\Builder\Builder;
|
||||||
|
use Endroid\QrCode\Encoding\Encoding;
|
||||||
|
use Endroid\QrCode\ErrorCorrectionLevel;
|
||||||
|
use Endroid\QrCode\Label\LabelAlignment;
|
||||||
|
use Endroid\QrCode\Label\Font\OpenSans;
|
||||||
|
use Endroid\QrCode\RoundBlockSizeMode;
|
||||||
|
use Endroid\QrCode\Writer\PngWriter;
|
||||||
|
use TheTempusProject\Hermes\Functions\Route as Routes;
|
||||||
|
use TheTempusProject\Canary\Bin\Canary as Debug;
|
||||||
|
|
||||||
class DefaultLoader extends Loader {
|
class DefaultLoader extends Loader {
|
||||||
private static $loaded = false;
|
private static $loaded = false;
|
||||||
@ -41,12 +50,61 @@ class DefaultLoader extends Loader {
|
|||||||
}
|
}
|
||||||
$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/main.js"></script>' );
|
||||||
Components::setIfNull( 'LOGO', Config::getValue( 'main/logo' ) ?? TP_DEFAULT_LOGO );
|
Components::setIfNull( 'LOGO', Config::getValue( 'main/logo' ) ?? TP_DEFAULT_LOGO );
|
||||||
|
|
||||||
|
if ( ! empty( Config::getValue( 'share/enabled' ) ) ) {
|
||||||
|
$currentUrl = Routes::getAddress() . Input::get( 'url' );
|
||||||
|
$folder = IMAGE_DIRECTORY . 'qr-codes' . DIRECTORY_SEPARATOR ;
|
||||||
|
$filename = md5( $currentUrl ) . '.png';
|
||||||
|
|
||||||
|
if ( ! file_exists( $folder ) ) {
|
||||||
|
Debug::Info( 'Creating Directory because it does not exist' );
|
||||||
|
mkdir( $folder, 0777, true );
|
||||||
|
}
|
||||||
|
if ( ! empty( Config::getValue( 'share/qr' ) ) ) {
|
||||||
|
if ( ! file_exists( $folder . $filename ) ) {
|
||||||
|
Debug::Info( 'Creating qr-image because it does not exist' );
|
||||||
|
$builder = new Builder(
|
||||||
|
writer: new PngWriter(),
|
||||||
|
writerOptions: [],
|
||||||
|
validateResult: false,
|
||||||
|
data: Routes::getAddress() . Input::get( 'url' ),
|
||||||
|
encoding: new Encoding('UTF-8'),
|
||||||
|
errorCorrectionLevel: ErrorCorrectionLevel::High,
|
||||||
|
size: 200,
|
||||||
|
margin: 10,
|
||||||
|
roundBlockSizeMode: RoundBlockSizeMode::Margin,
|
||||||
|
logoPath: APP_ROOT_DIRECTORY . DIRECTORY_SEPARATOR . Config::getValue( 'main/logo' ),
|
||||||
|
logoResizeToWidth: 30,
|
||||||
|
logoPunchoutBackground: true,
|
||||||
|
labelText: Config::getValue( 'main/name' ),
|
||||||
|
labelFont: new OpenSans(14),
|
||||||
|
labelAlignment: LabelAlignment::Center
|
||||||
|
);
|
||||||
|
$result = $builder->build();
|
||||||
|
$result->saveToFile( $folder . $filename );
|
||||||
|
}
|
||||||
|
Components::set( 'QR_CODE','<img src="{ROOT_URL}images/qr-codes/' . $filename . '" alt="QR Code" class="img-fluid mb-2">' );
|
||||||
|
} else {
|
||||||
|
Components::setIfNull( 'QR_CODE', '' );
|
||||||
|
}
|
||||||
|
Components::setIfNull( 'SHARE_IMAGE', Views::simpleView( 'footer.share' ) );
|
||||||
|
} else {
|
||||||
|
Components::setIfNull( 'SHARE_IMAGE', '' );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! empty( Config::getValue( 'main/pwa' ) ) ) {
|
||||||
|
Components::setIfNull( 'PWA', Views::simpleView( 'pwa') );
|
||||||
|
} else {
|
||||||
|
Components::setIfNull( 'PWA', '' );
|
||||||
|
}
|
||||||
|
|
||||||
Components::setIfNull( 'COPY', Views::simpleView( 'footer.copy') );
|
Components::setIfNull( 'COPY', Views::simpleView( 'footer.copy') );
|
||||||
Components::setIfNull( 'SOCIAL', Views::simpleView( 'footer.social') );
|
Components::setIfNull( 'SOCIAL', Views::simpleView( 'footer.social') );
|
||||||
Components::prepend( 'FOOTER_LEFT', Views::simpleView( 'footer.left', Navigation::getMenuLinks( App::CONTACT_FOOTER_MENU_NAME ) ) );
|
Components::prepend( 'FOOTER_LEFT', Views::simpleView( 'footer.left', Navigation::getMenuLinks( App::CONTACT_FOOTER_MENU_NAME ) ) );
|
||||||
Components::prepend( 'FOOTER_CENTER', Views::simpleView( 'footer.center', Navigation::getMenuLinks( App::INFO_FOOTER_MENU_NAME ) ) );
|
Components::prepend( 'FOOTER_CENTER', Views::simpleView( 'footer.center', Navigation::getMenuLinks( App::INFO_FOOTER_MENU_NAME ) ) );
|
||||||
Components::prepend( 'FOOTER_RIGHT', Views::simpleView( 'footer.right') );
|
Components::prepend( 'FOOTER_RIGHT', Views::simpleView( 'footer.right') );
|
||||||
Components::setIfNull( 'FOOT', Views::simpleView( 'footer.container') );
|
Components::setIfNull( 'FOOT', Views::simpleView( 'footer.container') );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Top-Nav
|
* Top-Nav
|
||||||
*/
|
*/
|
||||||
|
@ -91,6 +91,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/ISSUES}
|
{/ISSUES}
|
||||||
|
{PWA}
|
||||||
<!-- Main Page Content -->
|
<!-- Main Page Content -->
|
||||||
{CONTENT}
|
{CONTENT}
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
<div class="col-12 col-sm-6 col-md-3 col-lg-2 mb-3 text-center">
|
<div class="col-12 col-sm-6 col-md-3 col-lg-2 mb-3 text-center">
|
||||||
<h5 class="atb-green">Dark Mode</h5>
|
{SHARE_IMAGE}
|
||||||
|
<h5>Dark Mode</h5>
|
||||||
<div class="material-switch px-4 mt-2">
|
<div class="material-switch px-4 mt-2">
|
||||||
<input name="dark-mode-toggle" type="checkbox" id="dark-mode-toggle" class="form-check-input">
|
<input name="dark-mode-toggle" type="checkbox" id="dark-mode-toggle" class="form-check-input">
|
||||||
<label for="dark-mode-toggle" class="label-default"></label>
|
<label for="dark-mode-toggle" class="label-default"></label>
|
||||||
|
17
app/views/footer/share.html
Normal file
17
app/views/footer/share.html
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<div class="text-center mb-3">
|
||||||
|
<h5 class="mb-3">Share</h5>
|
||||||
|
<div class="px-4 mt-2">
|
||||||
|
<!-- Share Button (visible only on medium+ screens) -->
|
||||||
|
<button type="button" class="btn btn-outline-primary"
|
||||||
|
data-bs-toggle="popover" data-bs-html="true" title="Share" data-bs-placement="top"
|
||||||
|
data-bs-content='
|
||||||
|
{QR_CODE}
|
||||||
|
<div class="d-flex justify-content-between">
|
||||||
|
<a href="https://www.reddit.com/submit?type=LINK&url={CURRENT_URL_SAFE}" target="_blank" class="mx-1 btn btn-sm btn-outline-danger"><i class="fa-brands fa-fw fa-reddit"></i></a>
|
||||||
|
<a href="https://www.facebook.com/sharer/sharer.php?u={CURRENT_URL_SAFE}" target="_blank" class="mx-1 btn btn-sm btn-outline-primary"><i class="fa-brands fa-fw fa-facebook"></i></a>
|
||||||
|
<a href="https://twitter.com/intent/tweet?url={CURRENT_URL_SAFE}" target="_blank" class="mx-1 btn btn-sm btn-outline-info"><i class="fa-brands fa-fw fa-x"></i></a>
|
||||||
|
</div>'>
|
||||||
|
Share
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
11
app/views/pwa.html
Normal file
11
app/views/pwa.html
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<div class="container pt-4 d-none" id="install-prompt">
|
||||||
|
<div class="row">
|
||||||
|
<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>
|
||||||
|
</div>
|
@ -317,7 +317,13 @@ class TheTempusProject extends Bedrock {
|
|||||||
"pretty" => "Maximum Login session length. (in seconds)",
|
"pretty" => "Maximum Login session length. (in seconds)",
|
||||||
"default" => 604800, // 60 * 60 * 24 * 7
|
"default" => 604800, // 60 * 60 * 24 * 7
|
||||||
"value" => 604800, // 60 * 60 * 24 * 7
|
"value" => 604800, // 60 * 60 * 24 * 7
|
||||||
]
|
],
|
||||||
|
"pwa" => [
|
||||||
|
"type" => "radio",
|
||||||
|
"pretty" => "Enable PWA banner for installs",
|
||||||
|
"default" => false,
|
||||||
|
"value" => false,
|
||||||
|
],
|
||||||
],
|
],
|
||||||
"maintenance" => [
|
"maintenance" => [
|
||||||
"enabled" => [
|
"enabled" => [
|
||||||
@ -333,6 +339,20 @@ class TheTempusProject extends Bedrock {
|
|||||||
"value" => "Currently the site is undergoing maintenance. Only administrators will be able to sign in.",
|
"value" => "Currently the site is undergoing maintenance. Only administrators will be able to sign in.",
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"share" => [
|
||||||
|
"enabled" => [
|
||||||
|
"type" => "radio",
|
||||||
|
"pretty" => "Enables the share popover.",
|
||||||
|
"default" => false,
|
||||||
|
"value" => false,
|
||||||
|
],
|
||||||
|
"qr"=> [
|
||||||
|
"type" => "radio",
|
||||||
|
"pretty" => "Enables a custom qr-code in the share popover.",
|
||||||
|
"default" => false,
|
||||||
|
"value" => false,
|
||||||
|
]
|
||||||
|
],
|
||||||
"uploads" => [
|
"uploads" => [
|
||||||
"images" => [
|
"images" => [
|
||||||
"type" => "radio",
|
"type" => "radio",
|
||||||
|
@ -23,8 +23,9 @@
|
|||||||
],
|
],
|
||||||
"require":
|
"require":
|
||||||
{
|
{
|
||||||
|
"endroid/qr-code": "^6.0",
|
||||||
"fortawesome/font-awesome": "4.7",
|
"fortawesome/font-awesome": "4.7",
|
||||||
"thetempusproject/bedrock": "1.1.5",
|
"thetempusproject/bedrock": "1.1.6",
|
||||||
"thetempusproject/canary": "1.0.9",
|
"thetempusproject/canary": "1.0.9",
|
||||||
"thetempusproject/houdini": "2.0.5",
|
"thetempusproject/houdini": "2.0.5",
|
||||||
"twbs/bootstrap": "5.2.3"
|
"twbs/bootstrap": "5.2.3"
|
||||||
|
438
composer.lock
generated
438
composer.lock
generated
@ -4,37 +4,151 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "63640223834a7eeb9b4a211cd45cc6df",
|
"content-hash": "10e7ce6b744b46b0c10780dbd7786ecb",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "components/jquery",
|
"name": "bacon/bacon-qr-code",
|
||||||
"version": "1.9.1",
|
"version": "v3.0.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/components/jquery.git",
|
"url": "https://github.com/Bacon/BaconQrCode.git",
|
||||||
"reference": "ae5c0c13cf163b3751ce55f9d9e97c1ba7ff796d"
|
"reference": "f9cc1f52b5a463062251d666761178dbdb6b544f"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/components/jquery/zipball/ae5c0c13cf163b3751ce55f9d9e97c1ba7ff796d",
|
"url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/f9cc1f52b5a463062251d666761178dbdb6b544f",
|
||||||
"reference": "ae5c0c13cf163b3751ce55f9d9e97c1ba7ff796d",
|
"reference": "f9cc1f52b5a463062251d666761178dbdb6b544f",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"robloach/component-installer": "*"
|
"dasprid/enum": "^1.0.3",
|
||||||
|
"ext-iconv": "*",
|
||||||
|
"php": "^8.1"
|
||||||
},
|
},
|
||||||
"type": "component",
|
"require-dev": {
|
||||||
"extra": {
|
"phly/keep-a-changelog": "^2.12",
|
||||||
"component": {
|
"phpunit/phpunit": "^10.5.11 || 11.0.4",
|
||||||
"scripts": [
|
"spatie/phpunit-snapshot-assertions": "^5.1.5",
|
||||||
"jquery.js"
|
"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"
|
||||||
],
|
],
|
||||||
"files": [
|
"authors": [
|
||||||
"jquery.min.js",
|
{
|
||||||
"jquery-migrate.js",
|
"name": "Ben Scholzen 'DASPRiD'",
|
||||||
"jquery-migrate.min.js",
|
"email": "mail@dasprids.de",
|
||||||
"jquery.min.map"
|
"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",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-main": "6.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Endroid\\QrCode\\": "src/"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
@ -43,20 +157,30 @@
|
|||||||
],
|
],
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "John Resig",
|
"name": "Jeroen van den Enden",
|
||||||
"email": "jeresig@gmail.com"
|
"email": "info@endroid.nl"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "jQuery JavaScript Library",
|
"description": "Endroid QR Code",
|
||||||
"homepage": "http://jquery.com",
|
"homepage": "https://github.com/endroid/qr-code",
|
||||||
|
"keywords": [
|
||||||
|
"code",
|
||||||
|
"endroid",
|
||||||
|
"php",
|
||||||
|
"qr",
|
||||||
|
"qrcode"
|
||||||
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"forum": "http://forum.jquery.com",
|
"issues": "https://github.com/endroid/qr-code/issues",
|
||||||
"irc": "irc://irc.freenode.org/jquery",
|
"source": "https://github.com/endroid/qr-code/tree/6.0.3"
|
||||||
"issues": "http://bugs.jquery.com",
|
|
||||||
"source": "https://github.com/jquery/jquery",
|
|
||||||
"wiki": "http://docs.jquery.com/"
|
|
||||||
},
|
},
|
||||||
"time": "2014-10-11T11:52:45+00:00"
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/endroid",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2024-10-29T19:28:52+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "fortawesome/font-awesome",
|
"name": "fortawesome/font-awesome",
|
||||||
@ -110,263 +234,13 @@
|
|||||||
},
|
},
|
||||||
"time": "2016-10-24T15:52:54+00:00"
|
"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": "stripe/stripe-php",
|
|
||||||
"version": "v16.3.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/stripe/stripe-php.git",
|
|
||||||
"reference": "48af6bc64ca8157b3fdce100e856069963bac466"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/stripe/stripe-php/zipball/48af6bc64ca8157b3fdce100e856069963bac466",
|
|
||||||
"reference": "48af6bc64ca8157b3fdce100e856069963bac466",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"ext-curl": "*",
|
|
||||||
"ext-json": "*",
|
|
||||||
"ext-mbstring": "*",
|
|
||||||
"php": ">=5.6.0"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"friendsofphp/php-cs-fixer": "3.5.0",
|
|
||||||
"phpstan/phpstan": "^1.2",
|
|
||||||
"phpunit/phpunit": "^5.7 || ^9.0"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "2.0-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Stripe\\": "lib/"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Stripe and contributors",
|
|
||||||
"homepage": "https://github.com/stripe/stripe-php/contributors"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Stripe PHP Library",
|
|
||||||
"homepage": "https://stripe.com/",
|
|
||||||
"keywords": [
|
|
||||||
"api",
|
|
||||||
"payment processing",
|
|
||||||
"stripe"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/stripe/stripe-php/issues",
|
|
||||||
"source": "https://github.com/stripe/stripe-php/tree/v16.3.0"
|
|
||||||
},
|
|
||||||
"time": "2024-11-20T23:30:16+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",
|
"name": "thetempusproject/bedrock",
|
||||||
"version": "1.1.5",
|
"version": "1.1.6",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.thetempusproject.com/the-tempus-project/bedrock",
|
"url": "https://git.thetempusproject.com/the-tempus-project/bedrock",
|
||||||
"reference": "39d350df061b4c69266bbbe152976cf7254e4c08"
|
"reference": "cfa53c9e7058f78559ee8615431645c7eef972f8"
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=8.1.0",
|
"php": ">=8.1.0",
|
||||||
@ -403,7 +277,7 @@
|
|||||||
"framework",
|
"framework",
|
||||||
"mvc"
|
"mvc"
|
||||||
],
|
],
|
||||||
"time": "2025-02-04T12:20:56+00:00"
|
"time": "2025-02-06T03:02:46+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "thetempusproject/canary",
|
"name": "thetempusproject/canary",
|
||||||
|
BIN
images/icon-maskWhite.png
Normal file
BIN
images/icon-maskWhite.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 42 KiB |
BIN
images/logoWhite512.png
Normal file
BIN
images/logoWhite512.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 60 KiB |
@ -7,6 +7,9 @@
|
|||||||
"background_color": "#1e1e1e",
|
"background_color": "#1e1e1e",
|
||||||
"theme_color": "#85bd3e",
|
"theme_color": "#85bd3e",
|
||||||
"icons": [
|
"icons": [
|
||||||
|
{ "src": "/images/icon-192.png", "type": "image/png", "sizes": "192x192" },
|
||||||
|
{ "src": "/images/icon-512.png", "type": "image/png", "sizes": "512x512" },
|
||||||
|
{ "src": "/images/icon-mask.png", "type": "image/png", "sizes": "512x512", "purpose": "maskable" }
|
||||||
],
|
],
|
||||||
"screenshots": [
|
"screenshots": [
|
||||||
{
|
{
|
||||||
@ -33,8 +36,5 @@
|
|||||||
"sizes": "478x609",
|
"sizes": "478x609",
|
||||||
"form_factor": "narrow"
|
"form_factor": "narrow"
|
||||||
}
|
}
|
||||||
{ "src": "/images/icon-192.png", "type": "image/png", "sizes": "192x192" },
|
|
||||||
{ "src": "/images/icon-512.png", "type": "image/png", "sizes": "512x512" },
|
|
||||||
{ "src": "/images/icon-mask.png", "type": "image/png", "sizes": "512x512", "purpose": "maskable" }
|
|
||||||
]
|
]
|
||||||
}
|
}
|
Reference in New Issue
Block a user