В InstantCMS 1.10 уже есть вставка видео-роликов с ютюба/рутюба. Но реализованный подход не «масштабируемый». Во-первых, нужно будет править ядро для вставки кода интересующего сайта. Во-вторых, не всегда сервисы дают код для вставки в дружественном виде (как это делает Ютуб) и писать инструкции для пользователей — очень утомительное и не всегда эффективное занятие. В этой связи логичным показалось решение предоставить возможность вставлять любой html-код с доверенных сайтов.
В общем, коллеги, вашему вниманию предлагается плагин p_bb_media («Медиа-контент»). Он внедряет в редакторы (блогов, статей — fck_editor, комментариев) специальную кнопку для быстрой вставки бб-кода [media][/media]. Между этими кодами пользователь будет размещать выданный доверенными веб-сервисами html-код (iframe и т.п.).
К вопросу о безопасности
Предвидя вопрос о безопасности реализованного подхода ещё раз отвечу:Безопасно. Моя уверенность основана на том, что плагин ведёт реестр доверенных доменов, с которых можно добавлять контент. Если встречается адрес (признак начала адреса — http:// и https://), который не входит в список доверенных, то вставка контента блокируется до устранения причины — или админ сайта добавляет домен в список доверенных, или подозрительная ссылка из кода удаляется.
Возможно нужно добавить другие признаки адреса. Особенно, если выяснится, что подгрузка частей страницы возможна по другим протоколам. Кто знает, какие нужно добавить?
Скриншоты:
FCKeditor:Опции плагина:
При вставке комментария:
Установка:
В принципе, всё стандартно. Распаковать содержимое архива, залить папку «p_bb_media» в папку плагинов, активировать и включить. В плагине задан минимальный набор доверенных сервисов и шаблон сообщения об ошибке вставки медиа-контента. Для добавления нового доверенного сайта достаточно через запятую добавить домен второго уровня для нужного сервиса.В архиве имеется ещё папка «p_fckeditor» — её нужно копировать на сайт только в том случае, если вы хотите добавить кнопку в FCKeditor. Но кроме копирования папки потребуется правка конфига FCKeditor. Пример конфигурации можно посмотреть в прилагаемом файле fckconfig.js.example. В результате конфиг должен обрести строчку:
FCKConfig.Plugins.Add( 'bbmediacode', 'en,ru' );
FCKConfig.ToolbarSets["Default"] = [ ['Source','DocProps','-','Save','NewPage','Preview','-','Templates'], ['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'], ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'], ['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'], '/', ['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'], ['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote','CreateDiv'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'], ['Link','Unlink','Anchor'], ['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'], '/', ['Style','FontFormat','FontName','FontSize'], ['TextColor','BGColor','bbmediacode'], ['FitWindow','ShowBlocks','-','About'] // No comma for the last row. ] ; FCKConfig.ToolbarSets["Admin"] = [ ['FitWindow','-','Source','-','-','Templates'], ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'], ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'], '/', ['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'], ['OrderedList','UnorderedList','-','Outdent','Indent'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'], ['Link','Unlink','Anchor','Table','Rule','Smiley','SpecialChar', 'Image'], '/', ['FontFormat','FontName','FontSize'], ['TextColor','BGColor','bbmediacode'] ] ;