zawiszaty/tinymce-bundle

此Bundle将TinyMCE WYSIWYG编辑器集成到Symfony2项目中。

安装: 10

依赖者: 0

建议者: 0

安全: 0

星级: 0

关注者: 2

分支: 155

类型:symfony-bundle

2.4.0 2018-11-26 15:46 UTC

README

此Bundle可以让您轻松地将TinyMCE WYSIWYG编辑器添加到您的Symfony2项目中。

安装

选择合适的版本

注意!要升级配置,请阅读UPGRADE.md

使用composer将TinyMCE bundle添加为您的应用程序的依赖项。

$ php composer.phar require stfalcon/tinymce-bundle='X.Y'

将StfalconTinymceBundle添加到您的应用程序内核中。

// app/AppKernel.php
<?php
    // ...
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new Stfalcon\Bundle\TinymceBundle\StfalconTinymceBundle(),
        );
    }

该Bundle需要将必要的资源复制到web文件夹中。您可以使用以下命令:

$ php app/console assets:install web/

包含在模板中

此Bundle附带一个用于Twig的扩展,这使得将TinyMCE JavaScript包含到页面中变得非常简单。将以下标签添加到您想使用TinyMCE的位置。它将输出完整的JavaScript,包括<script>标签。将其添加到页面的底部以优化性能。

    {{ tinymce_init() }}

您还可以通过传递类似这样的选项来覆盖默认配置

    {{ tinymce_init({'use_callback_tinymce_init': true, 'theme': {'simple': {'menubar': false}}}) }}

    {{ tinymce_init({
        theme: {'simple':{'language': app.request.locale, 'height': 500 }},
        toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image",
        autosave_ask_before_unload: false,
        asset_package_name: 'backend'})
    }}

新功能! 添加指定资产包的选项 doc 以生成正确的js链接,见上文,参数:asset_package_name

基本配置

默认情况下,tinymce将启用页面上的所有文本区域。如果您想自定义它,请按照以下步骤操作:

将“tinymce”类添加到文本区域字段以初始化TinyMCE。

    <textarea class="tinymce"></textarea>

如果您想使用编辑器的jQuery版本,请设置以下参数

    stfalcon_tinymce:
        include_jquery: true
        tinymce_jquery: true
        ...

选项include_jquery允许您从Google CDN加载外部jQuery库。如果您还没有在页面上包含jQuery,将其设置为true

如果您使用FormBuilder,请使用数组添加类,您还可以使用theme选项将使用的主题更改为除“simple”以外的其他主题(例如,您的配置中定义的其他主题 - 上面的示例定义了“bbcode”)。例如:

<?php
    $builder->add('introtext', 'textarea', array(
        'attr' => array(
            'class' => 'tinymce',
            'data-theme' => 'bbcode' // Skip it if you want to use default theme
        )
    ));

本地化

您可以通过将语言选择器添加到配置的最高级别来更改TinyMCE编辑器的语言,如下所示:

    // app/config/config.yml
    stfalcon_tinymce:
        include_jquery: true
        tinymce_jquery: true
        selector: ".tinymce"
        language: %locale%
        theme:
            simple:
                theme: "modern"
        ...

注意!由于无法为每个编辑器实例设置自定义语言,此选项将为所有实例设置语言。

在示例中,我们从parameters.ini设置了默认语言。当然,您可以通过传递语言代码(例如ruru_RUenen_US)来设置默认语言。

如果未设置语言参数,则默认语言将从会话中获取。

自定义配置

