Хай. Задался целью прикруить к BB-редактору на форуме функции Undo/Redo
Самый подходящий нашел
здесь
Вырезал из скриптового файла всю функциональную часть, отвечающую за юндо/редо
На форуме робит, во всех браузерах, но:
работает только с одним textarea
Если на странце два textarea, то отменяет/возвращает только в нижнем.
ид-имена у textarea, кнопок отмены/возврата и другие ID - уникальны для каждого текстового редактора на одной странице.
Понимаю, что просто совпадение фунок или переменных, но мозговых силенок еще мало в этой области.
Потыкался, сделал, что стало работать, т.е. два текстовых редактора на однйо странице и у обоих независимо работают Undo/Redo, но опять но:
дело в том, надо бекапить не только введеный текст, но бекапить и перед применением BB-кодов, т.е. выделили слово, сделали его [ b ]bbb[ b ] и перед вставкой BBcode тоже забекапить надо, но в варианте, что работает с двумя textarea на одной странце я не могу вызвать функцию бекапа, т.к. эта функа внутренняя
В первом варианте, функа бекапа внешняя и работает, но не работает с двумя textarea
В общем надо, чтобы скрипт работал с неограниченым кол-вом textarea на одной странице и имел возможность вызывать функцию бекапа со стороны.
Как то так.
Оба варианта прикрепил.
Вызываю так после отрисовки textarea:
echo "<script type=\"text/javascript\">UndoRedoFunc('".$this->getName()."');</script>";
из другого скрипта функцию бекапа вызывал так:
jQuery().undo_redo.backup();
Стили:
Код:
|
.undo_redo_disable {
filter: alpha(opacity=20);
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=20);
-moz-opacity: 0.20;
-khtml-opacity: 0.2;
opacity: 0.2;
}
.undo_redo_enable {
filter: alpha(opacity=100);
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=100);
-moz-opacity: 1.00;
-khtml-opacity: 1.00;
opacity: 1;
} |
ну и сами кнопки редактора, на панели кнопок:
echo " <a href='javascript:void(0);'><img src='undo.gif' id='".$this->getName()."_undo' class='undo_redo_disable' alt='Undo' /></a>";
echo " <a href='javascript:void(0);'><img src='redo.gif' id='".$this->getName()."_redo' class='undo_redo_disable' alt='Redo' /></a>";