js(__DIR__.'/js/dist/forum.js') ->css(__DIR__.'/less/forum.less'), (new Extend\Frontend('admin')) ->js(__DIR__.'/js/dist/admin.js'), new Extend\Locales(__DIR__.'/locale'), (new Extend\Model(Discussion::class)) ->cast('is_sticky', 'bool'), (new Extend\Post()) ->type(DiscussionStickiedPost::class), (new Extend\ApiResource(Resource\DiscussionResource::class)) ->fields(DiscussionResourceFields::class) ->endpoint(Endpoint\Index::class, function (Endpoint\Index $endpoint): Endpoint\Index { return $endpoint->addDefaultInclude(['firstPost']); }), (new Extend\Event()) ->listen(DiscussionWasStickied::class, [Listener\CreatePostWhenDiscussionIsStickied::class, 'whenDiscussionWasStickied']) ->listen(DiscussionWasUnstickied::class, [Listener\CreatePostWhenDiscussionIsStickied::class, 'whenDiscussionWasUnstickied']), (new Extend\SearchDriver(DatabaseSearchDriver::class)) ->addFilter(DiscussionSearcher::class, StickyFilter::class) ->addMutator(DiscussionSearcher::class, PinStickiedDiscussionsToTop::class), ];