Редактор BBcode в phpFOX

Форум поддержки движка социальной сети phpFOX.
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Редактор 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 КБ) 324 просмотра

Исходный код страницы выглядит так:

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

<ul><li><br>[*]Пример первой строки<br>[*]Пример второй строки<br>[*]Пример третьей строки<br></li></ul>

Пока я решил звездочку ([*]) заменить на открывающий и закрывающий тег ([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
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

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

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

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

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

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

        $('#' areaId).putCursorAtEnd(); 

После сохранения файла, необходимо почистить кэш.
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

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(markStartmarkEnd); 

Сохранил, почистил кэш. Теперь после вставке тегов выделенного текста, текст остаётся выделенным и не срабатывает надоедливая прокрутка вниз.

Функцию 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(lenlen);
            }
            else
            {
                $(
this).val($(this).val());
            }

            
this.scrollTop 999999;
        });
    };
}; 
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

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/, добавить картинки: Изображение Изображение Изображение

Вернуться в «phpFOX»

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

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