Link Search Menu Expand Document

class Sivujetti\UserPlugin\UserPluginAPI

Luokka, joka passataan automaattisesti lisäosien pääluokille ${SIVUJETTI_PLUGINS_PATH}MyPrefixMyPlugin/MyPrefixMyPlugin.php (/path/to/backend/plugins/MyPrefixMyPlugin/MyPrefixMyPlugin.php).

Synopsis

final class UserPluginAPI extends UserSiteAPI {

    /* Metodit */
    public registerHttpRoute(string $method, string $url, string $ctrlClassPath, string $ctrlMethodName): void
    public getCurrentLang(): string
    public enqueueCssFile(string $url, array<string, string> $attrs = []): void
    public enqueueJsFile(string $url, array<string, string> $attrs = []): void
    public registerBlockType(string $name, BlockTypeInterface $instance): void
    public enqueueEditAppJsFile(string $url): void
    public registerBlockRenderer(string $fileId, ?string $friendlyName = null, ?string $for = null): void

    /* Perityt metodit */
    public UserSiteAPI::on(string $when, callable $thenDo): int
    public UserSiteAPI::isCssFileEnqueued(string $url): bool
    public UserSiteAPI::isJsFileEnqueued(string $url): bool
    public UserSiteAPI::registerBlockRenderer(string $fileId, ?string $friendlyName = null, ?string $for = null): void
    public UserSiteAPI::getPlugin(string $name): ?UserPluginInterface
}

Metodit

registerHttpRoute()

… Katso myös :

Signature

public function registerHttpRoute(string $method, string $url, string $ctrlClassPath, string $ctrlMethodName): void

Esimerkit

...
final class JetForms implements UserPluginInterface {
    ...
    public function __construct(UserPluginAPI $api) {
        ...
        $api->registerHttpRoute("POST", "/plugins/jet-forms/submissions/[w:blockId]/[w:pageSlug]",
            SubmissionsController::class, "handleSubmission"
        );
    }
}

getCurrentLang()

Signature

public function getCurrentLang(): string

Esimerkit

echo $api->getCurrentLang(); // "fi"

enqueueCssFile()

Sama kuin UserSiteAPI::enqueueCssFile(), mutta hyväksyy vain tämän lisäosan slugifioidulla nimiavaruudella (plugin-my-prefix-my-plugin) alkavat urlit.

Signature

public function enqueueCssFile(string $url, array<string, string> $attrs = []): void

Esimerkit

final class JetForms implements UserPluginInterface {
    ...
    public function __construct(UserPluginAPI $api) {
        ...
        $api->on($api::ON_PAGE_BEFORE_RENDER, function (Page $page) use ($api) {
            if (!BlockTree::findBlock($page->blocks, fn($b) => $b->type === ContactFormBlockType::NAME ||
                                                                $b->type === SubscriptionFormBlockType::NAME))
                return;
            if (!$api->isCssFileEnqueued("sivujetti/vendor/pristine.css"))
                $api->enqueueCssFile("sivujetti/vendor/pristine.css");
            if (!$api->isCssFileEnqueued("plugin-jet-forms-foo.css"))
                $api->enqueueCssFile("plugin-jet-forms-foo.css");
            ...
        });
    }
}

enqueueJsFile()

Sama kuin UserSiteAPI::enqueueJsFile(), mutta hyväksyy vain tämän lisäosan slugifioidulla nimiavaruudella (plugin-my-prefix-my-plugin) alkavat urlit.

Signature

public function enqueueJsFile(string $url, array<string, string> $attrs = []): void

Esimerkit

final class JetForms implements UserPluginInterface {
    ...
    public function __construct(UserPluginAPI $api) {
        ...
        $api->on($api::ON_PAGE_BEFORE_RENDER, function (Page $page) use ($api) {
            if (!BlockTree::findBlock($page->blocks, fn($b) => $b->type === ContactFormBlockType::NAME ||
                                                                $b->type === SubscriptionFormBlockType::NAME))
                return;
            if (!$api->isJsFileEnqueued("sivujetti/vendor/pristine.min.js"))
                $api->enqueueJsFile("sivujetti/vendor/pristine.min.js");
            if (!$api->isJsFileEnqueued("plugin-jet-forms-bundle.js"))
                $api->enqueueJsFile("plugin-jet-forms-bundle.js");
            ...
        });
    }
}

registerBlockType()

Sama kuin UserSiteAPI::registerBlockType(), mutta hyväksyy vain tämän lisäosan nimiavaruudella (PluginMyPrefixMyPlugin) alkavat nimet.

Signature

public function registerBlockType(string $name, BlockTypeInterface $instance): void

Esimerkit

class ContactFormBlockType implements BlockTypeInterface {
    public const NAME = "JetFormsContactForm";
    public function defineProperties(PropertiesBuilder $builder): \ArrayObject {
        return $builder
            ->newProperty("property", $builder::DATA_TYPE_TEXT)
            ->getResult();
    }
}
final class JetForms implements UserPluginInterface {
    ...
    public function __construct(UserPluginAPI $api) {
        $api->on($api::ON_ROUTE_CONTROLLER_BEFORE_EXEC, function () use ($api) {
            $api->registerBlockType(ContactFormBlockType::NAME, new ContactFormBlockType);
        });
        ...
    }
}

enqueueEditAppJsFile()

Sama kuin UserSiteAPI::enqueueEditAppJsFile(), mutta hyväksyy vain tämän lisäosan slugifioidulla nimiavaruudella (plugin-my-prefix-my-plugin) alkavat urlit.

Signature

public function enqueueEditAppJsFile(string $url): void

Esimerkit

final class JetForms implements UserPluginInterface {
    public function __construct(UserPluginAPI $api) {
        $api->on($api::ON_ROUTE_CONTROLLER_BEFORE_EXEC, function () use ($api) {
            ...
            $api->enqueueEditAppJsFile("plugin-jet-forms-edit-app-bundle.js");
        });
    }
}

registerBlockRenderer()

Sama kuin UserSiteAPI::registerBlockRenderer(), mutta hyväksyy vain tämän lisäosan slugifioidulla nimiavaruudella (my-prefix-my-plugin) alkavat fileId:t.

Signature

public function registerBlockRenderer(string $fileId, ?string $friendlyName = null, ?string $for = null): void

Esimerkit

...

© Copyright 2021-present ut4 (CC BY-SA).