From 923ae4e4e515a18fbf894329a4cd4c72b8b63e2e Mon Sep 17 00:00:00 2001 From: Ben Croker Date: Wed, 5 Jan 2022 12:46:37 +0000 Subject: [PATCH 1/7] Documented sample usage of EVENT_BEFORE_GENERATE --- README.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 50684d5..dbb4eaa 100755 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ composer require nystudio107/craft-autocomplete --dev ``` 2. Ensure that the [Symfony Support plugin](https://plugins.jetbrains.com/plugin/7219-symfony-plugin) for PhpStorm is installed and enabled by checking the **Enabled for Project** checkbox in the Symfony plugin settings. - + 3. Ensure that `devMode` is enabled. 4. Visit the Craft site on which the package is installed to generate the autocomplete classes in `storage/runtime/compiled_classes/` or run the following console command. @@ -61,6 +61,21 @@ php craft clear-caches/temp-files ## Extending +You can extend the values that a `Generator` class adds using the `EVENT_BEFORE_GENERATE` event. + +```php +use nystudio107\autocomplete\events\DefineGeneratorValuesEvent; +use nystudio107\autocomplete\generators\AutocompleteTwigExtensionGenerator; +use yii\base\Event; + +Event::on(AutocompleteTwigExtensionGenerator::class, + AutocompleteTwigExtensionGenerator::EVENT_BEFORE_GENERATE, + function(DefineGeneratorValuesEvent $event) { + $event->values['myVariable'] = 'value'; + } +); +``` + In addition to the provided autocomplete generator types, you can write your own by implementing the `GeneratorInterface` class or extending the abstract `Generator` class (recommended). ```php From f2c5da3b64e9cd9861c40b0d0cf2bade93ce5954 Mon Sep 17 00:00:00 2001 From: Andrew Welch Date: Sun, 27 Feb 2022 22:21:49 -0500 Subject: [PATCH 2/7] feat: Added compatibility with Craft CMS `^4.0.0` and Craft CMS `^3.0.0` --- composer.json | 76 +++++++++++++++++++++++++-------------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/composer.json b/composer.json index 25ef532..adf7952 100755 --- a/composer.json +++ b/composer.json @@ -1,42 +1,42 @@ { - "name": "nystudio107/craft-autocomplete", - "description": "Provides Twig template IDE autocomplete of Craft CMS & plugin variables", - "type": "yii2-extension", - "version": "1.0.9", - "keywords": [ - "craft", - "cms", - "craftcms", - "twig", - "symfony", - "autocomplete", - "auto", - "complete" - ], - "support": { - "docs": "https://github.com/nystudio107/craft-autocomplete/blob/master/README.md", - "issues": "https://github.com/nystudio107/craft-autocomplete/issues" + "name": "nystudio107/craft-autocomplete", + "description": "Provides Twig template IDE autocomplete of Craft CMS & plugin variables", + "type": "yii2-extension", + "version": "1.10.0", + "keywords": [ + "craft", + "cms", + "craftcms", + "twig", + "symfony", + "autocomplete", + "auto", + "complete" + ], + "support": { + "docs": "https://github.com/nystudio107/craft-autocomplete/blob/master/README.md", + "issues": "https://github.com/nystudio107/craft-autocomplete/issues" + }, + "license": "MIT", + "authors": [ + { + "name": "nystudio107", + "homepage": "https://nystudio107.com" }, - "license": "MIT", - "authors": [ - { - "name": "nystudio107", - "homepage": "https://nystudio107.com" - }, - { - "name": "PutYourLightsOn", - "homepage": "https://putyourlightson.com" - } - ], - "require": { - "craftcms/cms": "^3.0.0" - }, - "autoload": { - "psr-4": { - "nystudio107\\autocomplete\\": "src/" - } - }, - "extra": { - "bootstrap": "nystudio107\\autocomplete\\Autocomplete" + { + "name": "PutYourLightsOn", + "homepage": "https://putyourlightson.com" + } + ], + "require": { + "craftcms/cms": "^3.0.0 || ^4.0.0-alpha" + }, + "autoload": { + "psr-4": { + "nystudio107\\autocomplete\\": "src/" } + }, + "extra": { + "bootstrap": "nystudio107\\autocomplete\\Autocomplete" + } } From 6582f607a417184dc6541fa5407d292b89ff8120 Mon Sep 17 00:00:00 2001 From: Andrew Welch Date: Sun, 27 Feb 2022 22:22:03 -0500 Subject: [PATCH 3/7] feat: Added compatibility with Craft CMS `^4.0.0` and Craft CMS `^3.0.0` --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index dbb4eaa..3fce51e 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nystudio107/craft-autocomplete/badges/quality-score.png?b=develop)](https://scrutinizer-ci.com/g/nystudio107/craft-autocomplete/?branch=develop) [![Code Coverage](https://scrutinizer-ci.com/g/nystudio107/craft-autocomplete/badges/coverage.png?b=develop)](https://scrutinizer-ci.com/g/nystudio107/craft-autocomplete/?branch=develop) [![Build Status](https://scrutinizer-ci.com/g/nystudio107/craft-autocomplete/badges/build.png?b=develop)](https://scrutinizer-ci.com/g/nystudio107/craft-autocomplete/build-status/develop) [![Code Intelligence Status](https://scrutinizer-ci.com/g/nystudio107/craft-autocomplete/badges/code-intelligence.svg?b=develop)](https://scrutinizer-ci.com/code-intelligence) -# Autocomplete for Craft CMS 3.x +# Autocomplete for Craft CMS 3.x & 4.x Provides Twig template IDE autocompletion for Craft CMS and plugin/module variables and element types. @@ -13,7 +13,7 @@ Works with PhpStorm provided the [Symfony Support plugin](https://plugins.jetbra ## Requirements -This plugin requires Craft CMS 3.0.0 or later. +This package requires Craft CMS ^3.0.0 or Craft CMS ^4.0.0. ## Usage From 3a72f1aa7c309547308ea7e41ff864c1fe5d9ee3 Mon Sep 17 00:00:00 2001 From: Andrew Welch Date: Sun, 27 Feb 2022 22:22:20 -0500 Subject: [PATCH 4/7] feat: Added `CODEOWNERS` --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..a8d76dc --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @khalwat @bencroker From 1d186b292cd5f23ef13aa1c8f68b1f46ae74f210 Mon Sep 17 00:00:00 2001 From: Andrew Welch Date: Sun, 27 Feb 2022 22:22:28 -0500 Subject: [PATCH 5/7] chore: Version 1.10.0 --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c1c3c4..4d79113 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ All notable changes to this project will be documented in this file. +## 1.10.0 - 2022.02.27 +### Added +* Added compatibility with Craft CMS `^4.0.0` and Craft CMS `^3.0.0` +* Added `CODEOWNERS` + +### Changed +* Code refactor/reformat + ## 1.0.9 - 2021.12.23 ### Changed * Check to see if a file exists via `is_file()` before attempting to delete it with `unlink()` From 3eebd31be24cf0d998221e26ab289ae4d8f845e6 Mon Sep 17 00:00:00 2001 From: Andrew Welch Date: Sun, 27 Feb 2022 22:24:05 -0500 Subject: [PATCH 6/7] refactor: Code refactor/reformat --- src/Autocomplete.php | 32 +++++++++---------- src/base/Generator.php | 3 +- .../controllers/AutocompleteController.php | 1 - .../AutocompleteTwigExtensionGenerator.php | 6 ++-- .../AutocompleteVariableGenerator.php | 11 +++---- 5 files changed, 23 insertions(+), 30 deletions(-) diff --git a/src/Autocomplete.php b/src/Autocomplete.php index 6eebc3a..a4eed63 100755 --- a/src/Autocomplete.php +++ b/src/Autocomplete.php @@ -12,18 +12,16 @@ namespace nystudio107\autocomplete; -use nystudio107\autocomplete\base\Generator; -use nystudio107\autocomplete\console\controllers\AutocompleteController; -use nystudio107\autocomplete\generators\AutocompleteTwigExtensionGenerator; -use nystudio107\autocomplete\generators\AutocompleteVariableGenerator; - use Craft; use craft\console\Application as CraftConsoleApp; use craft\events\RegisterComponentTypesEvent; use craft\services\Globals; use craft\services\Plugins; use craft\web\Application as CraftWebApp; - +use nystudio107\autocomplete\base\Generator; +use nystudio107\autocomplete\console\controllers\AutocompleteController; +use nystudio107\autocomplete\generators\AutocompleteTwigExtensionGenerator; +use nystudio107\autocomplete\generators\AutocompleteVariableGenerator; use yii\base\Application as YiiApp; use yii\base\BootstrapInterface; use yii\base\Event; @@ -112,11 +110,11 @@ public function bootstrap($app) */ public function registerEventHandlers() { - Event::on(Plugins::class,Plugins::EVENT_AFTER_INSTALL_PLUGIN, [$this, 'regenerateAutocompleteClasses']); - Event::on(Plugins::class,Plugins::EVENT_AFTER_UNINSTALL_PLUGIN, [$this, 'deleteAutocompleteClasses']); - Event::on(Globals::class,Globals::EVENT_AFTER_SAVE_GLOBAL_SET, [$this, 'deleteAutocompleteClasses']); - Event::on(Plugins::class,Plugins::EVENT_AFTER_LOAD_PLUGINS, [$this, 'generateAutocompleteClasses']); - Craft::info('Event Handlers installed',__METHOD__); + Event::on(Plugins::class, Plugins::EVENT_AFTER_INSTALL_PLUGIN, [$this, 'regenerateAutocompleteClasses']); + Event::on(Plugins::class, Plugins::EVENT_AFTER_UNINSTALL_PLUGIN, [$this, 'deleteAutocompleteClasses']); + Event::on(Globals::class, Globals::EVENT_AFTER_SAVE_GLOBAL_SET, [$this, 'deleteAutocompleteClasses']); + Event::on(Plugins::class, Plugins::EVENT_AFTER_LOAD_PLUGINS, [$this, 'generateAutocompleteClasses']); + Craft::info('Event Handlers installed', __METHOD__); } /** @@ -125,11 +123,11 @@ public function registerEventHandlers() public function generateAutocompleteClasses() { $autocompleteGenerators = $this->getAllAutocompleteGenerators(); - foreach($autocompleteGenerators as $generatorClass) { + foreach ($autocompleteGenerators as $generatorClass) { /* @var Generator $generatorClass */ $generatorClass::generate(); } - Craft::info('Autocomplete classes generated',__METHOD__); + Craft::info('Autocomplete classes generated', __METHOD__); } /** @@ -138,11 +136,11 @@ public function generateAutocompleteClasses() public function regenerateAutocompleteClasses() { $autocompleteGenerators = $this->getAllAutocompleteGenerators(); - foreach($autocompleteGenerators as $generatorClass) { + foreach ($autocompleteGenerators as $generatorClass) { /* @var Generator $generatorClass */ $generatorClass::regenerate(); } - Craft::info('Autocomplete classes regenerated',__METHOD__); + Craft::info('Autocomplete classes regenerated', __METHOD__); } /** @@ -151,11 +149,11 @@ public function regenerateAutocompleteClasses() public function deleteAutocompleteClasses() { $autocompleteGenerators = $this->getAllAutocompleteGenerators(); - foreach($autocompleteGenerators as $generatorClass) { + foreach ($autocompleteGenerators as $generatorClass) { /* @var Generator $generatorClass */ $generatorClass::delete(); } - Craft::info('Autocomplete classes deleted',__METHOD__); + Craft::info('Autocomplete classes deleted', __METHOD__); } // Protected Methods diff --git a/src/base/Generator.php b/src/base/Generator.php index 1bb7359..f94ee31 100644 --- a/src/base/Generator.php +++ b/src/base/Generator.php @@ -12,9 +12,8 @@ namespace nystudio107\autocomplete\base; -use nystudio107\autocomplete\Autocomplete; - use Craft; +use nystudio107\autocomplete\Autocomplete; /** * @author nystudio107 diff --git a/src/console/controllers/AutocompleteController.php b/src/console/controllers/AutocompleteController.php index 548c501..7b31f1d 100644 --- a/src/console/controllers/AutocompleteController.php +++ b/src/console/controllers/AutocompleteController.php @@ -13,7 +13,6 @@ namespace nystudio107\autocomplete\console\controllers; use nystudio107\autocomplete\Autocomplete; - use yii\console\Controller; use yii\console\ExitCode; use yii\helpers\BaseConsole; diff --git a/src/generators/AutocompleteTwigExtensionGenerator.php b/src/generators/AutocompleteTwigExtensionGenerator.php index c2883ad..b96281b 100644 --- a/src/generators/AutocompleteTwigExtensionGenerator.php +++ b/src/generators/AutocompleteTwigExtensionGenerator.php @@ -12,13 +12,11 @@ namespace nystudio107\autocomplete\generators; -use nystudio107\autocomplete\base\Generator; -use nystudio107\autocomplete\events\DefineGeneratorValuesEvent; - use Craft; use craft\base\Element; use craft\web\twig\GlobalsExtension; - +use nystudio107\autocomplete\base\Generator; +use nystudio107\autocomplete\events\DefineGeneratorValuesEvent; use yii\base\Event; /** diff --git a/src/generators/AutocompleteVariableGenerator.php b/src/generators/AutocompleteVariableGenerator.php index cd717e2..01d4af8 100644 --- a/src/generators/AutocompleteVariableGenerator.php +++ b/src/generators/AutocompleteVariableGenerator.php @@ -12,12 +12,11 @@ namespace nystudio107\autocomplete\generators; -use nystudio107\autocomplete\base\Generator; -use nystudio107\autocomplete\events\DefineGeneratorValuesEvent; - use Craft; use craft\web\twig\variables\CraftVariable; - +use nystudio107\autocomplete\base\Generator; +use nystudio107\autocomplete\events\DefineGeneratorValuesEvent; +use Throwable; use yii\base\Event; /** @@ -82,7 +81,7 @@ private static function generateInternal() foreach ($craftVariable->getComponents() as $key => $value) { try { $values[$key] = get_class($craftVariable->get($key)); - } catch (\Throwable $e) { + } catch (Throwable $e) { // That's okay } } @@ -94,7 +93,7 @@ private static function generateInternal() if (is_object($value) && !in_array($key, static::BEHAVIOR_PROPERTY_EXCLUDES, true)) { $values[$key] = get_class($value); } - } catch (\Throwable $e) { + } catch (Throwable $e) { // That's okay } } From e269e0cca2b2b5747caefbec79d716a9a3c8fd14 Mon Sep 17 00:00:00 2001 From: Andrew Welch Date: Sun, 27 Feb 2022 22:26:26 -0500 Subject: [PATCH 7/7] chore: Version 1.10.0 --- composer.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index adf7952..f808745 100755 --- a/composer.json +++ b/composer.json @@ -14,8 +14,9 @@ "complete" ], "support": { - "docs": "https://github.com/nystudio107/craft-autocomplete/blob/master/README.md", - "issues": "https://github.com/nystudio107/craft-autocomplete/issues" + "docs": "https://github.com/nystudio107/craft-autocomplete/blob/v1/README.md", + "issues": "https://github.com/nystudio107/craft-autocomplete/issues", + "source": "https://github.com/nystudio107/craft-autocomplete" }, "license": "MIT", "authors": [