action = $action; $this->context = $context; $this->locales = $this->getLocales($context); $this->addField(new FieldRichText('title', [ 'label' => __('common.title'), 'isMultilingual' => true, ])) ->addField(new FieldRichText('description', [ 'label' => __('common.description'), 'isMultilingual' => true, ])) ->addField(new FieldText('url', [ 'label' => __('common.url'), 'description' => __('manager.highlights.url.description'), 'size' => 'large', ])) ->addField(new FieldText('urlText', [ 'label' => __('manager.highlights.urlText'), 'description' => __('manager.highlights.urlText.description'), 'size' => 'small', 'isMultilingual' => true, ])) ->addField(new FieldUploadImage('image', [ 'label' => __('manager.highlights.image'), 'baseUrl' => $baseUrl, 'options' => [ 'url' => $temporaryFileApiUrl, ], ])); } /** * Get the locales formatted for display in the form */ protected function getLocales(?Context $context = null): array { $localeNames = $this?->context?->getSupportedFormLocaleNames() ?? Application::get()->getRequest()->getSite()->getSupportedLocaleNames(); return array_map(fn (string $locale, string $name) => ['key' => $locale, 'label' => $name], array_keys($localeNames), $localeNames); } }