Как сделать WYSIWYG редактор в PHP - PullRequest
3 голосов
/ 04 февраля 2010

Я пытаюсь создать редактор WYSIWYG на PHP.До сих пор я получил (я новенький кстати):

HTML:

   <form action="" method="POST">
        <select name="fontSize" onchange="this.form.submit();">
            <option>Font Size</option>
            <option value="14px">14px</option>
            <option value="24px">24px</option>
            <option value="34px">34px</option>
        </select>
    </form>

    <form action="" method="POST">
        <textarea name="bodyText" style="width:500px;height:200px;font-size:<?php echo $fontSize; ?>"></textarea>
    </form>

PHP:

<?php

$fontSize = $_POST['fontSize'];

switch($fontSize)
{
    case "14px":
    $fontSize = "14px";
    break;

    case "24px":
    $fontSize = "24px";
    break;

    case "34px":
    $fontSize = "34px";
    break;

    default:
    $fontSize = "12px";
}

?>

Проблема заключается в том, что я выбираю новый шрифтsize из выпадающего меню изменяется размер шрифта для всей текстовой области, вместо этого я хочу иметь возможность выделить определенное слово или букву и иметь размер шрифта только этого изменения, а не всей текстовой области.Как это сделать?

Ответы [ 3 ]

5 голосов
/ 04 февраля 2010

Вы можете сделать это (теоретически), но пользователи, которые должны использовать это, не будут довольны этим.Проблема в том, что при каждом нажатии кнопки страница обновляется.Это означает, что содержимое формы отправляется на сервер, изменяется там и отправляется обратно.

Например, для изменения шрифта время ответа слишком велико .Пользователь не будет работать комфортно с этим редактором.

Способ получить действительно - использовать редактор JS WYSIWYG, который обрабатывает все форматирование и т. Д. На стороне клиента (на который ссылаются другие ответы).

Особенно то, что вы просили, то есть только изменение выделенного текста, не тривиально для решения .Вы можете сделать это, отправив два дополнительных поля, которые содержат начальную, конечную и конечную точки выделенного текста.Они должны быть обновлены через JS.

Вы не можете достичь этого без JS.Как уже было сказано, текст изменяется на серверной стороне .У вас нет возможности выяснить, что пользователь делает, просто используя текст.

Сделайте себе одолжение и не пытайтесь сделать это .Это действительно не стоит усилий.

0 голосов
/ 04 февраля 2010

Согласен, мы используем TinyMCE, и это очень надежно. Проверьте http://tinymce.moxiecode.com/examples/full.php, чтобы увидеть все функции, которые он имеет. Нижний колонтитул страницы примеров показывает множество конфигураций с меньшим количеством кнопок для определенных целей.

Определенно, требуется некоторое терпение, чтобы заставить его работать так, как вы хотите, но в итоге это работает лучше, чем все остальное, что я видел. Плагины FileManager и ImageManager не бесплатны, но они по-прежнему открыты, когда вы их приобретаете, и работают очень хорошо.

0 голосов
/ 04 февраля 2010

Пожалуйста, придерживайтесь принципа СУХОЙ (не повторяйте себя) и воспользуйтесь одним из многих редакторов Javascript WYSIWYG, таких как http://tinymce.moxiecode.com/.

Поверьте мне, люди вложили в них много работы, и вы действительно не хотите делать это самостоятельно.

Bye

...