From 2b19e933b97dbf345487e742ebe6da8b908e44bb Mon Sep 17 00:00:00 2001 From: Konstantin Myakshin Date: Mon, 13 May 2024 01:05:08 +0300 Subject: [PATCH] Use text editor for editing question description Signed-off-by: Konstantin Myakshin --- lib/AppInfo/Application.php | 3 + .../BeforeTemplateRenderedListener.php | 26 +++++++ src/components/Questions/Question.vue | 73 ++++++++++++++++--- src/views/Create.vue | 69 ++++++++++++++---- 4 files changed, 144 insertions(+), 27 deletions(-) create mode 100644 lib/Listener/BeforeTemplateRenderedListener.php diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 095ac6683..478464a01 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -30,11 +30,13 @@ use OCA\Forms\Capabilities; use OCA\Forms\FormsMigrator; +use OCA\Forms\Listener\BeforeTemplateRenderedListener; use OCA\Forms\Listener\UserDeletedListener; use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootstrap; use OCP\AppFramework\Bootstrap\IRegistrationContext; +use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent; use OCP\User\Events\UserDeletedEvent; class Application extends App implements IBootstrap { @@ -59,6 +61,7 @@ public function register(IRegistrationContext $context): void { $context->registerCapability(Capabilities::class); $context->registerEventListener(UserDeletedEvent::class, UserDeletedListener::class); $context->registerUserMigrator(FormsMigrator::class); + $context->registerEventListener(BeforeTemplateRenderedEvent::class, BeforeTemplateRenderedListener::class); } /** diff --git a/lib/Listener/BeforeTemplateRenderedListener.php b/lib/Listener/BeforeTemplateRenderedListener.php new file mode 100644 index 000000000..c82fa2ee4 --- /dev/null +++ b/lib/Listener/BeforeTemplateRenderedListener.php @@ -0,0 +1,26 @@ + */ +class BeforeTemplateRenderedListener implements IEventListener { + public function __construct(private IEventDispatcher $eventDispatcher) { + } + + public function handle(Event $event): void { + if (!($event instanceof BeforeTemplateRenderedEvent)) { + return; + } + + $isFormsResponse = $event->getResponse()->getApp() === \OCA\Forms\AppInfo\Application::APP_ID; + if ($isFormsResponse && class_exists(LoadEditor::class)) { + $this->eventDispatcher->dispatchTyped(new LoadEditor()); + } + } +} diff --git a/src/components/Questions/Question.vue b/src/components/Questions/Question.vue index 49d52c66e..2c108e364 100644 --- a/src/components/Questions/Question.vue +++ b/src/components/Questions/Question.vue @@ -127,16 +127,24 @@
-