Редактор BBcode в phpFOX

Форум поддержки движка социальной сети phpFOX.
Аватара пользователя
Slash
Администратор
Сообщения: 2125
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 75 раз

Редактор BBcode в phpFOX

Сообщение Slash » Чт дек 31, 2015 8:37 am

С Наступающим!
Если установить опцию Allow HTML на false (настройки core: admincp/setting/edit/module-id_core/), то в созданном списке ul или ol появляется ошибки, например я составил код списка вот так:

Код: Выделить всё

[ul]
[*]Пример первой строки
[*]Пример второй строки
[*]Пример третьей строки
[/ul]
на экране будет так:
Редактор BBcode в phpFOX - Пост.jpg
Редактор BBcode в phpFOX - Пост.jpg (11.83 КБ) 448 просмотров
Исходный код страницы выглядит так:

Код: Выделить всё

<ul><li><br>[*]Пример первой строки<br>[*]Пример второй строки<br>[*]Пример третьей строки<br></li></ul>
Пока я решил звездочку ([*][/b]) заменить на открывающий и закрывающий тег ([li][/li]). Делаю так:
Открываем: static/jscript/editor.js, находим:

Код: Выделить всё

    getListReply: function()
    {
        var $sReply = prompt('Enter text to build your list. Once you are done click cancel.', '');
        
        if (!empty($sReply))
        {
            Editor.createBBtag("\n[*]", "", this.sEditorId, $sReply);
            
            this.getListReply();
        }
        else
        {
            Editor.createBBtag("\n[/" + this.sLastListType + "]\n",'', this.sEditorId);
        }
    }, 
Меняем на:

Код: Выделить всё

    getListReply: function()
    {
        var $sReply = prompt('Write word or phrase to the list:', '');
        if ($sReply)
        {
            Editor.createBBtag("[li]" + $sReply + "[/li]\n", '', this.sEditorId);
            this.getListReply();
        }
        else
        {
            Editor.createBBtag("[/" + this.sLastListType + "]\n",'', this.sEditorId);
        }
    }, 
Очищаем кэш. Теперь вместо одной звездочки, будет вставляться два тега (li), открывающий и закрывающий, а между ними строка.
Это временное решение и не исправляет ошибку на 100%. Рекомендую все же включить Allow HTML.

Реклама
Аватара пользователя
Slash
Администратор
Сообщения: 2125
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 75 раз

Re: Редактор BBcode в phpFOX

Сообщение Slash » Чт дек 31, 2015 1:54 pm

Ещё одни правки для редактора поста под Новый Год!
После того, как вставляешь какой то BBcode, например: , курсор тут же перемещается в конец строки, что очень неудобно, так как я вставляю теги, для того, что бы между ними, что то написать, а курсор убежал в конец и приходится его возвращать...

Что бы курсор не убегал, открываем: static/jscript/editor.js, находим и удаляем строку:

Код: Выделить всё

        $('#' + areaId).putCursorAtEnd(); 
После сохранения файла, необходимо почистить кэш.

Аватара пользователя
Slash
Администратор
Сообщения: 2125
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 75 раз

Re: Редактор BBcode в phpFOX

Сообщение Slash » Чт мар 24, 2016 6:26 pm

Если надо завернуть какую то фразу|слово в уже набранном тексте, достаточно выделить ту фразу, что надо обвернуть и нажать нужный тег, фраза встанет между тегами, а курсор опять убежит в самый конец текста, что тоже очень не удобно. А вдруг мне надо эту фразу завернуть в ещё один тег? Опять искать, где эта фраза? Я не хочу мучить своих пользователей. Я сделал так: нахожу:

Код: Выделить всё

            var preString = (txtArea.value).substring(0,txtArea.selectionStart);
            var newString = openerTag + (txtArea.value).substring(txtArea.selectionStart,txtArea.selectionEnd) + closerTag;
            var postString = (txtArea.value).substring(txtArea.selectionEnd);
            txtArea.value = preString + newString + postString;
            txtArea.focus();
И меняю на:

Код: Выделить всё

            var preString  = (txtArea.value).substring(0,txtArea.selectionStart);
            var newString  = openerTag + (txtArea.value).substring(txtArea.selectionStart,txtArea.selectionEnd) + closerTag;
            var postString = (txtArea.value).substring(txtArea.selectionEnd);
            var markStart  = preString.length + openerTag.length;
            var markEnd    = preString.length + newString.length - closerTag.length;

            txtArea.value  = preString + newString + postString;
            txtArea.select();
            txtArea.setSelectionRange(markStart, markEnd); 
Сохранил, почистил кэш. Теперь после вставке тегов выделенного текста, текст остаётся выделенным и не срабатывает надоедливая прокрутка вниз.

Функцию putCursorAtEnd, я вообще удалил:

Код: Выделить всё

$Behavior.putCursorAtEnd = function()
{
    jQuery.fn.putCursorAtEnd = function()
    {
        return this.each(function()
        {
            $(this).focus();
            if (this.setSelectionRange)
            {
                var len = $(this).val().length * 2;
                this.setSelectionRange(len, len);
            }
            else
            {
                $(this).val($(this).val());
            }

            this.scrollTop = 999999;
        });
    };
}; 

Аватара пользователя
Slash
Администратор
Сообщения: 2125
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 75 раз

Re: Редактор BBcode в phpFOX

Сообщение Slash » Пт мар 25, 2016 3:31 pm

Добавил в редактор текста BBcode link (в phpFOX 3 вместо тега URL пишется LINK), тег img и code. Добавлял так:
Открыть файл: include/library/phpfox/editor/editor.class.php, найти:

Код: Выделить всё

        array( 
            'image'   => 'text_underline.png',
            'command' => 'u',
            'phrase'  => 'core.underline'
        ),
        
        array(
            'separator'
        ), 
Ниже добавит:

Код: Выделить всё

        array(
            'image'   => 'link.png',
            'command' => 'link',
            'phrase'  => 'core.url'
        ),
        
        array(
            'image'   => 'img.png',
            'command' => 'img',
            'phrase'  => 'core.image'
        ),        
        
        array(
            'image'   => 'code.png',
            'command' => 'code',
            'phrase'  => 'core.code'
        ),
        
        array(
            'separator'
        ), 
В папку: theme/frontend/default/style/default/image/editor/, добавить картинки: Изображение Изображение Изображение

Аватара пользователя
Slash
Администратор
Сообщения: 2125
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 75 раз

Re: Редактор BBcode в phpFOX

Сообщение Slash » Ср фев 01, 2017 10:20 am

Уже и не помню (и наверно ни когда не вспомню) после каких правок, при

Код: Выделить всё

Allow HTML == false
у меня при создании списка, его элементы располагаются через пустую строчку, смотрится некрасиво.
Исправил так, открываю: include/library/phpfox/parse/output.class.php, нахожу:

Код: Выделить всё

            $text = str_replace("\n", '[br]', $text);
Выше добавляю:

Код: Выделить всё

            $text = preg_replace('#(\[\/?(ul|ol|li)\])[\n]{1}#', '$1', $text);
Как всегда - название переменных у меня свои, будьте внимательны.

Ответить Пред. темаСлед. тема

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость