phpbb2 кто поборол проблему когда ббкоды вставляются в конец текста (не туда)я

M
На сайте с 20.08.2004
Offline
376
614

Rто поборол проблему когда ббкоды в phpbb2 вставляются в конец текста а не туда где курсор?

Раньше такой проблемы не было. Наблюдаю такое на всех форумах пхпбб2 и почти со всеми браузерами.

Спасибо.

Miracle добавил 16.04.2010 в 00:26

проблему решил.

кому надо обращайтесь.

отец сыночка, лапочки дочки и еще одного сыночка
b2pip
На сайте с 03.01.2008
Offline
104
#1
проблему решил

Обращаюсь. Как решили?

M
На сайте с 20.08.2004
Offline
376
#2

10 символов


нужно заменить два куска текста

1... искать function emoticon(text) {
(тут я думаю ясно)

function emoticon(text) {
var textarea = document.post.message;
//alert (txtarea);
// var textarea = opener.document.forms[form_name].elements[text_name];
//alert(textarea);
text = ' ' + text + ' ';
/* if (txtarea.createTextRange && txtarea.caretPos) {
var caretPos = txtarea.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
txtarea.focus();
} else {
txtarea.value += text;
txtarea.focus();
}
*/
var baseHeight;

var textarea = document.post.message;
if (!isNaN(textarea.selectionStart))
{
var sel_start = textarea.selectionStart;
var sel_end = textarea.selectionEnd;

mozWrap(textarea, text, '')
textarea.selectionStart = sel_start + text.length;
textarea.selectionEnd = sel_end + text.length;
}
else if (textarea.createTextRange && textarea.caretPos)
{
if (baseHeight != textarea.caretPos.boundingHeight)
{
textarea.focus();
storeCaret(textarea);
}

var caret_pos = textarea.caretPos;
caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) == ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text;
}
else
{
textarea.value = textarea.value + text;
}
}


2. искать function bbstyle(bbnumber) { и заменить его на текст ниже (те поставить выше)

function bbstyle(bbnumber)
{
if (bbnumber != -1)
{
bbfontstyle(bbtags[bbnumber], bbtags[bbnumber+1]);
}
else
{
insert_text('
  • ');
  • document.forms[form_name].elements[text_name].focus();
    }
    }

    /**
    * Apply bbcodes
    */
    function bbfontstyle(bbopen, bbclose)
    {
    theSelection = false;

    var textarea = document.post.message;

    textarea.focus();



    if ((clientVer >= 4) && is_ie && is_win)
    {
    // Get text selection
    theSelection = document.selection.createRange().text;

    if (theSelection)
    {
    // Add tags around selection
    document.selection.createRange().text = bbopen + theSelection + bbclose;
    document.post.message.focus();
    theSelection = '';
    return;
    }
    }
    else if (document.post.message.selectionEnd && (document.post.message.selectionEnd - document.post.message.selectionStart > 0))
    {
    mozWrap(document.post.message, bbopen, bbclose);
    document.post.message.focus();
    theSelection = '';
    return;
    }
    alert ("d");
    //The new position for the cursor after adding the bbcode
    var caret_pos = getCaretPosition(textarea).start;
    var new_pos = caret_pos + bbopen.length;

    // Open tag
    emoticon (bbopen + bbclose);

    // Center the cursor when we don't have a selection
    // Gecko and proper browsers
    if (!isNaN(textarea.selectionStart))
    {
    textarea.selectionStart = new_pos;
    textarea.selectionEnd = new_pos;
    }
    // IE
    else if (document.selection)
    {
    var range = textarea.createTextRange();
    range.move("character", new_pos);
    range.select();
    storeCaret(textarea);
    }

    textarea.focus();
    return;
    }
    /**
    * Caret Position object
    */
    function caretPosition()
    {
    var start = null;
    var end = null;
    }
    /**
    * Get the caret position in an textarea
    */
    function getCaretPosition(txtarea)
    {
    var caretPos = new caretPosition();

    // simple Gecko/Opera way
    if(txtarea.selectionStart || txtarea.selectionStart == 0)
    {
    caretPos.start = txtarea.selectionStart;
    caretPos.end = txtarea.selectionEnd;
    }
    // dirty and slow IE way
    else if(document.selection)
    {

    // get current selection
    var range = document.selection.createRange();

    // a new selection of the whole textarea
    var range_all = document.body.createTextRange();
    range_all.moveToElementText(txtarea);

    // calculate selection start point by moving beginning of range_all to beginning of range
    var sel_start;
    for (sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start++)
    {
    range_all.moveStart('character', 1);
    }

    txtarea.sel_start = sel_start;

    // we ignore the end value for IE, this is already dirty enough and we don't need it
    caretPos.start = txtarea.sel_start;
    caretPos.end = txtarea.sel_start;
    }

    return caretPos;
    }

    function bbstyle_old(bbnumber) {

    Miracle добавил 16.04.2010 в 00:38

    лишнее удалить по вкусу

    я просто или переименовываю функции или комментирую.

    b2pip
    На сайте с 03.01.2008
    Offline
    104
    #3

    Спасибо.

    На всякий случай: у вас в функциях никаких следов от модов не было?

    M
    На сайте с 20.08.2004
    Offline
    376
    #4

    вроде нет. :)

    но нужно заменить во всех файлах, у меня например

    posting_body.tpl

    viewtopic_quickreply.tpl

    Miracle добавил 16.04.2010 в 00:56

    да и в первом случае старый код закомментирован,точно не изменен, да и вы сравнить можете

    второй вообще я как видете не трогал, только название функции поменял - можно удалить все это

    b2pip
    На сайте с 03.01.2008
    Offline
    104
    #5

    Ясно. Бум пробовать :)

    Как-то вошло в привычку юзать бб-код на выделенном тексте, что даже внимание не обращал...

    Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий