Бандл для подключения TinyMCE к Symfony2

Дай, думаю, черкну несколько строк о том чем я занимаюсь, а то тишина в блоге :).

Недавно создал простенький бандл для подключения TinyMCE к Symfony2 проектам. Называется он TinymceBundle и лежит на гитхабе.

Установка

1. Тянем исходники:

git submodule add git://github.com/stfalcon/TinymceBundle.git vendor/bundles/Stfalcon/Bundle

2. Добавляем путь к пространству имен в автозагрузчик:

// app/autoload.php
$loader->registerNamespaces(array(
    // ...
    'Stfalcon'                       => __DIR__.'/../vendor/bundles',
));

3. Инициализируем бандл в AppKernel:

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

4. Копируем ресурсы в директорию web

php app/console assets:install web

Настройка

Пример конфига бандла:

// app/config.yml
stfalcon_tinymce:
    mode: "textareas"
    theme: "advanced"
    theme_advanced_buttons1: "mylistbox,mysplitbutton,bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,bullist,numlist,undo,redo,link,unlink"
    theme_advanced_buttons2: ""
    theme_advanced_buttons3: ""
    theme_advanced_toolbar_location: "top"
    theme_advanced_toolbar_align: "left"
    theme_advanced_statusbar_location: "bottom"
    plugins: "fullscreen"
    theme_advanced_buttons1_add: "fullscreen"

При инициализации TinyMCE это принимает следующий вид:

<script type="text/javascript"> 
    tinyMCE.init({
                     mode: "specific_textareas",
                     theme: "advanced",
                     plugins: "fullscreen",
                     theme_advanced_buttons1: "mylistbox,mysplitbutton,bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,bullist,numlist,undo,redo,link,unlink",
                     theme_advanced_buttons2: "",
                     theme_advanced_buttons3: "",
                     theme_advanced_toolbar_location: "top",
                     theme_advanced_toolbar_align: "left",
                     theme_advanced_statusbar_location: "bottom",
                     theme_advanced_buttons1_add: "fullscreen",
            });
</script>

Для того, чтобы этот код появился на странице, нужно поместить в шаблон один из следующих вариантов вызова:

{% render "StfalconTinymceBundle:Script:init" %}
{{ tinymce_init() }}

Второй вариант реализовал Игор Негруца, за что ему отдельная благодарность ;)

Сейчас думаем каким образом сделать инициализацию TinyMCE для отдельных полей. Если есть мысли – высказывайте :)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>