From 54d2ce0507d3f35667da1ece1440b83c9a158be9 Mon Sep 17 00:00:00 2001 From: David Molineus Date: Wed, 25 Sep 2024 10:29:58 +0200 Subject: [PATCH] Make it a bundle --- .composer-require-checker.json | 10 + .editorconfig | 14 + .gitattributes | 17 + .github/workflows/diagnostics.yml | 76 ++++ .gitignore | 20 +- .phpcq.lock | 1 + .phpcq.yaml.dist | 84 ++++ companion.json | 35 ++ composer.json | 106 +++-- contao-module/config/autoload.ini | 19 - contao-module/config/config.php | 3 - phpcs.xml.dist | 30 ++ psalm.xml | 6 + src/ContaoManager/Plugin.php | 23 + .../HofffContaoIconFontExtension.php | 20 + src/EventListener/InsertTagsListener.php | 425 ++++++++++++++++++ src/HofffContaoIconFontBundle.php | 11 + src/InsertTags.php | 212 --------- src/Resources/config/services.xml | 11 + 19 files changed, 838 insertions(+), 285 deletions(-) create mode 100644 .composer-require-checker.json create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .github/workflows/diagnostics.yml create mode 100644 .phpcq.lock create mode 100644 .phpcq.yaml.dist create mode 100644 companion.json delete mode 100644 contao-module/config/autoload.ini delete mode 100644 contao-module/config/config.php create mode 100644 phpcs.xml.dist create mode 100644 psalm.xml create mode 100644 src/ContaoManager/Plugin.php create mode 100644 src/DependencyInjection/HofffContaoIconFontExtension.php create mode 100644 src/EventListener/InsertTagsListener.php create mode 100644 src/HofffContaoIconFontBundle.php delete mode 100644 src/InsertTags.php create mode 100644 src/Resources/config/services.xml diff --git a/.composer-require-checker.json b/.composer-require-checker.json new file mode 100644 index 0000000..c11ac16 --- /dev/null +++ b/.composer-require-checker.json @@ -0,0 +1,10 @@ +{ + "symbol-whitelist": [ + "null", "true", "false", + "static", "self", "parent", + "array", "string", "int", "float", "bool", "iterable", "callable", "void", "object", + "Contao\\ManagerPlugin\\Bundle\\BundlePluginInterface", + "Contao\\ManagerPlugin\\Bundle\\Parser\\ParserInterface", + "Contao\\ManagerPlugin\\Bundle\\Config\\BundleConfig" + ] +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..37096d0 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true + +[{*.(xlf,xml,html5,twig,json,js,vue}] +indent_style = space +indent_size = 2 + +[*.php] +indent_style = space +indent_size = 4 +max_line_length = 120 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..4c95bff --- /dev/null +++ b/.gitattributes @@ -0,0 +1,17 @@ +# Auto detect text files and perform LF normalization +* text-auto + +# Configuration +.editorconfig export-ignore +.gitattributes export-ignore +.gitignore export-ignore +.phpcq.lock export-ignore +.phpcq.yaml.dist export-ignore +companion.json export-ignore +composer.lock -diff +phpcs.xml.dist export-ignore +psalm.xml export-ignore +rector.php export-ignore + +# PHP files +*.php text eol=lf diff=php diff --git a/.github/workflows/diagnostics.yml b/.github/workflows/diagnostics.yml new file mode 100644 index 0000000..2321a8d --- /dev/null +++ b/.github/workflows/diagnostics.yml @@ -0,0 +1,76 @@ +name: Code Quality Diagnostics + +on: + pull_request: + push: + branches: + - master + - develop + +jobs: + build: + runs-on: ubuntu-latest + + name: PHP ${{ matrix.php }} + + strategy: + fail-fast: false + matrix: + include: + - php: 8.2 + phpcq_install: 'update' + - php: 8.3 + phpcq_install: 'update' + + steps: + - name: Pull source + uses: actions/checkout@v4 + + - name: Setup PHP with PECL extension + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + + - name: Cache composer cache directory + uses: actions/cache@v1 + env: + cache-name: composer-cache-dir-${{ matrix.php }} + with: + path: ~/.cache/composer + key: ${{ runner.os }}-build-${{ env.cache-name }} + + - name: Cache vendor directory + uses: actions/cache@v3 + env: + cache-name: vendor-${{ matrix.php }} + with: + path: vendor + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + + - name: Cache phpcq directory + uses: actions/cache@v3 + env: + cache-name: phpcq-${{ matrix.php }} + with: + path: .phpcq + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/.phpcq.lock') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + + - name: Install composer dependencies + run: composer install + + - name: Install phpcq toolchain + run: ./vendor/bin/phpcq ${{ matrix.phpcq_install }} -v + + - name: Run tests + run: ./vendor/bin/phpcq run -v -o github-action -o default --threshold=info + + - name: Upload build directory to artifact + uses: actions/upload-artifact@v4 + if: ${{ success() }} || ${{ failure() }} + with: + name: phpcq-builds-php-${{ matrix.php }} + path: .phpcq/build/ diff --git a/.gitignore b/.gitignore index 0a8dbf1..d9af09f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,11 @@ -/* -!/.gitignore -!/.gitattributes -!/contao-module/ -!/dev/ -!/src/ -!/CHANGELOG.md -!/README.md -!/composer.json +# Companion +/.env.companion + +# Composer +/composer.lock +/vendor + +# PHPCQ +/.phpcq +/.phpcq.yaml +/.phpcs-cache diff --git a/.phpcq.lock b/.phpcq.lock new file mode 100644 index 0000000..0cd3c59 --- /dev/null +++ b/.phpcq.lock @@ -0,0 +1 @@ +{"plugins":{"composer-normalize":{"api-version":"1.0.0","version":"1.1.1.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/composer-normalize/composer-normalize-1.1.1.0.php","signature":null,"requirements":{"php":{"php":"^7.3 || ^8.0","ext-json":"*"},"tool":{"composer-normalize":"^2.1"}},"checksum":{"type":"sha-512","value":"d9abda440b85d501c58abf9c81bf76f417594b397129215ffa8b777e9bb5e5eda37d7661d661db3c8d11c24f20345bc6fbe56f013b3b9435d459d2b94f086e0f"},"tools":{"composer-normalize":{"version":"2.43.0","url":"https://github.com/ergebnis/composer-normalize/releases/download/2.43.0/composer-normalize.phar","requirements":{"php":{"php":"~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0","ext-json":"*"}},"checksum":null,"signature":"https://github.com/ergebnis/composer-normalize/releases/download/2.43.0/composer-normalize.phar.asc"}},"composerLock":null},"composer-require-checker":{"api-version":"1.0.0","version":"1.1.1.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/composer-require-checker/composer-require-checker-1.1.1.0.php","signature":null,"requirements":{"php":{"php":"^7.4 || ^8.0"},"tool":{"composer-require-checker":"^3.8 || ^4.0"}},"checksum":{"type":"sha-512","value":"d5415bddfe024c5749d894034583882aee4e5c3e1087815d9fdd81cb5e71630f631a0e35de0ff84b97fbbf738c16ece5f83bd8c00695913eb846aa6f04577dc2"},"tools":{"composer-require-checker":{"version":"4.12.0","url":"https://github.com/maglnet/ComposerRequireChecker/releases/download/4.12.0/composer-require-checker.phar","requirements":{"php":{"php":"~8.2.0 || ~8.3.0 || ~8.4.0","ext-phar":"*"}},"checksum":null,"signature":"https://github.com/maglnet/ComposerRequireChecker/releases/download/4.12.0/composer-require-checker.phar.asc"}},"composerLock":null},"phpcpd":{"api-version":"1.0.0","version":"1.1.1.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/phpcpd/phpcpd-1.1.1.0.php","signature":null,"requirements":{"php":{"php":"^7.3 || ^8.0","ext-dom":"*"},"tool":{"phpcpd":"^6.0"}},"checksum":{"type":"sha-512","value":"1189ce0bf3fade4cb4241f1d96f915ef8fc7651f4450dc79fdf464ee3d6be3009316f0d423ce2d4af9d76ad50807b7fdf4d77bfa6d9ee2c91d6eda32ea214433"},"tools":{"phpcpd":{"version":"6.0.3","url":"https://phar.phpunit.de/phpcpd-6.0.3.phar","requirements":{"php":{"php":">=7.3","ext-dom":"*"}},"checksum":{"type":"sha-256","value":"2cbaea7cfda1bb4299d863eb075e977c3f49055dd16d88529fae5150d48a84cb"},"signature":"https://phar.phpunit.de/phpcpd-6.0.3.phar.asc"}},"composerLock":null},"phploc":{"api-version":"1.0.0","version":"1.0.0.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/phploc/phploc-1.0.0.0.php","signature":null,"requirements":{"php":{"php":"^7.3 || ^8.0","ext-dom":"*","ext-json":"*"},"tool":{"phploc":"^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0"}},"checksum":{"type":"sha-512","value":"f67b02d494796adf553cb3dd13ec06c1cb8e53c799954061749424251379541637538199afb3afa3c7a01cabd1cb6f1c53eb621f015dff9644c6c7cbf10c56d1"},"tools":{"phploc":{"version":"7.0.2","url":"https://phar.phpunit.de/phploc-7.0.2.phar","requirements":{"php":{"php":">=7.3","ext-dom":"*","ext-json":"*"}},"checksum":{"type":"sha-256","value":"3d59778ec86faf25fd00e3a329b2f9ad4a3c751ca91601ea7dab70f887b0bf46"},"signature":"https://phar.phpunit.de/phploc-7.0.2.phar.asc"}},"composerLock":null},"phpmd":{"api-version":"1.0.0","version":"1.0.2.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/phpmd/phpmd-1.0.2.0.php","signature":null,"requirements":{"php":{"php":"^7.3 || ^8.0","ext-dom":"*"},"tool":{"phpmd":"^2.6.1"}},"checksum":{"type":"sha-512","value":"f22280a6dec8dbdd2ec1d83b294f23237fe32c34f4a298e52038e0a7a0074d541635b2b488b1a6098a42d8418a6cd8eb804406ea82b91e362be2b5d11a0915b0"},"tools":{"phpmd":{"version":"2.15.0","url":"https://github.com/phpmd/phpmd/releases/download/2.15.0/phpmd.phar","requirements":{"php":{"php":">=5.3.9","ext-xml":"*"}},"checksum":null,"signature":"https://github.com/phpmd/phpmd/releases/download/2.15.0/phpmd.phar.asc"}},"composerLock":null},"psalm":{"api-version":"1.0.0","version":"1.2.0.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/psalm/psalm-1.2.0.0.php","signature":null,"requirements":{"php":{"php":"^7.4 || ^8.0","ext-dom":"*"},"tool":{"psalm":"^3.0 || ^4.0 || ^5.0"}},"checksum":{"type":"sha-512","value":"4a550c9226d7bca582d7c10bd87cce01190c96398936b1613421640c83df62ed1c6e0d44c1b39635414ea8cf4a892a6458d27590793238add24e7cb5547e6ffd"},"tools":{"psalm":{"version":"5.26.1","url":"https://github.com/vimeo/psalm/releases/download/5.26.1/psalm.phar","requirements":{"php":{"php":"^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0","ext-SimpleXML":"*","ext-ctype":"*","ext-dom":"*","ext-json":"*","ext-libxml":"*","ext-mbstring":"*","ext-tokenizer":"*"}},"checksum":null,"signature":"https://github.com/vimeo/psalm/releases/download/5.26.1/psalm.phar.asc"}},"composerLock":null},"rector":{"api-version":"1.0.0","version":"1.0.0.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/rector/rector-1.0.0.0.php","signature":null,"requirements":{"php":{"php":"^8.1","ext-json":"*","ext-pcre":"*"},"composer":{"rector/rector":"^1.0"}},"checksum":{"type":"sha-512","value":"c387c8001855475f410a816b5d361631ba4eba5a369323e7d3114f8d0ddbbf5b10e549c22d04ee2981729268816430ab6eaeb862d747881a8c279faddc346239"},"tools":{},"composerLock":"{\n \"_readme\": [\n \"This file locks the dependencies of your project to a known state\",\n \"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies\",\n \"This file is @generated automatically\"\n ],\n \"content-hash\": \"f7c6abe4d39de378351466d6abd0a4b8\",\n \"packages\": [\n {\n \"name\": \"phpstan/phpstan\",\n \"version\": \"1.12.4\",\n \"source\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/phpstan/phpstan.git\",\n \"reference\": \"ffa517cb918591b93acc9b95c0bebdcd0e4538bd\"\n },\n \"dist\": {\n \"type\": \"zip\",\n \"url\": \"https://api.github.com/repos/phpstan/phpstan/zipball/ffa517cb918591b93acc9b95c0bebdcd0e4538bd\",\n \"reference\": \"ffa517cb918591b93acc9b95c0bebdcd0e4538bd\",\n \"shasum\": \"\"\n },\n \"require\": {\n \"php\": \"^7.2|^8.0\"\n },\n \"conflict\": {\n \"phpstan/phpstan-shim\": \"*\"\n },\n \"bin\": [\n \"phpstan\",\n \"phpstan.phar\"\n ],\n \"type\": \"library\",\n \"autoload\": {\n \"files\": [\n \"bootstrap.php\"\n ]\n },\n \"notification-url\": \"https://packagist.org/downloads/\",\n \"license\": [\n \"MIT\"\n ],\n \"description\": \"PHPStan - PHP Static Analysis Tool\",\n \"keywords\": [\n \"dev\",\n \"static analysis\"\n ],\n \"support\": {\n \"docs\": \"https://phpstan.org/user-guide/getting-started\",\n \"forum\": \"https://github.com/phpstan/phpstan/discussions\",\n \"issues\": \"https://github.com/phpstan/phpstan/issues\",\n \"security\": \"https://github.com/phpstan/phpstan/security/policy\",\n \"source\": \"https://github.com/phpstan/phpstan-src\"\n },\n \"funding\": [\n {\n \"url\": \"https://github.com/ondrejmirtes\",\n \"type\": \"github\"\n },\n {\n \"url\": \"https://github.com/phpstan\",\n \"type\": \"github\"\n }\n ],\n \"time\": \"2024-09-19T07:58:01+00:00\"\n },\n {\n \"name\": \"rector/rector\",\n \"version\": \"1.2.5\",\n \"source\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/rectorphp/rector.git\",\n \"reference\": \"e98aa793ca3fcd17e893cfaf9103ac049775d339\"\n },\n \"dist\": {\n \"type\": \"zip\",\n \"url\": \"https://api.github.com/repos/rectorphp/rector/zipball/e98aa793ca3fcd17e893cfaf9103ac049775d339\",\n \"reference\": \"e98aa793ca3fcd17e893cfaf9103ac049775d339\",\n \"shasum\": \"\"\n },\n \"require\": {\n \"php\": \"^7.2|^8.0\",\n \"phpstan/phpstan\": \"^1.12.2\"\n },\n \"conflict\": {\n \"rector/rector-doctrine\": \"*\",\n \"rector/rector-downgrade-php\": \"*\",\n \"rector/rector-phpunit\": \"*\",\n \"rector/rector-symfony\": \"*\"\n },\n \"suggest\": {\n \"ext-dom\": \"To manipulate phpunit.xml via the custom-rule command\"\n },\n \"bin\": [\n \"bin/rector\"\n ],\n \"type\": \"library\",\n \"autoload\": {\n \"files\": [\n \"bootstrap.php\"\n ]\n },\n \"notification-url\": \"https://packagist.org/downloads/\",\n \"license\": [\n \"MIT\"\n ],\n \"description\": \"Instant Upgrade and Automated Refactoring of any PHP code\",\n \"keywords\": [\n \"automation\",\n \"dev\",\n \"migration\",\n \"refactoring\"\n ],\n \"support\": {\n \"issues\": \"https://github.com/rectorphp/rector/issues\",\n \"source\": \"https://github.com/rectorphp/rector/tree/1.2.5\"\n },\n \"funding\": [\n {\n \"url\": \"https://github.com/tomasvotruba\",\n \"type\": \"github\"\n }\n ],\n \"time\": \"2024-09-08T17:43:24+00:00\"\n }\n ],\n \"packages-dev\": [],\n \"aliases\": [],\n \"minimum-stability\": \"stable\",\n \"stability-flags\": [],\n \"prefer-stable\": false,\n \"prefer-lowest\": false,\n \"platform\": [],\n \"platform-dev\": [],\n \"plugin-api-version\": \"2.6.0\"\n}\n"},"phpcs":{"api-version":"1.0.0","version":"1.2.0.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/phpcs/phpcs-1.2.0.0.php","signature":null,"requirements":{"php":{"php":"^7.3 || ^8.0","ext-dom":"*"},"tool":{"phpcs":"^3.0 || ^2.0","phpcbf":"^3.0 || ^2.0"}},"checksum":{"type":"sha-512","value":"b6ed00306e76068a6af5e3b1dec837724f9e1900ef1049ce88e7ce195b0583524ca33a73613fba13244307a7ca853b6ddaa14ded69f651c3f184ac130bd1aaad"},"tools":{"phpcs":{"version":"3.10.3","url":"https://github.com/PHPCSStandards/PHP_CodeSniffer/releases/download/3.10.3/phpcs.phar","requirements":{"php":{"php":">=5.4.0","ext-simplexml":"*","ext-tokenizer":"*","ext-xmlwriter":"*"}},"checksum":null,"signature":"https://github.com/PHPCSStandards/PHP_CodeSniffer/releases/download/3.10.3/phpcs.phar.asc"},"phpcbf":{"version":"3.10.3","url":"https://github.com/PHPCSStandards/PHP_CodeSniffer/releases/download/3.10.3/phpcbf.phar","requirements":{"php":{"php":">=5.4.0","ext-simplexml":"*","ext-tokenizer":"*","ext-xmlwriter":"*"}},"checksum":null,"signature":"https://github.com/PHPCSStandards/PHP_CodeSniffer/releases/download/3.10.3/phpcbf.phar.asc"}},"composerLock":null}},"tools":[]} \ No newline at end of file diff --git a/.phpcq.yaml.dist b/.phpcq.yaml.dist new file mode 100644 index 0000000..306a181 --- /dev/null +++ b/.phpcq.yaml.dist @@ -0,0 +1,84 @@ +phpcq: + repositories: + - 'https://phpcq.github.io/repository/repository.json' + directories: + - src + artifact: .phpcq/build + plugins: + composer-normalize: + version: ^1.0 + signed: false + composer-require-checker: + version: ^1.0 + signed: false + phpcpd: + version: ^1.1 + signed: false + phploc: + version: ^1.0 + signed: false + phpmd: + version: ^1.0 + signed: false + psalm: + version: ^1.0 + signed: false + phpcs: + version: ^1.0 + signed: false + trusted-keys: + - C00543248C87FB13 + - 033E5F8D801A2F8D + - D2CCAC42F6295E7D + - 4AA394086372C20A + - 9093F8B32E4815AA + - 8A03EA3B385DBAA1 + - 12CE0F1D262429A5 + - 31C7E470E2138192 + - 5E6DDE998AB73B8E + - A978220305CD5C32 +tasks: + fix: + - composer-normalize-fix + - phpcbf + verify: + - composer-normalize + - composer-require-checker + analyze: + - phpcpd + - phploc + - phpmd + - psalm + - phpcs + default: + - verify + - analyze + composer-normalize-fix: + config: + dry_run: false + ignore_output: + - '#> pre-command-run: Contao\\ManagerPlugin\\Composer\\ArtifactsPlugin->preCommandRun#' + - '#Root package is not of type "project" or "contao-theme", we will not be installing Contao extensions.#' + plugin: composer-normalize + composer-normalize: + config: + ignore_output: + - '#> pre-command-run: Contao\\ManagerPlugin\\Composer\\ArtifactsPlugin->preCommandRun#' + - '#Root package is not of type "project" or "contao-theme", we will not be installing Contao extensions.#' + composer-require-checker: + config: + config_file: .composer-require-checker.json + phpcs: + config: + standard: ~ + standard_paths: + - ./vendor/slevomat/coding-standard + - ./vendor/doctrine/coding-standard/lib + phpcbf: + plugin: phpcs + config: + standard: ~ + standard_paths: + - ./vendor/slevomat/coding-standard + - ./vendor/doctrine/coding-standard/lib + fix: true diff --git a/companion.json b/companion.json new file mode 100644 index 0000000..9400782 --- /dev/null +++ b/companion.json @@ -0,0 +1,35 @@ +{ + "receipts": [ + "projects/contao-bundle/4.13-5.3" + ], + "config": { + "phpConstraint": "^8.2" + }, + "tools": { + "composer": { + "namespace": "Hofff\\Contao\\IconFont" + }, + "phpcq": { + "plugins": { + "phpunit": false, + "rector": false + }, + "presets": { + "composer-require-checker": { + "tasks": { + "composer-require-checker": { + "config":{ + "config_file": ".composer-require-checker.json" + } + } + } + } + } + }, + "psalm": { + "configuration": { + "errorLevel": "3" + } + } + } +} diff --git a/composer.json b/composer.json index 433d85b..8a23304 100644 --- a/composer.json +++ b/composer.json @@ -1,44 +1,66 @@ { - "name": "hofff/contao-iconfont", - "description": "Insert tag for Contao Open Source CMS to insert FontAwesome icons and individual icons", - "keywords": [ - "contao", - "icon", - "iconfont", - "FontAwesome" - ], - "type": "contao-module", - "license": "LGPL-3.0-or-later", - "homepage": "https://www.hofff.com", - "authors": [ - { - "name": "Nicky Hoff", - "homepage": "https://www.hofff.com", - "email": "nick@hofff.com", - "role": "Developer" - } - ], - "require": { - "php": "^5.6 || ^7.0", - "contao/core-bundle" : "^3.5 || ^4.4", - "contao-community-alliance/composer-plugin" : "^2.4 || ^3.0" - }, - "autoload": { - "psr-4": { - "Hofff\\Contao\\IconFont\\": "src/" - } - }, - "extra": { - "contao": { - "sources": { - "contao-module": "system/modules/hofff_iconfont" - } - }, - "branch-alias": { - "dev-develop": "2.2.x-dev", - "dev-master": "2.1.x-dev" - } - }, - "prefer-stable": true, - "minimum-stability": "dev" + "name": "hofff/contao-iconfont", + "description": "Insert tag for Contao Open Source CMS to insert FontAwesome icons and individual icons", + "license": "LGPL-3.0-or-later", + "type": "contao-bundle", + "keywords": [ + "contao", + "icon", + "iconfont", + "FontAwesome" + ], + "authors": [ + { + "name": "Nicky Hoff", + "email": "nick@hofff.com", + "homepage": "https://www.hofff.com", + "role": "Developer" + } + ], + "homepage": "https://www.hofff.com", + "require": { + "php": "^8.2", + "contao-community-alliance/composer-plugin": "^2.4 || ^3.0", + "contao/core-bundle": "^4.13 || ^5.3", + "symfony/config": "^5.4 || ^6.4", + "symfony/dependency-injection": "^5.4 || ^6.4", + "symfony/http-kernel": "^5.4 || ^6.4" + }, + "require-dev": { + "contao/manager-plugin": "^2.1", + "doctrine/coding-standard": "^12.0", + "phpcq/runner-bootstrap": "@dev" + }, + "conflict": { + "contao/manager-plugin": "<2.1 || >= 3.0" + }, + "minimum-stability": "dev", + "prefer-stable": true, + "autoload": { + "psr-4": { + "Hofff\\Contao\\IconFont\\": "src/" + } + }, + "config": { + "allow-plugins": { + "contao-community-alliance/composer-plugin": true, + "contao-components/installer": true, + "contao/manager-plugin": true, + "dealerdirect/phpcodesniffer-composer-installer": true, + "php-http/discovery": true + }, + "sort-packages": true + }, + "extra": { + "branch-alias": { + "dev-develop": "3.1.x-dev", + "dev-master": "3.0.x-dev" + }, + "contao": { + "sources": { + "contao-module": "system/modules/hofff_iconfont" + } + }, + "contao-manager-plugin": "Hofff\\Contao\\IconFont\\ContaoManager\\Plugin" + } } diff --git a/contao-module/config/autoload.ini b/contao-module/config/autoload.ini deleted file mode 100644 index cc8452d..0000000 --- a/contao-module/config/autoload.ini +++ /dev/null @@ -1,19 +0,0 @@ -;; -; List modules which are required to be loaded beforehand -;; -requires[] = "core" - -;; -; Configure what you want the autoload creator to register -;; -register_namespaces = true -register_classes = true -register_templates = true - -;; -; Override the default configuration for certain sub directories -;; -[vendor/*] -register_namespaces = false -register_classes = false -register_templates = false diff --git a/contao-module/config/config.php b/contao-module/config/config.php deleted file mode 100644 index d23add9..0000000 --- a/contao-module/config/config.php +++ /dev/null @@ -1,3 +0,0 @@ - + + + + + + + + + vendor/autoload.php + + + + + + src + + /src/Resources/contao/languages/* + + + + + + + + + + + + diff --git a/psalm.xml b/psalm.xml new file mode 100644 index 0000000..38b25cc --- /dev/null +++ b/psalm.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/ContaoManager/Plugin.php b/src/ContaoManager/Plugin.php new file mode 100644 index 0000000..ff996e6 --- /dev/null +++ b/src/ContaoManager/Plugin.php @@ -0,0 +1,23 @@ +setLoadAfter([ContaoCoreBundle::class]), + ]; + } +} diff --git a/src/DependencyInjection/HofffContaoIconFontExtension.php b/src/DependencyInjection/HofffContaoIconFontExtension.php new file mode 100644 index 0000000..6b98ee7 --- /dev/null +++ b/src/DependencyInjection/HofffContaoIconFontExtension.php @@ -0,0 +1,20 @@ +load('services.xml'); + } +} diff --git a/src/EventListener/InsertTagsListener.php b/src/EventListener/InsertTagsListener.php new file mode 100644 index 0000000..28fa535 --- /dev/null +++ b/src/EventListener/InsertTagsListener.php @@ -0,0 +1,425 @@ +'; + } + + if ($split[0] === 'icon-far' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fal' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fab' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon' && isset($split[1])) { + return ''; + } + + // Icons mit fester Breite + + if ($split[0] === 'icon-fas-fw' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-far-fw' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fal-fw' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fab-fw' && isset($split[1])) { + return ''; + } + + // Icons im Textfluss (links) + + if ($split[0] === 'icon-fas-left' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-far-left' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fal-left' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fab-left' && isset($split[1])) { + return ''; + } + + // Icons im Textfluss (rechts) + + if ($split[0] === 'icon-fas-right' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-far-right' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fal-right' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fab-right' && isset($split[1])) { + return ''; + } + + // Icons mit Rahmen im Textfluss (links) + + if ($split[0] === 'icon-fas-border-left' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-far-border-left' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fal-border-left' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fab-border-left' && isset($split[1])) { + return ''; + } + + // Icons mit Rahmen im Textfluss (rechts) + + if ($split[0] === 'icon-fas-border-right' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-far-border-right' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fal-border-right' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fab-border-right' && isset($split[1])) { + return ''; + } + + // Icons drehend + + if ($split[0] === 'icon-fas-spin' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-far-spin' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fal-spin' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fab-spin' && isset($split[1])) { + return ''; + } + + // Icons pulsierend + + if ($split[0] === 'icon-fas-pulse' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-far-pulse' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fal-pulse' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fab-pulse' && isset($split[1])) { + return ''; + } + + // Icons rotieren um 90° im Uhrzeigersinn + + if ($split[0] === 'icon-fas-rotate-90' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-far-rotate-90' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fal-rotate-90' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fab-rotate-90' && isset($split[1])) { + return ''; + } + + // Icons rotieren um 180° im Uhrzeigersinn + + if ($split[0] === 'icon-fas-rotate-180' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-far-rotate-180' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fal-rotate-180' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fab-rotate-180' && isset($split[1])) { + return ''; + } + + // Icons rotieren um 270° im Uhrzeigersinn + + if ($split[0] === 'icon-fas-rotate-270' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-far-rotate-270' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fal-rotate-270' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fab-rotate-270' && isset($split[1])) { + return ''; + } + + // Icons horizontal spiegeln + + if ($split[0] === 'icon-fas-flip-horizontal' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-far-flip-horizontal' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fal-flip-horizontal' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fab-flip-horizontal' && isset($split[1])) { + return ''; + } + + // Icons vertikal spiegeln + + if ($split[0] === 'icon-fas-flip-vertical' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-far-flip-vertical' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fal-flip-vertical' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fab-flip-vertical' && isset($split[1])) { + return ''; + } + + // Icons vertikal & horizontal spiegeln + + if ($split[0] === 'icon-fas-flip-both' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-far-flip-both' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fal-flip-both' && isset($split[1])) { + return ''; + } + + if ($split[0] === 'icon-fab-flip-both' && isset($split[1])) { + return ''; + } + + // Icons mit quadratischem Hintergrund + + if ($split[0] === 'icon-fas-square' && isset($split[1])) { + return '' + . ''; + } + + if ($split[0] === 'icon-far-square' && isset($split[1])) { + return '' + . ''; + } + + if ($split[0] === 'icon-fal-square' && isset($split[1])) { + return '' + . ''; + } + + if ($split[0] === 'icon-fab-square' && isset($split[1])) { + return '' + . ''; + } + + // Icons mit quadratischem Hintergrund - nur Umrandung + + if ($split[0] === 'icon-fas-square-border' && isset($split[1])) { + return '' + . ''; + } + + if ($split[0] === 'icon-far-square-border' && isset($split[1])) { + return '' + . ''; + } + + if ($split[0] === 'icon-fal-square-border' && isset($split[1])) { + return '' + . ''; + } + + if ($split[0] === 'icon-fab-square-border' && isset($split[1])) { + return '' + . ''; + } + + // Icons mit rundem Hintergrund + + if ($split[0] === 'icon-fas-circle' && isset($split[1])) { + return '' + . ''; + } + + if ($split[0] === 'icon-far-circle' && isset($split[1])) { + return '' + . ''; + } + + if ($split[0] === 'icon-fal-circle' && isset($split[1])) { + return '' + . ''; + } + + if ($split[0] === 'icon-fab-circle' && isset($split[1])) { + return '' + . ''; + } + + // Icons mit rundem Hintergrund - nur Umrandung + + if ($split[0] === 'icon-fas-circle-border' && isset($split[1])) { + return '' + . ''; + } + + if ($split[0] === 'icon-far-circle-border' && isset($split[1])) { + return '' + . ''; + } + + if ($split[0] === 'icon-fal-circle-border' && isset($split[1])) { + return '' + . ''; + } + + if ($split[0] === 'icon-fab-circle-border' && isset($split[1])) { + return '' + . ''; + } + + // Icons mit Verbotsschild (Farbe für .fa-ban muss per CSS gesetzt werden) + + if ($split[0] === 'icon-fas-ban' && isset($split[1])) { + return '' + . ''; + } + + if ($split[0] === 'icon-far-ban' && isset($split[1])) { + return '' + . ''; + } + + if ($split[0] === 'icon-fal-ban' && isset($split[1])) { + return '' + . ''; + } + + if ($split[0] === 'icon-fab-ban' && isset($split[1])) { + return '' + . ''; + } + + return false; + } +} diff --git a/src/HofffContaoIconFontBundle.php b/src/HofffContaoIconFontBundle.php new file mode 100644 index 0000000..d8b736a --- /dev/null +++ b/src/HofffContaoIconFontBundle.php @@ -0,0 +1,11 @@ + - */ -class InsertTags -{ - /** - * @param string $tag - * @return bool|string - */ - public function hookReplaceInsertTags($tag) - { - $split = explode('::', $tag); - - // Icons Standard - if ($split[0] == 'icon-fas' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon' && isset($split[1])) { - return ''; } - - // Icons mit fester Breite - elseif ($split[0] == 'icon-fas-fw' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far-fw' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal-fw' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab-fw' && isset($split[1])) { - return ''; } - - // Icons im Textfluss (links) - elseif ($split[0] == 'icon-fas-left' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far-left' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal-left' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab-left' && isset($split[1])) { - return ''; } - - // Icons im Textfluss (rechts) - elseif ($split[0] == 'icon-fas-right' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far-right' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal-right' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab-right' && isset($split[1])) { - return ''; } - - // Icons mit Rahmen im Textfluss (links) - elseif ($split[0] == 'icon-fas-border-left' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far-border-left' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal-border-left' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab-border-left' && isset($split[1])) { - return ''; } - - // Icons mit Rahmen im Textfluss (rechts) - elseif ($split[0] == 'icon-fas-border-right' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far-border-right' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal-border-right' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab-border-right' && isset($split[1])) { - return ''; } - - // Icons drehend - elseif ($split[0] == 'icon-fas-spin' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far-spin' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal-spin' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab-spin' && isset($split[1])) { - return ''; } - - // Icons pulsierend - elseif ($split[0] == 'icon-fas-pulse' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far-pulse' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal-pulse' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab-pulse' && isset($split[1])) { - return ''; } - - // Icons rotieren um 90° im Uhrzeigersinn - elseif ($split[0] == 'icon-fas-rotate-90' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far-rotate-90' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal-rotate-90' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab-rotate-90' && isset($split[1])) { - return ''; } - - // Icons rotieren um 180° im Uhrzeigersinn - elseif ($split[0] == 'icon-fas-rotate-180' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far-rotate-180' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal-rotate-180' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab-rotate-180' && isset($split[1])) { - return ''; } - - // Icons rotieren um 270° im Uhrzeigersinn - elseif ($split[0] == 'icon-fas-rotate-270' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far-rotate-270' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal-rotate-270' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab-rotate-270' && isset($split[1])) { - return ''; } - - // Icons horizontal spiegeln - elseif ($split[0] == 'icon-fas-flip-horizontal' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far-flip-horizontal' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal-flip-horizontal' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab-flip-horizontal' && isset($split[1])) { - return ''; } - - // Icons vertikal spiegeln - elseif ($split[0] == 'icon-fas-flip-vertical' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far-flip-vertical' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal-flip-vertical' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab-flip-vertical' && isset($split[1])) { - return ''; } - - // Icons vertikal & horizontal spiegeln - elseif ($split[0] == 'icon-fas-flip-both' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far-flip-both' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal-flip-both' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab-flip-both' && isset($split[1])) { - return ''; } - - // Icons mit quadratischem Hintergrund - elseif ($split[0] == 'icon-fas-square' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far-square' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal-square' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab-square' && isset($split[1])) { - return ''; } - - // Icons mit quadratischem Hintergrund - nur Umrandung - elseif ($split[0] == 'icon-fas-square-border' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far-square-border' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal-square-border' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab-square-border' && isset($split[1])) { - return ''; } - - // Icons mit rundem Hintergrund - elseif ($split[0] == 'icon-fas-circle' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far-circle' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal-circle' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab-circle' && isset($split[1])) { - return ''; } - - // Icons mit rundem Hintergrund - nur Umrandung - elseif ($split[0] == 'icon-fas-circle-border' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far-circle-border' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal-circle-border' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab-circle-border' && isset($split[1])) { - return ''; } - - // Icons mit Verbotsschild (Farbe für .fa-ban muss per CSS gesetzt werden) - elseif ($split[0] == 'icon-fas-ban' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-far-ban' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fal-ban' && isset($split[1])) { - return ''; } - elseif ($split[0] == 'icon-fab-ban' && isset($split[1])) { - return ''; } - - return false; - } -} diff --git a/src/Resources/config/services.xml b/src/Resources/config/services.xml new file mode 100644 index 0000000..b927b2a --- /dev/null +++ b/src/Resources/config/services.xml @@ -0,0 +1,11 @@ + + + + + + + + +