violet88/silverstripe-tinymce-premium

一个SilverStripe模块,用于在SilverStripe中集成TinyMCE高级插件,包括添加JavaScript函数作为配置选项。

安装: 5

依赖项: 0

建议者: 0

安全: 0

星级: 0

关注者: 1

分支: 0

开放问题: 0

类型:silverstripe-vendormodule

1.1.1 2023-11-16 12:39 UTC

This package is auto-updated.

Last update: 2024-09-16 14:39:34 UTC


README

本模块提供了一种使用自己的TinyMCE Cloud API密钥与SilverStripe TinyMCE字段一起使用的方法,包括使用JavaScript作为配置值。

要求

安装

使用composer安装此模块。

composer require violet88/silverstripe-tinymce-premium

配置

TinyMCE

模块需要配置TinyMCE Cloud API密钥。在使用API密钥之前,请确保批准您的域名。您的API密钥可以在TinyMCE Cloud控制台中找到。

SilverStripe

配置文件

您可以在tinymce.yml文件中配置您的云API密钥。

---
name: tinymce-premium
---

Violet88\TinyMCE\TinyMCEPremiumHandler:
    api_key: # Your TinyMCE Cloud API key

此外,您还可以在tinymce.yml文件中配置TinyMCE Premium插件选项。如果您不知道自己在做什么,请不要这样做,默认选项已配置为与SilverStripe 4协同工作。

Violet88\TinyMCE\TinyMCEPremiumHandler:
    tinymce_version: 4                      # TinyMCE version
    tinymce_cdn: "https://cdn.tiny.cloud/1" # TinyMCE CDN

环境变量

此外,您还可以使用环境变量配置上述所有内容。如果您想在多个环境中使用相同的配置,这很有用。环境变量以TINYMCE_PREMIUM_为前缀,并且全部为大写。必须配置api_key环境变量。

TINYMCE_PREMIUM_API_KEY="your-api-key"
TINYMCE_PREMIUM_TINYMCE_VERSION="4"
TINYMCE_PREMIUM_TINYMCE_CDN="https://cdn.tiny.cloud/1"

环境变量始终优先于配置文件。

用法

可以在_config.php文件中使用此模块来启用TinyMCE高级插件并设置JavaScript配置值。

启用高级插件

启用高级插件就像启用任何其他插件一样简单。以下示例启用了tinymcespellcheckeradvcodementions插件。

$editorConfig = HTMLEditorConfig::get('cms');

if ($editorConfig instanceof TinyMCEConfig) {
    $handler = TinyMCEPremiumHandler::create();

    $editorConfig->enablePlugins([
        'tinymcespellchecker' => $handler->getPluginUrl('tinymcespellchecker'),
        'advcode' => $handler->getPluginUrl('advcode'),
        'mentions' => $handler->getPluginUrl('mentions')
    ]);
}

设置JavaScript配置值

大多数高级插件允许您设置回调和其他JavaScript配置值。由于这在内置的基于PHP的SilverStripe TinyMCE配置管理器中不是原生支持的,因此此模块提供了一种使用setJsConfig方法设置JavaScript配置值的方法。以下示例将mentions插件配置值mentions_fetch设置为演示回调。

$editorConfig = HTMLEditorConfig::get('cms');

if ($editorConfig instanceof TinyMCEConfig) {
    $handler = TinyMCEPremiumHandler::create();

    $editorConfig->enablePlugins([
        'mentions' => $handler->getPluginUrl('mentions')
    ]);

    $handler->setJsOptions([
        'mentions_fetch' => <<<JS
            function (query, success) {
                // Fetch your full user list from somewhere
                var users = [
                    { id: '1', name: 'wyatt', fullName: 'Wyatt Wilson' },
                    { id: '2', name: 'gabriel', fullName: 'Gabriel Brown' },
                    { id: '3', name: 'hazel', fullName: 'Hazel Lee' },
                    { id: '4', name: 'owen', fullName: 'Owen Johnson' },
                    { id: '5', name: 'lily', fullName: 'Lily Davis' },
                ];

                users = users.filter(function (user) {
                    return user.name.toLowerCase().indexOf(query.term.toLowerCase()) !== -1;
                });

                window.setTimeout(function () {
                    success(users);
                }, 0);
            }
            JS
    ]);
}