diff --git a/.ddev/.gitignore b/.ddev/.gitignore new file mode 100644 index 000000000..da703d3a3 --- /dev/null +++ b/.ddev/.gitignore @@ -0,0 +1,26 @@ +# DDEV-generated files — do not commit +.dbimageBuild/ +.webimageBuild/ +.ddev-docker-compose-base.yaml +.ddev-docker-compose-full.yaml +.global_commands/ +.homeadditions/ +.start-synced +addon-metadata/ +apache/ +commands/ +db-build/ +db_snapshots/ +homeadditions/ +mutagen/ +mysql/ +nginx_full/ +php/ +providers/ +share-providers/ +traefik/ +web-build/ +web-entrypoint.d/ +xhprof/ +config.local.yaml +composer.lock diff --git a/.ddev/config.yaml b/.ddev/config.yaml new file mode 100644 index 000000000..b9a9eae2b --- /dev/null +++ b/.ddev/config.yaml @@ -0,0 +1,17 @@ +name: extensionbuilder +type: typo3 +docroot: .devbox/public +php_version: "8.3" +webserver_type: nginx-fpm +xdebug_enabled: false +database: + type: mariadb + version: "11.8" +composer_root: .devbox +use_dns_when_possible: true +web_environment: + - TYPO3_CONTEXT=Development +hooks: + post-start: + - exec: mkdir -p /var/www/html/.devbox/packages && ln -sfn /var/www/html /var/www/html/.devbox/packages/extension_builder + - exec: /var/www/html/.devbox/bin/typo3 database:updateschema 2>/dev/null || true diff --git a/.devbox/.ddev/commands/web/cron b/.devbox/.ddev/commands/web/cron deleted file mode 100755 index 47e954b0a..000000000 --- a/.devbox/.ddev/commands/web/cron +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash - -## Description: Run typo3 scheduler:run on every minute -## Usage: cron -## Example: "ddev cron" - -while true -do - sleep 60 - /var/www/html/bin/typo3 scheduler:run -done diff --git a/.devbox/.ddev/config.yaml b/.devbox/.ddev/config.yaml deleted file mode 100644 index 269fa49d0..000000000 --- a/.devbox/.ddev/config.yaml +++ /dev/null @@ -1,29 +0,0 @@ -name: extensionbuilder-devbox -type: typo3 -docroot: public -php_version: "8.0" -webserver_type: nginx-fpm -router_http_port: "80" -router_https_port: "443" -xdebug_enabled: false -additional_hostnames: [] -additional_fqdns: [] -mariadb_version: "10.5" -mysql_version: "" -nfs_mount_enabled: false -mutagen_enabled: true -hooks: - post-start: - - exec: echo '*/1 * * * * root TYPO3_CONTEXT=Development /usr/bin/php /var/www/html/bin/typo3 - scheduler:run' | sudo tee -a /etc/cron.d/typo3 - - exec: sudo chmod 0600 /etc/cron.d/typo3 && sudo service cron start - - exec: composer install -d /var/www/html - # Import and upgrade Database - - exec: /var/www/html/build-files/import-if-empty.sh - - exec: /var/www/html/bin/typo3cms database:updateschema -omit_containers: [dba, ddev-ssh-agent] -webimage_extra_packages: [cron] -use_dns_when_possible: true -timezone: Europe/Berlin -composer_version: "" -web_environment: [] diff --git a/.devbox/.ddev/docker-compose.environment.yaml b/.devbox/.ddev/docker-compose.environment.yaml deleted file mode 100644 index 8a0a5f7e5..000000000 --- a/.devbox/.ddev/docker-compose.environment.yaml +++ /dev/null @@ -1,6 +0,0 @@ -version: '3.6' - -services: - web: - environment: - - TYPO3_CONTEXT=Development \ No newline at end of file diff --git a/.devbox/.ddev/docker-compose.volume.yaml b/.devbox/.ddev/docker-compose.volume.yaml deleted file mode 100644 index 69d561832..000000000 --- a/.devbox/.ddev/docker-compose.volume.yaml +++ /dev/null @@ -1,6 +0,0 @@ -version: '3.6' - -services: - web: - volumes: - - "../../:/var/www/html/packages/extension_builder" diff --git a/.devbox/.ddev/mysql/strict-mode.cnf b/.devbox/.ddev/mysql/strict-mode.cnf deleted file mode 100644 index e69de29bb..000000000 diff --git a/.devbox/build-files/AdditionalConfiguration.ddev.php b/.devbox/build-files/AdditionalConfiguration.ddev.php deleted file mode 100644 index 40ed27f25..000000000 --- a/.devbox/build-files/AdditionalConfiguration.ddev.php +++ /dev/null @@ -1,22 +0,0 @@ - /dev/null; then - echo 'Importing Database from file' - gzip -dc /var/www/html/build-files/db.sql.gz | mysql db -fi - diff --git a/.devbox/composer.json b/.devbox/composer.json index 17f14207a..83a1aefe2 100644 --- a/.devbox/composer.json +++ b/.devbox/composer.json @@ -7,38 +7,65 @@ "issues": "https://github.com/FriendsOfTYPO3/extension_builder/issues" }, "license": "GPL-3.0", - "authors": [ - { - "name": "Philipp Kuhlmay", - "email": "extensionbuilder@treupo.de", - "role": "Developer" - } - ], - "require": { - "typo3/minimal": "^11.5", - "typo3/cms-introduction": "~4.0", - "typo3/cms-belog": "^10.4 || ^11.5", - "bk2k/bootstrap-package": "^12", - "helhum/typo3-console": "*", - "friendsoftypo3/extension-builder": "*@dev" - }, "repositories": [ { "type": "path", - "url": "./packages" + "url": "packages/*", + "options": { + "symlink": true + } } ], + "require": { + "typo3/cms-adminpanel": "^13.4", + "typo3/cms-backend": "^13.4", + "typo3/cms-belog": "^13.4", + "typo3/cms-beuser": "^13.4", + "typo3/cms-core": "^13.4", + "typo3/cms-dashboard": "^13.4", + "typo3/cms-extbase": "^13.4", + "typo3/cms-extensionmanager": "^13.4", + "typo3/cms-felogin": "^13.4", + "typo3/cms-filelist": "^13.4", + "typo3/cms-filemetadata": "^13.4", + "typo3/cms-fluid": "^13.4", + "typo3/cms-fluid-styled-content": "^13.4", + "typo3/cms-form": "^13.4", + "typo3/cms-frontend": "^13.4", + "typo3/cms-impexp": "^13.4", + "typo3/cms-info": "^13.4", + "typo3/cms-install": "^13.4", + "typo3/cms-lowlevel": "^13.4", + "typo3/cms-recycler": "^13.4", + "typo3/cms-redirects": "^13.4", + "typo3/cms-reports": "^13.4", + "typo3/cms-rte-ckeditor": "^13.4", + "typo3/cms-scheduler": "^13.4", + "typo3/cms-seo": "^13.4", + "typo3/cms-setup": "^13.4", + "typo3/cms-t3editor": "^13.4", + "typo3/cms-tstemplate": "^13.4", + "typo3/cms-viewpage": "^13.4", + "typo3/minimal": "^13", + "friendsoftypo3/extension-builder": "dev-master" + }, + "require-dev": { + "typo3/cms-styleguide": "^13.0" + }, "config": { "vendor-dir": "vendor", "bin-dir": "bin", "allow-plugins": { "typo3/cms-composer-installers": true, "typo3/class-alias-loader": true + }, + "audit": { + "abandoned": "ignore", + "block-insecure": false } }, "extra": { "typo3/cms": { - "cms-package-dir": "{$vendor-dir}/typo3/cms", "web-dir": "public" } } diff --git a/.devbox/config/sites/introduction/config.yaml b/.devbox/config/sites/introduction/config.yaml deleted file mode 100644 index 332627aa2..000000000 --- a/.devbox/config/sites/introduction/config.yaml +++ /dev/null @@ -1,49 +0,0 @@ -base: / -errorHandling: - - - errorCode: 404 - errorHandler: Page - errorContentSource: 't3://page?uid=5' -languages: - - - title: English - enabled: true - languageId: 0 - base: / - typo3Language: default - locale: en_US.UTF-8 - iso-639-1: en - navigationTitle: English - hreflang: en-US - direction: '' - flag: us - - - title: Dansk - enabled: true - languageId: 1 - base: /da/ - typo3Language: da - locale: da_DK.UTF-8 - iso-639-1: da - navigationTitle: Dansk - hreflang: da-DK - direction: '' - fallbackType: fallback - fallbacks: '' - flag: dk - - - title: German - enabled: true - languageId: 2 - base: /de/ - typo3Language: de - locale: de_DE.UTF-8 - iso-639-1: de - navigationTitle: Deutsch - hreflang: de-DE - direction: '' - fallbackType: fallback - fallbacks: '1,0' - flag: de -rootPageId: 1 -websiteTitle: 'TYPO3 Introduction Package' diff --git a/.devbox/config/sites/main/config.yaml b/.devbox/config/sites/main/config.yaml new file mode 100644 index 000000000..b0c0e82fb --- /dev/null +++ b/.devbox/config/sites/main/config.yaml @@ -0,0 +1,14 @@ +base: 'https://extensionbuilder.ddev.site/' +languages: + - + title: English + enabled: true + languageId: 0 + base: / + locale: en_US.UTF-8 + navigationTitle: English + flag: us + hreflang: en-US + websiteTitle: '' +rootPageId: 1 +websiteTitle: 'ExtensionBuilder Devbox' diff --git a/.devbox/config/system/settings.php b/.devbox/config/system/settings.php new file mode 100644 index 000000000..992696419 --- /dev/null +++ b/.devbox/config/system/settings.php @@ -0,0 +1,179 @@ + [ + 'debug' => false, + 'installToolPassword' => '$argon2i$v=19$m=65536,t=16,p=1$RVROeGc0R21iU2M4UC43Wg$gEQqOxR8Y3Pa4ds9xRZY0dLpI0Mbu3EWA61b+9wzBW0', + 'loginRateLimit' => 0, + 'passwordHashing' => [ + 'className' => 'TYPO3\\CMS\\Core\\Crypto\\PasswordHashing\\Argon2iPasswordHash', + 'options' => [], + ], + ], + 'DB' => [ + 'Connections' => [ + 'Default' => [ + 'charset' => 'utf8mb4', + 'dbname' => 'db', + 'driver' => 'mysqli', + 'host' => 'db', + 'password' => 'db', + 'port' => 3306, + 'tableoptions' => [ + 'charset' => 'utf8mb4', + 'collate' => 'utf8mb4_unicode_ci', + ], + 'user' => 'db', + ], + ], + ], + 'EXTENSIONS' => [ + 'backend' => [ + 'backendFavicon' => '', + 'backendLogo' => '', + 'loginBackgroundImage' => '', + 'loginFootnote' => '', + 'loginHighlightColor' => '', + 'loginLogo' => '', + 'loginLogoAlt' => '', + ], + 'extension_builder' => [ + 'backupDir' => 'var/tx_extensionbuilder/backups', + 'backupExtension' => '1', + 'enableRoundtrip' => '1', + ], + 'extensionmanager' => [ + 'automaticInstallation' => '1', + 'offlineMode' => '0', + ], + 'redirects' => [ + 'showCheckIntegrityInfoInReports' => '1', + 'showCheckIntegrityInfoInReportsSeconds' => '86400', + ], + 'scheduler' => [ + 'maxLifetime' => '1440', + ], + 'styleguide' => [ + 'boolean_1' => '0', + 'boolean_2' => '1', + 'boolean_3' => '', + 'boolean_4' => '0', + 'color_1' => 'black', + 'color_2' => '#000000', + 'color_3' => '000000', + 'color_4' => '', + 'compat_default_1' => 'value', + 'compat_default_2' => '', + 'compat_input_1' => 'value', + 'compat_input_2' => '', + 'int_1' => '1', + 'int_2' => '', + 'int_3' => '-100', + 'int_4' => '2', + 'intplus_1' => '1', + 'intplus_2' => '', + 'intplus_3' => '2', + 'nested' => [ + 'input_1' => 'aDefault', + 'input_2' => '', + ], + 'offset_1' => 'x,y', + 'offset_2' => 'x', + 'offset_3' => ',y', + 'offset_4' => '', + 'options_1' => 'default', + 'options_2' => 'option_2', + 'options_3' => '', + 'predefined' => [ + 'boolean_1' => '1', + 'int_1' => '42', + ], + 'small_1' => 'value', + 'small_2' => '', + 'string_1' => 'value', + 'string_2' => '', + 'user_1' => '0', + 'wrap_1' => 'value', + 'wrap_2' => '', + 'zeroorder_input_1' => 'value', + 'zeroorder_input_2' => '', + 'zeroorder_input_3' => '', + ], + ], + 'FE' => [ + 'cacheHash' => [ + 'enforceValidation' => true, + ], + 'debug' => false, + 'disableNoCacheParameter' => true, + 'passwordHashing' => [ + 'className' => 'TYPO3\\CMS\\Core\\Crypto\\PasswordHashing\\Argon2iPasswordHash', + 'options' => [], + ], + ], + 'GFX' => [ + 'processor' => 'GraphicsMagick', + 'processor_effects' => false, + 'processor_enabled' => true, + 'processor_path' => '/usr/bin/', + ], + 'LOG' => [ + 'TYPO3' => [ + 'CMS' => [ + 'deprecations' => [ + 'writerConfiguration' => [ + 'notice' => [ + 'TYPO3\CMS\Core\Log\Writer\FileWriter' => [ + 'disabled' => true, + ], + ], + ], + ], + ], + ], + ], + 'MAIL' => [ + 'transport' => 'sendmail', + 'transport_sendmail_command' => '/usr/local/bin/mailpit sendmail -t --smtp-addr 127.0.0.1:1025', + ], + 'SYS' => [ + 'UTF8filesystem' => true, + 'caching' => [ + 'cacheConfigurations' => [ + 'hash' => [ + 'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\Typo3DatabaseBackend', + ], + 'imagesizes' => [ + 'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\Typo3DatabaseBackend', + 'options' => [ + 'compression' => true, + ], + ], + 'pages' => [ + 'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\Typo3DatabaseBackend', + 'options' => [ + 'compression' => true, + ], + ], + 'rootline' => [ + 'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\Typo3DatabaseBackend', + 'options' => [ + 'compression' => true, + ], + ], + ], + ], + 'devIPmask' => '', + 'displayErrors' => 0, + 'encryptionKey' => 'a6ce4db53bfc96e540abf8a057e3af08ae9256d7f90772ae41effc9c1a725ff0d76c597681ba69e426307b6e859af69f', + 'exceptionalErrors' => 4096, + 'features' => [ + 'security.backend.enforceContentSecurityPolicy' => true, + 'security.system.enforceAllowedFileExtensions' => true, + ], + 'sitename' => 'ExtensionBuilder Devbox', + 'systemMaintainers' => [ + 1, + ], + 'trustedHostsPattern' => '.*', + ], +]; diff --git a/.gitignore b/.gitignore index af4afc8ce..2551fbedc 100644 --- a/.gitignore +++ b/.gitignore @@ -12,27 +12,24 @@ sass-lint.html /Documentation-GENERATED-temp # Devbox -.devbox/.ddev/config.local.yaml .devbox/bin -.devbox/var -.devbox/vendor +.devbox/var/ +.devbox/vendor/ +.devbox/packages/ .devbox/public/index.php -.devbox/public/fileadmin/_processed_ -.devbox/public/fileadmin/_temp_ -.devbox/public/typo3 -.devbox/public/typo3conf/ext -.devbox/public/typo3conf/PackageStates.php -.devbox/public/typo3temp -.devbox/.ddev/.global_commands/ -.devbox/.ddev/.homeadditions/ -.devbox/.ddev/apache/ -.devbox/.ddev/nginx_full/ -.devbox/.ddev/providers/ -.devbox/.ddev/xhprof/ -.devbox/.ddev/composer.lock +.devbox/public/_assets +.devbox/public/fileadmin/ +.devbox/public/uploads/ +.devbox/public/typo3/ +.devbox/public/typo3conf/ +.devbox/public/typo3temp/ +.devbox/composer.lock + +# DDEV (repo root) - generated files handled via .ddev/.gitignore .claude .firecrawl tickets +CLAUDE.md .env @@ -48,3 +45,5 @@ test-results/ .playwright-cli .playwright-screenshots docs/superpowers + +