Форумы xBB

Форумы xBB > BBCode и прочие языки упрощенной разметки

Как создать кнопку цитирования для редактора BBCode

Автор: dima. Последнее редактирование: 2010-03-26 13:09:22

По просьбам пользователей xBB отвечаю на вопрос: как для xBBEditora создать кнопку цитирования текста со страницы.
 
Очень легко. В нужное место на странице вставляете следующий JavaScript (с учётом специфики переработал код, взятый на PHPClub'е):
 
Javascript
var IE=0;
var MZ=0;
var OP=0;
 
function hasSelectedFeature()
{
    if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1
     && navigator.userAgent.indexOf("Windows") != -1) {
        IE = 1;
        return true;
    }
    if (navigator.userAgent.indexOf("Mozilla") != -1) {
        MZ = 1;
        return true;
    }
    if (navigator.userAgent.indexOf("Opera") != -1) {
        OP = 1;
        return true;
    }
    return false;
}
 
function getSelectedText()
{
    if (IE || OP){
        return document.selection.createRange().text;
    }
    if (MZ) {
        var s;
        if (typeof(window.getSelection) == "function") {
            s = window.getSelection().toString();
        } else {
           s = document.getSelection();
        }
        return s;
    }
    return "";
}
 
function Insert(name)
{
    var iframe = document.getElementById(XBB.iframe_id).contentWindow;
    var input = iframe.document.forms.xbb.xbb_textarea;
    if (name != "") {
        input.value = input.value + "[quote]" + name + "[/quote]\n";
        //alert(name);
    }
}
 
if (hasSelectedFeature()) {
    var selectedText = '';
    document.write('<p>Для того, чтобы вставить цитату со страницы, ');
    document.write('выделите желаемый отрывок и ');
    document.write('<a onmouseover="selectedText=getSelectedText()" ');
    document.write('href="javascript:Insert(selectedText)">нажмите сюда.</a></p>');
}

И все. Пользуйтесь Well Как это работает видно ниже.

5 комментариев

03.08.2010 11:34:10 #
Mozilla Firefox Гость dtrex
Вот если кому нужен обработчик тега
Text
[quote="имя_юзера"]тут цитируемый текст[/quote]

PHP
function requote ($text)
{
        $i= strlen($text);
        while ($i!=0 )
        {
       
                $t = "[quote=\"";
                $d = strlen($t);
                $astrpos($text,$t)+$d;
                $t = "\"]";
                $b = strpos($text,$t,$a);
                $username = substr( $text, $a, $b-$a);
                $t= "[quote=\"".$username."\"]";
                $d = strlen($t);
                $astrpos($text,$t)+$d;
                $t = "[/quote]";
                $b = strpos($text,$t,$a);
               
                $insidetext = substr( $text, $a, $b-$a);
                $retext="<br><i><b>".$username."</b> писал(а)</i><div  style=' border: 1px double white; background : lightgrey; color : white; padding: 2px 2px 2px 2px'>".$insidetext."</div>";
                $text = str_replace ("[quote=\"".$username."\"]".$insidetext."[/quote]", $retext, $text);
               
                if (strpos($text,"[quote=\""))
                {              
                        $i--;
                }
                else
                {
                        $i=0;
                }
        }
        return $text;
}

использование функции:
Text

$text="[quote=\"Маша\"]какой либо текст[/quote]";
 
$text = requote(text);
echo $text;
03.08.2010 11:37:00 #
Mozilla Firefox Гость dtrex
По поводу поста выше, просьба тем, кто протестит. Отпишитись плс, и еще жду может, кто представит свой вариант ))
03.08.2010 15:47:01 #
Mozilla Firefox dima
Перепишите функцию get_html в файле bbcode/Xbb/Tags/Quote.php. Это будет правильнее.
22.05.2011 12:02:00 #
Opera Nutty
Кнопочка на данном сайте
Для того, чтобы вставить цитату со страницы, выделите желаемый отрывок и нажмите сюда.
в Opera 11.11 не работает свой вариант позже напишу так как щас занят тегом медиа.
23.05.2011 09:40:30 #
Mozilla Firefox dima
Ну надо же Not so В моей 9.64 работает. Пойду сейчас последнюю версию качать.

Ответить:

Представиться как     Антибот:
   

Просьба не постить мусор. Пользуйтесь кнопкой предварительного просмотра на панели инструментов редактора.

Введите логин: и пароль: (

© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.