根据TinyMCE文档,您可以按自己的意愿配置编辑器。以下是您可以自行配置的几乎所有可用参数的几乎完整的列表

    // app/config/config.yml
    stfalcon_tinymce:
        include_jquery: true
        tinymce_jquery: true
        selector: ".tinymce"
        base_url: "http://yourdomain.com/" # this parameter may be included if you need to override the assets_base_urls for your template engine (to override a CDN base url)
        # Get current language from the parameters.ini
        language: %locale%
        # Custom buttons
        tinymce_buttons:
            stfalcon: # Id of the first button
                title: "Stfalcon"
                image: "http://stfalcon.com/favicon.ico"
        theme:
            # Simple theme: same as default theme
            simple: ~
            # Advanced theme with almost all enabled plugins
            advanced:
                 plugins:
                     - "advlist autolink lists link image charmap print preview hr anchor pagebreak"
                     - "searchreplace wordcount visualblocks visualchars code fullscreen"
                     - "insertdatetime media nonbreaking save table contextmenu directionality"
                     - "emoticons template paste textcolor"
                 toolbar1: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
                 toolbar2: "print preview media | forecolor backcolor emoticons | stfalcon | example"
                 image_advtab: true
                 templates:
                     - {title: 'Test template 1', content: 'Test 1'}
                     - {title: 'Test template 2', content: 'Test 2'}
            # BBCode tag compatible theme (see http://www.bbcode.org/reference.php)
            bbcode:
                 plugins: ["bbcode, code, link, preview"]
                 menubar: false
                 toolbar1: "bold,italic,underline,undo,redo,link,unlink,removeformat,cleanup,code,preview"

外部插件支持

如果您想加载位于您的bundle中的某些外部插件,应按照以下示例进行配置

    stfalcon_tinymce:
        external_plugins:
            filemanager:
                url: "asset[bundles/acmedemo/js/tinymce-plugin/filemanager/editor_plugin.js]"
            imagemanager:
                url: "asset[bundles/acmedemo/js/tinymce-plugin/imagemanager/editor_plugin.js]"
        ...
        theme:
            simple:
                theme: "modern"
                ...

自定义按钮

您可以向编辑器工具栏中添加一些自定义按钮(见:http://www.tinymce.com/tryit/button.phphttp://www.tinymce.com/wiki.php/api4:method.tinymce.Editor.addButton

首先,您应该在您的配置中描述它

    stfalcon_tinymce:
        tinymce_buttons:
            stfalcon: # Id of the first button
                title: "Stfalcon"
                image: "http://stfalcon.com/favicon.ico"
            hello_world: # Id of the second button
                title: "Google"
                image: "http://google.com/favicon.ico"
                ...
                or for the local images
                ...
                image: "asset[bundles/somebundle/images/icon.ico]"

        theme:
            simple:
                     ...
                 toolbar1: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
                 toolbar2: "print preview media | forecolor backcolor emoticons | stfalcon | hello_world"

然后,您应该为您的按钮创建基于其按钮ID的回调函数tinymce_button_

function tinymce_button_stfalcon(ed) {
    ed.focus();
    ed.selection.setContent("Hello from stfalcon.com :)");
}

function tinymce_button_hello_world(ed) {
    ed.focus();
    ed.selection.setContent("Hello world!");
}

自定义CSS

此选项允许您指定一个自定义的CSS文件,以扩展主题内容的CSS。此CSS文件是编辑器(可编辑区域)中使用的文件。此选项还可以是逗号分隔的URL列表。

如果您指定的是相对路径,它将在包含TinyMCE的(HTML)文件URL中进行解析,而不是相对于TinyMCE本身。

    stfalcon_tinymce:
        ...
        theme:
            simple:
                content_css: "asset[bundles/mybundle/css/tinymce-content.css]"
                ...

注意!请阅读官方TinyMCE文档以获取更多详细信息:http://www.tinymce.com/wiki.php/Configuration:content_css

初始化事件

就像jQuery中的$(document).ready()一样,您也可以在TinyMCE中监听init事件。

为此,您必须编辑您的配置并设置use_callback_tinymce_init为true。

app/config/config.yml:

    stfalcon_tinymce:
        ...
        use_callback_tinymce_init: true
        ...

然后创建一个名为callback_tinymce_init的javascript回调函数,如下所示

function callback_tinymce_init(editor) {
    // execute your best script ever
}

如何初始化动态加载的元素上的TinyMCE

要为新的加载的文本区域初始化TinyMCE,只需调用initTinyMCE()函数。

Sonata Admin Bundle示例

    jQuery(document).ready(function() {
        $('form').on('sonata.add_element', function(){
            initTinyMCE();
        });
    });