Единый редактор с ББ-кодами
заменяет WYSYWIYG редактор, в статьях, в УК и в конфиге блогов на стандартный редактор с ББ-кодами (справедливо и для админки), как на форуме…с некоторым наращиванием функционала…
без изменений в структуре БД…
Публикую то, что сделано на данный момент…
Работает как и заявлено в анонсе…
добавлены теги выравнивания и альтернативного текста для изображений загружаемых с компа…
что менялось
в файле /core/classes/page.class.php в функции
public static function getBBCodeToolbar($field_id, $images=0, $placekind='forum'){
<a class="usr_bb_button" href="javascript:void(0)" onclick="$(\'#smilespanel_'.$field_id.'\').slideToggle(\'slow\')" title="Вставить смайл"> <img src="/includes/bbcode/images/smiles.png" alt="Вставить смайл" /> </a>'; if ($placekind=='blogs'){ $html .= '<a class="usr_bb_button" href="javascript:addTagCut(\''.$field_id.'\')" title="Вставить конец анонса (кат)"> <img src="/includes/bbcode/images/cut.png" alt="Вставить конец анонса (кат)" /> </a>'; } if ($images){ $html .= '<a class="usr_bb_button" href="javascript:addTagVideo(\''.$field_id.'\')" title="Вставить видео"> <img src="/includes/bbcode/images/video.png" alt="Вставить видео" /> </a> <a class="usr_bb_button" href="javascript:addTagAudio(\''.$field_id.'\')" title="Вставить mp3"> <img src="/includes/bbcode/images/audio.png" alt="Вставить mp3" /> </a> <a class="usr_bb_button" href="javascript:addTagImage(\''.$field_id.'\')" title="Вставить картинку из Сети"> <img src="/includes/bbcode/images/image_link.png" alt="Вставить картинку из Сети" /> </a>'; if ($inUser->id) { $users_cfg = $inCore->loadComponentConfig('users'); if ($users_cfg['sw_photo']){ $html .= '<a class="usr_bb_button" href="javascript:addAlbumImage(\''.$field_id.'\')" title="Вставить фото из личных альбомов"> <img src="/includes/bbcode/images/albumimage.png" alt="Вставить фото из личных альбомов" /> </a>'; } $html .= '<a class="usr_bb_button" href="javascript:addImage(\''.$field_id.'\')" title="Загрузить и вставить фото"> <img src="/includes/bbcode/images/image.png" alt="Загрузить и вставить фото" /> </a> <div class="usr_bb_button" id="imginsert_'.$field_id.'" style="display:none"> <strong>Загрузить фото:</strong> <input type="file" id="attach_img_'.$field_id.'" name="attach_img_'.$field_id.'"/> <input type="button" name="goinsert" value="Вставить" onclick="loadImage(\''.$field_id.'\', \''.session_id().'\', \''.$placekind.'\')" /> </div> <div class="usr_bb_button" id="imgloading_'.$field_id.'" style="display:none"> Загрузка изображения... </div>'; if ($users_cfg['sw_photo']){ $html .= '<div class="usr_bb_button" id="albumimginsert_'.$field_id.'" style="display:none"> <strong>Вставить фото:</strong> '.cmsUser::getPhotosList($inUser->id).' <input type="button" name="goinsert" value="Вставить" onclick="insertAlbumImage(\''.$field_id.'\')" /> </div>'; } } } $html = cmsCore::callEvent('GET_BBCODE_BUTTON', $html); return $html; } /** * Возвращает html-код панели со смайлами * @param string $for_field_id * @return html */ public static function getSmilesPanel($for_field_id){ $html = '<div class="usr_msg_smilebox" id="smilespanel_'.$for_field_id.'" style="display:none">'; if ($handle = opendir(PATH.'/images/smilies')) { while (false !== ($file = readdir($handle))) { if ($file != '.' && $file != '..' && strstr($file, '.gif')){ $tag = str_replace('.gif', '', $file); $dir = '/static/smiles/'; $html .= '<a href="javascript:addSmile(\''.$tag.'\', \''.$for_field_id.'\');"><img src="'.$dir.$file.'" /></a> '; } } closedir($handle); } $html .= '</div>'; return $html; }
<input type="submit" name="submit" value="{$LANG.SAVE}" style="font-size:18px" />
<input type="submit" name="send" value="{$LANG.SAVE}" style="font-size:18px" />
файл /includes/bbcode/bbcode.lib.php — в архиве…
файл /core/ajax/imginsert.php — в архиве…
ну и собственно файлы плагина тоже в архиве, в соответствии с расположением в нужных директориях…
АРХИВ
— в моих файлахкому интересно подключайтесь к тестированию и к разработке… )
для тех кто не читал, поясню — это экспериментальная версия, не для рабочих проектов, и соответственно для тех, кто хотел, чтобы на сайте был один редактор на основе стандартного с ББ-кодами
в “другую сторону” в сторону WYSIWYG везде, так же начата работа, но пока еще всё сырое для того чтобы публиковать даже альфа-релиз… )
например, есть два варианта: одна кнопка и четыре кнопки; вопрос: где выбор более простой и интуитивный?
ну и, если есть “всё”, то что выбрать?
по существу…
в мэйле каким способом осуществляется переключение? в профиле в настройках для каждого? или в редакторе, непосредственно при редактировании?
Редактор нужен единый. Возможно в 2-х вариантах (с урезанных функционалом), чтобы в комментариях не озорничали.
Единственное, что мне не нравится, это то, что в BB изображения не обтекаются текстом, нельзя выставить "margin". Вот если бы можно было на кнопоки "расположить слева" автоматически выставлять правый маржин 15 пикселов, а при "расположить справа", левый, соответственно и обтекание, было бы удобно. А если по центру, значит без обтекания.
p.S. Подскажите, пожалуйста, как удалить кнопочку "H1" из панельки, чтобы пользователи не злоупотребляли?
на данный момент так и происходит, флоат лефт с правым мержином и наоборот, обтекание специально убрано, так как визуализация зависит от размеров изображения, например, при загрузке пикчи по ширине в 600 пикселей в шаблоне остается около 80 пикселей свободных для текста, чтобы не порождать подобных проблем было отключено добавлением дива с двойной очисткой…
центр в данной редакции сделать не удастся из-за обратного парсинга из свойства флоат…
как удалить кнопочку "H1" из панельки…
/core/classes/page.class.php функция public static function getBBCodeToolbar($field_id, $images=0, $placekind='forum'){
ищем строку:
Ну нужная же штуковина для соблюдения всяких там авторских прав.
по обтеканию: если общая ширина материала например 700 пикселей а изображение загружено 600 для текста просто мало места остается, не красиво и нечитаемо…
обратный парсинг это когда html коды заменяются обратно бб-кодами
например код для изображения <img style="float:left....
превращается в
Зачем тогда маржин, если нет обтекания ни в каком варианте выравнивания?
А центровка вообще из текущего ВВ-редактора выпадет? (Сейчас же он есть.)
Мне просто трудно представить, зачем, по большому счету, нужен флоат, если все-равно нет обтекания. Пусть все изображения становятся по центру и юзеру меньше действий и лишних опций.
это типа бета релиза, много еще не так как будет…
Ни в админке, ни при редактировании юзером.
Не могли бы вы проверить, хотя может у меня что-то не так, но ставила на 1.9 - первоисточник.
В форуме нормально вставляет.
Кстати окошки - выравнивание и текст - не очевидно, допустим я не хочу вводить выравнивание - первая реакция "Отмена", "Отмена" (а не Ок) - повисает Загрузка...
с выравниванием и отменой пока так, их по идее нужно переносить рядом с другими кнопками при самой загрузке (там где обзор и вставить) да и делать нужно через классы (стили) а не в код вставлять, сделаю постепенно, просто общую концепцию не хотелось нарушать поэтому пока через промты (окошки для ввода)
"Число строк", "Число столбцов", "Вставить"
первый параметр передает функции id текстового блока, второй доступность кнопок в секции if ($images..., третий место вызова, например forum, blogs и т.д.
смотрите в коде компонентов, как происходит вызов этой функции и какие параметры передаются и настраивайте “под себя”…
И скорее всего в будущем произойдёт полный отказ от бб-кодов, поэтому я работаю и в другом направлении — в сторону единого html редактора на основе sceditor 1.3.7…