Плагин p_bb_media - вставка доверенного медиа-контента (1.10.*)

Плагин бб-кода [media] для вставки html-кодов

#1 1 июля 2013 в 12:59
На подопечном проекте WebiLang.com для образовательных целей периодически необходимо вставлять в публикуемые материалы (в блогах, статьях, стенах клуба и т.п.) или комментарии контент различных веб-сервисов, таких как: SlideShare (презентации), Google.Docs (электронные таблицы, документы, презентации), vimeo.com (обучающие и различные ролики) и т.п. Причём заранее программисту неизвестно расшариваемый контент какого сервиса понадобится вставлять.

В 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. В результате конфиг должен обрести строчку:

  1. FCKConfig.Plugins.Add( 'bbmediacode', 'en,ru' );
и вот такую вставку 'bbmediacode' :

  1.  
  2. FCKConfig.ToolbarSets["Default"] = [
  3. ['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],
  4. ['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
  5. ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
  6. ['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
  7. '/',
  8. ['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
  9. ['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote','CreateDiv'],
  10. ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
  11. ['Link','Unlink','Anchor'],
  12. ['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],
  13. '/',
  14. ['Style','FontFormat','FontName','FontSize'],
  15. ['TextColor','BGColor','bbmediacode'],
  16. ['FitWindow','ShowBlocks','-','About'] // No comma for the last row.
  17. ] ;
  18.  
  19. FCKConfig.ToolbarSets["Admin"] = [
  20. ['FitWindow','-','Source','-','-','Templates'],
  21. ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],
  22. ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
  23. '/',
  24. ['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
  25. ['OrderedList','UnorderedList','-','Outdent','Indent'],
  26. ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
  27. ['Link','Unlink','Anchor','Table','Rule','Smiley','SpecialChar', 'Image'],
  28. '/',
  29. ['FontFormat','FontName','FontSize'],
  30. ['TextColor','BGColor','bbmediacode']
  31. ] ;
  32.  
Готов ответить на ваши вопросы. Выслушаю пожелания.
Прикрепленный файл
p_bb_media_1_3_c493i.zip 17 Кб
#2 2 июля 2013 в 02:29
+ 1 в карму
#3 2 июля 2013 в 02:37
Молодец, также плюсую.
#4 2 июля 2013 в 03:18
давно хотелось такую кнопку, спасибо
#5 2 июля 2013 в 05:53
что то не появляется кнопка. хотя сами [media] работают. На локалке все ок, есть кнопка, а вот на хостинге нет. Голова уже не работает, где может быть трабл
#6 5 июля 2013 в 21:27

что то не появляется кнопка.

cvetkoff
анологично

В результате конфиг должен обрести строчку:

и вот такую вставку 'bbmediacode' :

если можно, объяните пошагово, что и куда надо прописать zst
#7 5 июля 2013 в 22:21
пошагово на локал хост и на 1.10.1 просто скопировал pbbmedia10_tnkvp.zip распаковав. Строки в fckconfig.js уже были такие. Сам код работает и кнопка есть.

На удаленном же хостинге код работает, но кнопки нет. Теги bb [media] [/media] пишу вручную…
#8 6 июля 2013 в 11:16
Обновил архив! Теперь версия плагина — 1.1. Исправлена проблема с нестабильной работой при выводе медиа-контента на стену клубов. Для обновления можно просто заменить имеющийся файл /p_bb_media/plugin.php на соответствующий файл из архива.

Что касается проблем, о которых пишут cvetkoff и Ninok. Я переписывался с cvetkoff, но, к сожалению, без ftp-доступа к сайту оказалось невозможным определить причину проблемы. В ходе беседы возникла гипотеза, что проблема может быть вызвана вносившимся в движок правками (хаками). Но нужно проверять...

По пошаговой инструкции:

1. Откройте на редактирование файл \plugins\p_fckeditor\fckeditor\fckconfig.js (это файл настроек FCKeditor-а, если вы используете другой редактор, то инструкция вам бесполезна — пытайтесь разобраться сами)
2. Найдите строчку с текстом FCKConfig.AutoGrowMax = 500; и после неё вставьте код:
  1. FCKConfig.Plugins.Add( 'bbmediacode', 'en,ru' );
3. Для появления кнопки на внешних (по отношению к админке) страница сайта (где используется FCK) найдите фрагмент

  1. FCKConfig.ToolbarSets["Default"] = [
  2. ['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],
  3. ['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
  4. ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
  5. ['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
  6. '/',
  7. ['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
  8. ['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote','CreateDiv'],
  9. ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
  10. ['Link','Unlink','Anchor'],
  11. ['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],
  12. '/',
  13. ['Style','FontFormat','FontName','FontSize'],
  14. ['TextColor','BGColor'],
  15. ['FitWindow','ShowBlocks','-','About'] // No comma for the last row.
  16. ] ;
  17.  
и в строке ['TextColor','BGColor'], добавьте «,'bbmediacode'» чтобы получилось

  1. FCKConfig.ToolbarSets["Default"] = [
  2. ['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],
  3. ['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
  4. ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
  5. ['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
  6. '/',
  7. ['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
  8. ['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote','CreateDiv'],
  9. ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
  10. ['Link','Unlink','Anchor'],
  11. ['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak'],
  12. '/',
  13. ['Style','FontFormat','FontName','FontSize'],
  14. ['TextColor','BGColor','bbmediacode'],
  15. ['FitWindow','ShowBlocks','-','About'] // No comma for the last row.
  16. ] ;
  17.  
4. Для появления кнопки в FCK editor в админ-панели найдите фрагмент

  1.  
  2. FCKConfig.ToolbarSets["Admin"] = [
  3. ['FitWindow','-','Source','-','-','Templates'],
  4. ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],
  5. ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
  6. '/',
  7. ['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
  8. ['OrderedList','UnorderedList','-','Outdent','Indent'],
  9. ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
  10. ['Link','Unlink','Anchor','Table','Rule','Smiley','SpecialChar', 'Image'],
  11. '/',
  12. ['FontFormat','FontName','FontSize'],
  13. ['TextColor','BGColor']
  14. ] ;
  15.  
и в строке ['TextColor','BGColor'], добавьте «,'bbmediacode'» чтобы получилось

  1.  
  2. FCKConfig.ToolbarSets["Admin"] = [
  3. ['FitWindow','-','Source','-','-','Templates'],
  4. ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],
  5. ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
  6. '/',
  7. ['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
  8. ['OrderedList','UnorderedList','-','Outdent','Indent'],
  9. ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
  10. ['Link','Unlink','Anchor','Table','Rule','Smiley','SpecialChar', 'Image'],
  11. '/',
  12. ['FontFormat','FontName','FontSize'],
  13. ['TextColor','BGColor','bbmediacode']
  14. ] ;
  15.  
5. Сохраните файл. Проверьте доступность кнопки в желаемом (например, откройте на редактирование статью) месте. Кнопка должна появится.

6. Вернитесь в эту ветку форума и отпишитесь о результатах laugh
#9 6 июля 2013 в 13:04
Давайте поддержим автора и поставим к карме +
Надеюсь, что следующая разработка автора будет уже в блоге
#10 6 июля 2013 в 21:52
Vimruler, большое спасибо за плагин и за подробную инструкцию по установке, все получилось.
Жалко, что только 1 раз карму можно поднять.
#12 7 июля 2013 в 21:21
Почему то в блогах не работает. В статьях так кнопки и нет, ставлю в режиме источник и даже без тегов все работает. sad
#13 8 июля 2013 в 04:44

Почему то в блогах не работает.

Олег
Версия движка у вас какая?
#14 8 июля 2013 в 06:49
1.10
#15 17 июля 2013 в 08:39
Обновил плагин до версии 1.2. Теперь плагин умеет удалять содержимое медиа-тэга при выводе «Ленты активности» (раньше, как правило, часть содержимого между тэгами откусывалась вместе с закрывающим тэгом при выводе и посетители видели «кашу из кода»).

Было:

Стало:

Обновление

1. Для обновления можно просто заменить имеющийся файл /p_bb_media/plugin.php на соответствующий файл из архива.
2. Требуется удалить и снова установить плагин в админ панели (чтобы заработала реакция на новый эвент «GET_ACTIONS»). Не забудьте предварительно сохранить список ваших доверенных доменов!
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.