diff --git a/apps/files/src/components/TemplateFiller.vue b/apps/files/src/components/TemplateFiller.vue index 926bcdd4dfd..bd3c28d585f 100644 --- a/apps/files/src/components/TemplateFiller.vue +++ b/apps/files/src/components/TemplateFiller.vue @@ -9,11 +9,8 @@

{{ t('files', 'Fill template fields') }}

-
- +
@@ -29,11 +26,12 @@ - + + diff --git a/apps/files/src/components/TemplateFiller/TemplateTextField.vue b/apps/files/src/components/TemplateFiller/TemplateRichTextField.vue similarity index 84% rename from apps/files/src/components/TemplateFiller/TemplateTextField.vue rename to apps/files/src/components/TemplateFiller/TemplateRichTextField.vue index b58e17971c7..7246b2743d6 100644 --- a/apps/files/src/components/TemplateFiller/TemplateTextField.vue +++ b/apps/files/src/components/TemplateFiller/TemplateRichTextField.vue @@ -15,7 +15,7 @@ :label="fieldLabel" :label-outside="true" :placeholder="field.content" - @input="$emit('input', [value, field.index])" /> + @input="input" /> @@ -24,7 +24,7 @@ import { defineComponent } from 'vue' import { NcTextField } from '@nextcloud/vue' export default defineComponent({ - name: 'TemplateTextField', + name: 'TemplateRichTextField', components: { NcTextField, @@ -53,6 +53,16 @@ export default defineComponent({ return 'text-field' + this.field.index }, }, + + methods: { + input() { + this.$emit('input', { + index: this.field.index, + property: 'content', + value: this.value, + }) + }, + }, }) diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index 4094e647204..e9e685da5d7 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -439,7 +439,10 @@ return array( 'OCP\\Files\\Storage\\IWriteStreamStorage' => $baseDir . '/lib/public/Files/Storage/IWriteStreamStorage.php', 'OCP\\Files\\Template\\BeforeGetTemplatesEvent' => $baseDir . '/lib/public/Files/Template/BeforeGetTemplatesEvent.php', 'OCP\\Files\\Template\\Field' => $baseDir . '/lib/public/Files/Template/Field.php', + 'OCP\\Files\\Template\\FieldFactory' => $baseDir . '/lib/public/Files/Template/FieldFactory.php', 'OCP\\Files\\Template\\FieldType' => $baseDir . '/lib/public/Files/Template/FieldType.php', + 'OCP\\Files\\Template\\Fields\\CheckBoxField' => $baseDir . '/lib/public/Files/Template/Fields/CheckBoxField.php', + 'OCP\\Files\\Template\\Fields\\RichTextField' => $baseDir . '/lib/public/Files/Template/Fields/RichTextField.php', 'OCP\\Files\\Template\\FileCreatedFromTemplateEvent' => $baseDir . '/lib/public/Files/Template/FileCreatedFromTemplateEvent.php', 'OCP\\Files\\Template\\ICustomTemplateProvider' => $baseDir . '/lib/public/Files/Template/ICustomTemplateProvider.php', 'OCP\\Files\\Template\\ITemplateManager' => $baseDir . '/lib/public/Files/Template/ITemplateManager.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index 24608983d25..07c5d32b0a2 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -472,7 +472,10 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2 'OCP\\Files\\Storage\\IWriteStreamStorage' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/IWriteStreamStorage.php', 'OCP\\Files\\Template\\BeforeGetTemplatesEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Template/BeforeGetTemplatesEvent.php', 'OCP\\Files\\Template\\Field' => __DIR__ . '/../../..' . '/lib/public/Files/Template/Field.php', + 'OCP\\Files\\Template\\FieldFactory' => __DIR__ . '/../../..' . '/lib/public/Files/Template/FieldFactory.php', 'OCP\\Files\\Template\\FieldType' => __DIR__ . '/../../..' . '/lib/public/Files/Template/FieldType.php', + 'OCP\\Files\\Template\\Fields\\CheckBoxField' => __DIR__ . '/../../..' . '/lib/public/Files/Template/Fields/CheckBoxField.php', + 'OCP\\Files\\Template\\Fields\\RichTextField' => __DIR__ . '/../../..' . '/lib/public/Files/Template/Fields/RichTextField.php', 'OCP\\Files\\Template\\FileCreatedFromTemplateEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Template/FileCreatedFromTemplateEvent.php', 'OCP\\Files\\Template\\ICustomTemplateProvider' => __DIR__ . '/../../..' . '/lib/public/Files/Template/ICustomTemplateProvider.php', 'OCP\\Files\\Template\\ITemplateManager' => __DIR__ . '/../../..' . '/lib/public/Files/Template/ITemplateManager.php', diff --git a/lib/public/Files/Template/Field.php b/lib/public/Files/Template/Field.php index ce0ed3176d9..dd65ef857ea 100644 --- a/lib/public/Files/Template/Field.php +++ b/lib/public/Files/Template/Field.php @@ -12,37 +12,35 @@ namespace OCP\Files\Template; /** * @since 30.0.0 */ -class Field implements \JsonSerializable { - private string $index; - private string $content; - private FieldType $type; - private ?string $alias; - private ?int $id; - private ?string $tag; +abstract class Field implements \JsonSerializable { + public ?string $alias = null; + public ?string $tag = null; + public ?int $id = null; /** * @since 30.0.0 */ - public function __construct(string $index, string $content, FieldType $type, ?string $alias = null, ?int $id = null, ?string $tag = null) { - $this->index = $index; - $this->alias = $alias; - $this->type = $type; - $this->id = $id; - $this->tag = $tag; - $this->content = $content; + public function __construct( + private string $index, + private FieldType $type + ) { } + /** + * @since 30.0.0 + */ + abstract public function setValue(mixed $value): void; + /** * @since 30.0.0 */ public function jsonSerialize(): array { return [ - "index" => $this->index, - "content" => $this->content, - "type" => $this->type->value, - "alias" => $this->alias, - "id" => $this->id, - "tag" => $this->tag, + 'index' => $this->index, + 'type' => $this->type->value, + 'alias' => $this->alias, + 'tag' => $this->tag, + 'id' => $this->id, ]; } } diff --git a/lib/public/Files/Template/FieldFactory.php b/lib/public/Files/Template/FieldFactory.php new file mode 100644 index 00000000000..4c0fff6b46f --- /dev/null +++ b/lib/public/Files/Template/FieldFactory.php @@ -0,0 +1,32 @@ + new RichTextField($index, $type), + FieldType::CheckBox => new CheckBoxField($index, $type), + default => throw new InvalidFieldTypeException(), + }; + } +} diff --git a/lib/public/Files/Template/Fields/CheckBoxField.php b/lib/public/Files/Template/Fields/CheckBoxField.php new file mode 100644 index 00000000000..48ccb04336a --- /dev/null +++ b/lib/public/Files/Template/Fields/CheckBoxField.php @@ -0,0 +1,47 @@ +checked = $value; + } + + /** + * @since 30.0.0 + */ + public function jsonSerialize(): array { + $jsonProperties = parent::jsonSerialize(); + + return array_merge($jsonProperties, ['checked' => $this->checked]); + } +} diff --git a/lib/public/Files/Template/Fields/RichTextField.php b/lib/public/Files/Template/Fields/RichTextField.php new file mode 100644 index 00000000000..14539bc9dbd --- /dev/null +++ b/lib/public/Files/Template/Fields/RichTextField.php @@ -0,0 +1,47 @@ +content = $value; + } + + /** + * @since 30.0.0 + */ + public function jsonSerialize(): array { + $jsonProperties = parent::jsonSerialize(); + + return array_merge($jsonProperties, ['content' => $this->content]); + } +}