From 16f2e128a3c097856ed88c5930e160f4e4c65ff8 Mon Sep 17 00:00:00 2001 From: RomainMazB Date: Tue, 8 Jun 2021 23:52:50 +0200 Subject: [PATCH 1/7] Add --settings option to create:model command --- src/Scaffold/Console/CreateModel.php | 31 ++++++++++++------- .../Console/model/settings-fields.stub | 7 +++++ .../Console/model/settings-model.stub | 18 +++++++++++ 3 files changed, 44 insertions(+), 12 deletions(-) create mode 100644 src/Scaffold/Console/model/settings-fields.stub create mode 100644 src/Scaffold/Console/model/settings-model.stub diff --git a/src/Scaffold/Console/CreateModel.php b/src/Scaffold/Console/CreateModel.php index 6e0b54c44..1e76205f6 100644 --- a/src/Scaffold/Console/CreateModel.php +++ b/src/Scaffold/Console/CreateModel.php @@ -27,17 +27,24 @@ class CreateModel extends GeneratorCommand */ protected $type = 'Model'; - /** - * A mapping of stub to generated file. - * - * @var array - */ - protected $stubs = [ - 'model/model.stub' => 'models/{{studly_name}}.php', - 'model/fields.stub' => 'models/{{lower_name}}/fields.yaml', - 'model/columns.stub' => 'models/{{lower_name}}/columns.yaml', - 'model/create_table.stub' => 'updates/create_{{snake_plural_name}}_table.php', - ]; + public function handle() + { + if ($this->hasOption('settings')) { + $this->stubs = [ + 'model/settings-model.stub' => 'models/{{studly_name}}.php', + 'model/settings-fields.stub' => 'models/{{lower_name}}/fields.yaml' + ]; + } else { + $this->stubs = [ + 'model/model.stub' => 'models/{{studly_name}}.php', + 'model/fields.stub' => 'models/{{lower_name}}/fields.yaml', + 'model/columns.stub' => 'models/{{lower_name}}/columns.yaml', + 'model/create_table.stub' => 'updates/create_{{snake_plural_name}}_table.php' + ]; + } + + parent::handle(); + } /** * Prepare variables for stubs. @@ -51,7 +58,6 @@ protected function prepareVars() $parts = explode('.', $pluginCode); $plugin = array_pop($parts); $author = array_pop($parts); - $model = $this->argument('model'); return [ @@ -83,6 +89,7 @@ protected function getOptions() { return [ ['force', null, InputOption::VALUE_NONE, 'Overwrite existing files with generated ones.'], + ['settings', null, InputOption::VALUE_NONE, 'Generate a settings model.'], ]; } } diff --git a/src/Scaffold/Console/model/settings-fields.stub b/src/Scaffold/Console/model/settings-fields.stub new file mode 100644 index 000000000..19c492510 --- /dev/null +++ b/src/Scaffold/Console/model/settings-fields.stub @@ -0,0 +1,7 @@ +# =================================== +# Form Field Definitions +# =================================== + +fields: + settings_option: + label: This is a sample settings used by {{name}} diff --git a/src/Scaffold/Console/model/settings-model.stub b/src/Scaffold/Console/model/settings-model.stub new file mode 100644 index 000000000..7ce0f35c2 --- /dev/null +++ b/src/Scaffold/Console/model/settings-model.stub @@ -0,0 +1,18 @@ + Date: Wed, 9 Jun 2021 00:26:30 +0200 Subject: [PATCH 2/7] Fix $this->hasOption > $this->option --- src/Scaffold/Console/CreateModel.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Scaffold/Console/CreateModel.php b/src/Scaffold/Console/CreateModel.php index 1e76205f6..6d142a0b7 100644 --- a/src/Scaffold/Console/CreateModel.php +++ b/src/Scaffold/Console/CreateModel.php @@ -29,7 +29,7 @@ class CreateModel extends GeneratorCommand public function handle() { - if ($this->hasOption('settings')) { + if ($this->option('settings')) { $this->stubs = [ 'model/settings-model.stub' => 'models/{{studly_name}}.php', 'model/settings-fields.stub' => 'models/{{lower_name}}/fields.yaml' From 948c41ff01df3067da65d6cacfa04c656ce45832 Mon Sep 17 00:00:00 2001 From: Romain 'Maz' BILLOIR Date: Wed, 30 Jun 2021 23:04:32 +0200 Subject: [PATCH 3/7] Update src/Scaffold/Console/model/settings-model.stub Co-authored-by: Jack Wilkinson <31214002+jaxwilko@users.noreply.github.com> --- src/Scaffold/Console/model/settings-model.stub | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Scaffold/Console/model/settings-model.stub b/src/Scaffold/Console/model/settings-model.stub index 7ce0f35c2..740e775a9 100644 --- a/src/Scaffold/Console/model/settings-model.stub +++ b/src/Scaffold/Console/model/settings-model.stub @@ -7,12 +7,25 @@ use Model; */ class {{studly_name}} extends Model { - public $table = '{{lower_author}}_{{lower_plugin}}_{{snake_plural_name}}'; use \Winter\Storm\Database\Traits\Validation; + /** + * @var array Behaviors implemented by this model. + */ public $implement = ['System.Behaviors.SettingsModel']; + /** + * @var string Unique code + */ public $settingsCode = '{{lower_author}}_{{lower_plugin}}_{{lower_name}}'; + /** + * @var mixed Settings form field definitions + */ public $settingsFields = 'fields.yaml'; + + /** + * @var array Validation rules + */ + public $rules = []; } From 5be2df23903c64ca94ab9034aa5867dd648d7709 Mon Sep 17 00:00:00 2001 From: RomainMazB Date: Tue, 5 Oct 2021 22:29:25 +0200 Subject: [PATCH 4/7] Revert --settings option to prepare create:settings command --- src/Scaffold/Console/CreateModel.php | 31 +++++++------------ .../Console/model/settings-fields.stub | 7 ----- .../Console/model/settings-model.stub | 31 ------------------- 3 files changed, 12 insertions(+), 57 deletions(-) delete mode 100644 src/Scaffold/Console/model/settings-fields.stub delete mode 100644 src/Scaffold/Console/model/settings-model.stub diff --git a/src/Scaffold/Console/CreateModel.php b/src/Scaffold/Console/CreateModel.php index 6d142a0b7..6e0b54c44 100644 --- a/src/Scaffold/Console/CreateModel.php +++ b/src/Scaffold/Console/CreateModel.php @@ -27,24 +27,17 @@ class CreateModel extends GeneratorCommand */ protected $type = 'Model'; - public function handle() - { - if ($this->option('settings')) { - $this->stubs = [ - 'model/settings-model.stub' => 'models/{{studly_name}}.php', - 'model/settings-fields.stub' => 'models/{{lower_name}}/fields.yaml' - ]; - } else { - $this->stubs = [ - 'model/model.stub' => 'models/{{studly_name}}.php', - 'model/fields.stub' => 'models/{{lower_name}}/fields.yaml', - 'model/columns.stub' => 'models/{{lower_name}}/columns.yaml', - 'model/create_table.stub' => 'updates/create_{{snake_plural_name}}_table.php' - ]; - } - - parent::handle(); - } + /** + * A mapping of stub to generated file. + * + * @var array + */ + protected $stubs = [ + 'model/model.stub' => 'models/{{studly_name}}.php', + 'model/fields.stub' => 'models/{{lower_name}}/fields.yaml', + 'model/columns.stub' => 'models/{{lower_name}}/columns.yaml', + 'model/create_table.stub' => 'updates/create_{{snake_plural_name}}_table.php', + ]; /** * Prepare variables for stubs. @@ -58,6 +51,7 @@ protected function prepareVars() $parts = explode('.', $pluginCode); $plugin = array_pop($parts); $author = array_pop($parts); + $model = $this->argument('model'); return [ @@ -89,7 +83,6 @@ protected function getOptions() { return [ ['force', null, InputOption::VALUE_NONE, 'Overwrite existing files with generated ones.'], - ['settings', null, InputOption::VALUE_NONE, 'Generate a settings model.'], ]; } } diff --git a/src/Scaffold/Console/model/settings-fields.stub b/src/Scaffold/Console/model/settings-fields.stub deleted file mode 100644 index 19c492510..000000000 --- a/src/Scaffold/Console/model/settings-fields.stub +++ /dev/null @@ -1,7 +0,0 @@ -# =================================== -# Form Field Definitions -# =================================== - -fields: - settings_option: - label: This is a sample settings used by {{name}} diff --git a/src/Scaffold/Console/model/settings-model.stub b/src/Scaffold/Console/model/settings-model.stub deleted file mode 100644 index 740e775a9..000000000 --- a/src/Scaffold/Console/model/settings-model.stub +++ /dev/null @@ -1,31 +0,0 @@ - Date: Tue, 5 Oct 2021 22:54:11 +0200 Subject: [PATCH 5/7] Add create:settings command --- src/Scaffold/Console/CreateSettings.php | 73 +++++++++++++++++++++++ src/Scaffold/Console/settings/fields.stub | 7 +++ src/Scaffold/Console/settings/model.stub | 31 ++++++++++ src/Scaffold/ScaffoldServiceProvider.php | 4 ++ 4 files changed, 115 insertions(+) create mode 100644 src/Scaffold/Console/CreateSettings.php create mode 100644 src/Scaffold/Console/settings/fields.stub create mode 100644 src/Scaffold/Console/settings/model.stub diff --git a/src/Scaffold/Console/CreateSettings.php b/src/Scaffold/Console/CreateSettings.php new file mode 100644 index 000000000..2c08338f9 --- /dev/null +++ b/src/Scaffold/Console/CreateSettings.php @@ -0,0 +1,73 @@ + 'models/{{studly_name}}.php', + 'settings/fields.stub' => 'models/{{lower_name}}/fields.yaml' + ]; + + /** + * Prepare variables for stubs. + * + * return @array + */ + protected function prepareVars() + { + $pluginCode = $this->argument('plugin'); + + $parts = explode('.', $pluginCode); + $plugin = array_pop($parts); + $author = array_pop($parts); + $settings = $this->argument('settings') ?? 'Settings'; + + return [ + 'name' => $settings, + 'author' => $author, + 'plugin' => $plugin + ]; + } + + /** + * Get the console command arguments. + * + * @return array + */ + protected function getArguments() + { + return [ + ['plugin', InputArgument::REQUIRED, 'The name of the plugin. Eg: Winter.Blog'], + ['settings', InputArgument::OPTIONAL, 'The name of the settings model. Eg: Settings'], + ]; + } +} diff --git a/src/Scaffold/Console/settings/fields.stub b/src/Scaffold/Console/settings/fields.stub new file mode 100644 index 000000000..0fd195a0a --- /dev/null +++ b/src/Scaffold/Console/settings/fields.stub @@ -0,0 +1,7 @@ +# =================================== +# Form Field Definitions +# =================================== + +fields: + settings_option: + label: This is a sample settings used by {{author}}.{{plugin}} diff --git a/src/Scaffold/Console/settings/model.stub b/src/Scaffold/Console/settings/model.stub new file mode 100644 index 000000000..740e775a9 --- /dev/null +++ b/src/Scaffold/Console/settings/model.stub @@ -0,0 +1,31 @@ + CreateTheme::class, 'command.create.plugin' => CreatePlugin::class, 'command.create.model' => CreateModel::class, + 'command.create.settings' => CreateSettings::class, 'command.create.controller' => CreateController::class, 'command.create.component' => CreateComponent::class, 'command.create.formwidget' => CreateFormWidget::class, @@ -42,6 +44,7 @@ public function register() 'command.create.theme', 'command.create.plugin', 'command.create.model', + 'command.create.settings', 'command.create.controller', 'command.create.component', 'command.create.formwidget', @@ -63,6 +66,7 @@ public function provides() 'command.create.theme', 'command.create.plugin', 'command.create.model', + 'command.create.settings', 'command.create.controller', 'command.create.component', 'command.create.formwidget', From f221d6a39aa16defbd9a9f8897518699960aae1d Mon Sep 17 00:00:00 2001 From: Luke Towers Date: Tue, 5 Oct 2021 23:50:54 -0600 Subject: [PATCH 6/7] Update src/Scaffold/Console/settings/fields.stub --- src/Scaffold/Console/settings/fields.stub | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Scaffold/Console/settings/fields.stub b/src/Scaffold/Console/settings/fields.stub index 0fd195a0a..7a890bd71 100644 --- a/src/Scaffold/Console/settings/fields.stub +++ b/src/Scaffold/Console/settings/fields.stub @@ -4,4 +4,4 @@ fields: settings_option: - label: This is a sample settings used by {{author}}.{{plugin}} + label: This is a sample settings field used by {{author}}.{{plugin}} From 84f406c264141573e5a729d47913034784a613eb Mon Sep 17 00:00:00 2001 From: Luke Towers Date: Tue, 5 Oct 2021 23:51:19 -0600 Subject: [PATCH 7/7] Update src/Scaffold/Console/CreateSettings.php --- src/Scaffold/Console/CreateSettings.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Scaffold/Console/CreateSettings.php b/src/Scaffold/Console/CreateSettings.php index 2c08338f9..a9bf99b83 100644 --- a/src/Scaffold/Console/CreateSettings.php +++ b/src/Scaffold/Console/CreateSettings.php @@ -28,7 +28,7 @@ class CreateSettings extends GeneratorCommand protected $type = 'Settings Model'; /** - * A mapping of stub to generated file. + * A mapping of stubs to generated files. * * @var array */