Create Event for jot_tool hook

This commit is contained in:
Art4 2025-02-14 08:12:59 +00:00
parent 674ad96b69
commit 7260f29292
6 changed files with 32 additions and 16 deletions

View file

@ -11,7 +11,6 @@ use Friendica\App\Arguments;
use Friendica\App\BaseURL;
use Friendica\App\Mode;
use Friendica\App\Page;
use Friendica\AppHelper;
use Friendica\BaseModule;
use Friendica\Core\ACL;
use Friendica\Core\Config\Capability\IManageConfigValues;
@ -23,6 +22,7 @@ use Friendica\Core\Renderer;
use Friendica\Core\Session\Capability\IHandleUserSessions;
use Friendica\Core\Theme;
use Friendica\Database\DBA;
use Friendica\Event\HtmlFilterEvent;
use Friendica\Model\Contact;
use Friendica\Model\Item as ItemModel;
use Friendica\Model\Post;
@ -42,6 +42,7 @@ use Friendica\Util\Profiler;
use Friendica\Util\Strings;
use Friendica\Util\Temporal;
use ImagickException;
use Psr\EventDispatcher\EventDispatcherInterface;
use Psr\Log\LoggerInterface;
class Conversation
@ -75,8 +76,6 @@ class Conversation
private $baseURL;
/** @var IManageConfigValues */
private $config;
/** @var AppHelper */
private $appHelper;
/** @var Page */
private $page;
/** @var Mode */
@ -85,8 +84,9 @@ class Conversation
private $session;
/** @var UserGServerRepository */
private $userGServer;
private EventDispatcherInterface $eventDispatcher;
public function __construct(UserGServerRepository $userGServer, LoggerInterface $logger, Profiler $profiler, Activity $activity, L10n $l10n, Item $item, Arguments $args, BaseURL $baseURL, IManageConfigValues $config, IManagePersonalConfigValues $pConfig, Page $page, Mode $mode, AppHelper $appHelper, IHandleUserSessions $session)
public function __construct(UserGServerRepository $userGServer, LoggerInterface $logger, Profiler $profiler, Activity $activity, L10n $l10n, Item $item, Arguments $args, BaseURL $baseURL, IManageConfigValues $config, IManagePersonalConfigValues $pConfig, Page $page, Mode $mode, EventDispatcherInterface $eventDispatcher, IHandleUserSessions $session)
{
$this->activity = $activity;
$this->item = $item;
@ -99,7 +99,7 @@ class Conversation
$this->args = $args;
$this->pConfig = $pConfig;
$this->page = $page;
$this->appHelper = $appHelper;
$this->eventDispatcher = $eventDispatcher;
$this->session = $session;
$this->userGServer = $userGServer;
}
@ -332,8 +332,9 @@ class Conversation
'$is_mobile' => $this->mode->isMobile(),
]);
$jotplugins = '';
Hook::callAll('jot_tool', $jotplugins);
$jotplugins = $this->eventDispatcher->dispatch(
new HtmlFilterEvent(HtmlFilterEvent::JOT_TOOL, ''),
)->getHtml();
if ($this->config->get('system', 'set_creation_date')) {
$created_at = Temporal::getDateTimeField(

View file

@ -53,6 +53,7 @@ final class HookEventBridge
HtmlFilterEvent::PAGE_HEADER => 'page_header',
HtmlFilterEvent::PAGE_CONTENT_TOP => 'page_content_top',
HtmlFilterEvent::PAGE_END => 'page_end',
HtmlFilterEvent::JOT_TOOL => 'jot_tool',
];
/**
@ -79,6 +80,7 @@ final class HookEventBridge
HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent',
HtmlFilterEvent::PAGE_CONTENT_TOP => 'onHtmlFilterEvent',
HtmlFilterEvent::PAGE_END => 'onHtmlFilterEvent',
HtmlFilterEvent::JOT_TOOL => 'onHtmlFilterEvent',
];
}

View file

@ -26,6 +26,8 @@ final class HtmlFilterEvent extends Event
public const PAGE_END = 'friendica.html.page_end';
public const JOT_TOOL = 'friendica.html.jot_tool';
private string $html;
public function __construct(string $name, string $html)

View file

@ -16,13 +16,13 @@ use Friendica\BaseModule;
use Friendica\Content\Feature;
use Friendica\Core\ACL;
use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Core\Hook;
use Friendica\Core\L10n;
use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues;
use Friendica\Core\Renderer;
use Friendica\Core\Session\Model\UserSession;
use Friendica\Core\Theme;
use Friendica\Database\DBA;
use Friendica\Event\HtmlFilterEvent;
use Friendica\Model\Contact;
use Friendica\Model\Item;
use Friendica\Model\User;
@ -34,6 +34,7 @@ use Friendica\Util\ACLFormatter;
use Friendica\Util\Crypto;
use Friendica\Util\Profiler;
use Friendica\Util\Temporal;
use Psr\EventDispatcher\EventDispatcherInterface;
use Psr\Log\LoggerInterface;
class Compose extends BaseModule
@ -59,8 +60,9 @@ class Compose extends BaseModule
/** @var AppHelper */
private $appHelper;
private EventDispatcherInterface $eventDispatcher;
public function __construct(AppHelper $appHelper, UserSession $session, IManageConfigValues $config, IManagePersonalConfigValues $pConfig, Page $page, ACLFormatter $ACLFormatter, SystemMessages $systemMessages, L10n $l10n, BaseURL $baseUrl, Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = [])
public function __construct(EventDispatcherInterface $eventDispatcher, AppHelper $appHelper, UserSession $session, IManageConfigValues $config, IManagePersonalConfigValues $pConfig, Page $page, ACLFormatter $ACLFormatter, SystemMessages $systemMessages, L10n $l10n, BaseURL $baseUrl, Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = [])
{
parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
@ -71,6 +73,7 @@ class Compose extends BaseModule
$this->config = $config;
$this->session = $session;
$this->appHelper = $appHelper;
$this->eventDispatcher = $eventDispatcher;
}
protected function post(array $request = [])
@ -153,8 +156,9 @@ class Compose extends BaseModule
$location = $_REQUEST['location'] ?? $user['default-location'];
$wall = $_REQUEST['wall'] ?? $type == 'post';
$jotplugins = '';
Hook::callAll('jot_tool', $jotplugins);
$jotplugins = $this->eventDispatcher->dispatch(
new HtmlFilterEvent(HtmlFilterEvent::JOT_TOOL, ''),
)->getHtml();
// Output
$this->page->registerFooterScript(Theme::getPathForFile('js/ajaxupload.js'));

View file

@ -15,10 +15,10 @@ use Friendica\App\Page;
use Friendica\AppHelper;
use Friendica\BaseModule;
use Friendica\Content\Feature;
use Friendica\Core\Hook;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Core\Session\Capability\IHandleUserSessions;
use Friendica\Event\HtmlFilterEvent;
use Friendica\Model\Contact;
use Friendica\Model\Post;
use Friendica\Model\User;
@ -27,6 +27,7 @@ use Friendica\Navigation\SystemMessages;
use Friendica\Network\HTTPException;
use Friendica\Util\Crypto;
use Friendica\Util\Profiler;
use Psr\EventDispatcher\EventDispatcherInterface;
use Psr\Log\LoggerInterface;
/**
@ -44,10 +45,13 @@ class Edit extends BaseModule
protected $mode;
/** @var AppHelper */
protected $appHelper;
private EventDispatcherInterface $eventDispatcher;
/** @var bool */
protected $isModal = false;
public function __construct(L10n $l10n, BaseURL $baseUrl, Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, IHandleUserSessions $session, SystemMessages $sysMessages, Page $page, Mode $mode, AppHelper $appHelper, array $server, array $parameters = [])
public function __construct(L10n $l10n, BaseURL $baseUrl, Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, IHandleUserSessions $session, SystemMessages $sysMessages, Page $page, Mode $mode, AppHelper $appHelper, EventDispatcherInterface $eventDispatcher, array $server, array $parameters = [])
{
parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
@ -56,6 +60,7 @@ class Edit extends BaseModule
$this->page = $page;
$this->mode = $mode;
$this->appHelper = $appHelper;
$this->eventDispatcher = $eventDispatcher;
}
@ -109,9 +114,9 @@ class Edit extends BaseModule
$item['body'] = Post\Media::addAttachmentsToBody($item['uri-id'], $item['body']);
$item = Post\Media::addHTMLAttachmentToItem($item);
$jotplugins = '';
Hook::callAll('jot_tool', $jotplugins);
$jotplugins = $this->eventDispatcher->dispatch(
new HtmlFilterEvent(HtmlFilterEvent::JOT_TOOL, ''),
)->getHtml();
$output .= Renderer::replaceMacros(Renderer::getMarkupTemplate('jot.tpl'), [
'$is_edit' => true,

View file

@ -42,6 +42,7 @@ class HookEventBridgeTest extends TestCase
HtmlFilterEvent::PAGE_HEADER => 'onHtmlFilterEvent',
HtmlFilterEvent::PAGE_CONTENT_TOP => 'onHtmlFilterEvent',
HtmlFilterEvent::PAGE_END => 'onHtmlFilterEvent',
HtmlFilterEvent::JOT_TOOL => 'onHtmlFilterEvent',
];
$this->assertSame(
@ -196,6 +197,7 @@ class HookEventBridgeTest extends TestCase
[HtmlFilterEvent::PAGE_HEADER, 'page_header'],
[HtmlFilterEvent::PAGE_CONTENT_TOP, 'page_content_top'],
[HtmlFilterEvent::PAGE_END, 'page_end'],
[HtmlFilterEvent::JOT_TOOL, 'jot_tool'],
];
}