action = $action; $this->locales = $locales; $this->context = $context; $announcementTypeOptions = $this->getAnnouncementTypeOptions(); $this->addField(new FieldText('title', [ 'label' => __('common.title'), 'size' => 'large', 'isMultilingual' => true, ])) ->addField(new FieldRichTextarea('descriptionShort', [ 'label' => __('manager.announcements.form.descriptionShort'), 'description' => __('manager.announcements.form.descriptionShortInstructions'), 'isMultilingual' => true, ])) ->addField(new FieldRichTextarea('description', [ 'label' => __('manager.announcements.form.description'), 'description' => __('manager.announcements.form.descriptionInstructions'), 'isMultilingual' => true, 'size' => 'large', 'toolbar' => 'bold italic superscript subscript | link | blockquote bullist numlist', 'plugins' => 'paste,link,lists', ])); if (Config::getVar('features', 'announcement_images')) { $this->addField(new FieldUploadImage('image', [ 'label' => __('manager.image'), 'baseUrl' => $baseUrl, 'options' => [ 'url' => $temporaryFileApiUrl, ], ])); } $this->addField(new FieldText('dateExpire', [ 'label' => __('manager.announcements.form.dateExpire'), 'description' => __('manager.announcements.form.dateExpireInstructions'), 'size' => 'small', ])); if (!empty($announcementTypeOptions)) { $this->addField(new FieldOptions('typeId', [ 'label' => __('manager.announcementTypes.typeName'), 'type' => 'radio', 'options' => $announcementTypeOptions, ])); } $this->addField(new FieldOptions('sendEmail', [ 'label' => __('common.sendEmail'), 'options' => [ [ 'value' => true, 'label' => __('notification.sendNotificationConfirmation') ] ] ])); } protected function getAnnouncementTypeOptions(): array { /** @var AnnouncementTypeDAO */ $announcementTypeDao = DAORegistry::getDAO('AnnouncementTypeDAO'); $announcementTypes = $announcementTypeDao->getByContextId($this->context?->getId()); $announcementTypeOptions = []; foreach ($announcementTypes as $announcementType) { $announcementTypeOptions[] = [ 'value' => (int) $announcementType->getId(), 'label' => $announcementType->getLocalizedTypeName(), ]; } return $announcementTypeOptions; } }