vimruler

vimruler

+51
Репутация
2
Рейтинг
#1 Плагин p_bb_media - вставка доверенного медиа-контента (1.10.*) 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
#1 Плагин p_bb_media - вставка доверенного медиа-контента (1.10.*) 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 [ЕСТЬ РЕШЕНИЕ] Ищем программиста для реализации раздела «Упражнения» на образовательном сайте 28 июня 2013 в 13:39
Исполнитель назначен. Всем спасибо за внимание. Тему закрываю.
#3 [ЕСТЬ РЕШЕНИЕ] Ищем программиста для реализации раздела «Упражнения» на образовательном сайте 25 июня 2013 в 06:53

интересует компонент тестирования, парочка модулей и плагин?

WALTERZ
Да, интересует «компонент тестирования».

По описанному вами составу — довольно близко написали. Сейчас есть соображение, что в админке будут управление категориями, возможно, какие-то общие настройки комплекса и конечно же страница со сводной таблицей по созданным упражнениям (столбцы: название, категория, автор, количество просмотров/прохождений, кнопки удалить и редактировать). Возможно нужно сделать группировку упражнений по рубрикам, как это делается со стандартным компонентом «статьи» (т.е. слева от таблицы столбец с деревом рубрик и т.д.).

Управление упражнениями должно быть во внешней части сайта (чтобы не пускать лишний раз в админку неподготовленный народ). Редактирование «упражнения» должно выглядеть как стандартный блоговый редактор с расширенным набором кнопок, через которые осуществляется вставка специального набора бб-кодов (сейчас ещё не продумывали состав, но уже ясно, что набор будет в последствии постоянно расширяться для реализации новых типов упражнений). В редактор должна будет добавлена кнопка «Предпросмотр», чтобы преподаватель мог посмотреть как будет выглядеть упражнение (фактически навороченная форма) ещё до сохранения упражнения (очевидно должен быть выполнен ajax запрос к специальному скрипту комплекса). Также в редакторе нужны кнопка(или несколько кнопок?) для вставки заготовок кода. Например, заготовки бб-кодов таблицы и списков.

На этой же странице (с формой создания упражнения) должны быть поля «Название упражнения», «Описание», «Рубрика» (создаются в админке админом проекта, преподы не могут управлять рубриками), галочка «Удалить» и кнопка «Сохранить».

Сейчас мыслю, что у каждого преподавателя на странице профайла в секции «Мой контент» должна появится иконка «Упражнения». Где у него будет страница с кнопкой «Создать» и таблицей уже созданных упражнений, в которой кроме названия упражнения, описания (мелким шрифтом), даты создания и его рубрики должен быть столбик с кнопками «удалить», редактировать и статистика. По кнопке «Статистика» должна открываться страница с таблицей, в которой список открывавших упражнение юзеров (ник со ссылкой на профиль) с их «баллами», количеством попыток, столбцом с пометкой какой курс он проходит (любой зареганный юзер будет иметь возможность бесплатно проходить упражнения даже будучи не записанным на какой-либо курс). Сортировка таблицы по-умолчанию — по дате активности. Но должна быть возможность отсортировать ещё по баллам, имени, «студент или вольный слушатель». Также должна быть возможность посмотреть подробную статистику прохождения упражнения каждым посетителем. Наверно стоит сделать в каждой строке таблицы кнопку типа «Подробнее», по которой будет открываться ещё одна страница. Формат подробной статистики пока сложно описать (скорее всего оформлена тоже в виде таблицы с сортировкой по времени попытки сдать выполненное упражнение), но точно должна быть информация о количестве попыток (в каждом упражнении будет возможность нажать кнопку «Проверить (сдать)» чтобы отобразились неправильные ответы), сделанных ошибках при каждой попытке (эта возможность ещё будет обсуждаться). Возможно будет выводиться потраченное на задание время.

Что касается отображения созданных упражнений. Пока детали досконально не прорабатывали (руководство проекта определяется с типом заданий). Но точно известно, что будут упражнения на вставку пропусков, выбор одного из вариантов, сопоставления (таблица где в одном столбце англ. вариант фразы, а в другом столбце русский вариант). Скорее всего надо предусмотреть миксы типов (т.е. в одном «упражнении» будет намешано полей разного типа). В общем, с этим будем определяться чуть позже. Но надеюсь уже понятно с чем имеете дело. Если не совсем, то пройдите по ссылке в первом сообщении, там есть инструкция как посмотреть сейчас работающие упражнения — посмотрите несколько.

Доступ к упражнениям будет через пункт главного меню. При клике по которому должна открываться страница со списком рубрик. Затем, на странице каждой рубрики будет открываться отсортированный по дате создания список упражнений рубрики (название, автор, описание). Должна быть предусмотрена возможность сортировки и по другим параметрам. Для админов и автора упражнения должны выводится дополнительные ссылки на управление упражнением и просмотр статистики.

У каждого зарегистрированного юзера сайта на странице профайла должна появится вкладка «Упражнения» (рядом с «Награды», «Лента» и т.д.), на которой выводится список пройденных упражнений (тех, на которых он хотя бы раз нажимал кнопку «Проверить») и в отдельном столбце кнопка «Статистика». Каждое название является ссылкой на само упражнение. По кнопке/ссылке(?) «Статистика» открывается страница с выводом процента ошибок. Возможно что-то ещё выводить будем (обсудим в процессе работы).

На странице упражнений должны быть кнопки социального шаринга/лайкинга и внутренний рейтинг (звёздочками).

Алгоритм проверки заданий пока не формализован, но думаю, что до начала работы все нюансы проясним.

Возможно потребуется сделать алгоритм начисления кармы за успешное прохождение упражнений с выводом в общую ленту событий и, возможно, в специальный модуль типа «Лучшие ученики».

Возможно что-то забыл упомянуть, если вспомню — допишу. Ещё вопросы есть?
#1 [ЕСТЬ РЕШЕНИЕ] Ищем программиста для реализации раздела «Упражнения» на образовательном сайте 24 июня 2013 в 14:59
Проекту WebiLang.com (обучению английскому языку с носителем языка) требуется реализовать программный комплекс (набор компонент+модули+плагины и т.п. — всё что потребуется) для организации на сайте раздела «Упражнения» (создание преподавателями упражнений, публикация упражнений на сайте, учёт статистики результатов тестирования, публикация результатов тестирования в профилях студентов и ответственных преподавателей). Сейчас на сайте есть такой раздел ( webilang.com/uprazhnenija ), но он реализуется с помощью cms moodle. Хотелось бы уйти от такой зависимости.

Подробного ТЗ нет, так как нет большого опыта работы с InstantCMS. Поэтому надеемся найти достаточно опытного человека, который сможет посоветовать наиболее оптимальную архитектуру комплекса и затем реализовать её. Дизайн и оформление должно быть основано на текущих стилях (стандартный шаблон 1.10.1).

Подробности задачи в процессе общения. На некоторые небольшие вопросы могу ответить здесь, но если настроены серьёзно, то лучше сразу связаться со мной по скайпу ( vimruler ) или по почте — vimruler@yandex.ru

От вас при обращении нужно указание опыта (ссылки на реализованные проекты, если есть) + оценка стоимости и времени работы (вилка цен). Сейчас бюджет данного проекта владельцем обозначен в рамках «до 20 тыс.рублей». Если задача вам интересна, но бюджет не устраивает, то всё равно дайте знать — вдруг ваши обоснования цены впечатлят руководителя проекта smile.

ЗЫ: проект ещё интересен тем, что по его завершению исполнитель может получить ещё один заказ — на редизайн сайта.
#1 [ЕСТЬ РЕШЕНИЕ] Средства отладки 7 июня 2013 в 21:32
Здравствуйте!

Возможно это надо было публиковать в где-нибудь в блогах. Но я новичок в сообществе и пока не во всех правилах и устоях разобрался. Поэтому публикую здесь и буду благодарен за советы и рекомендации.

В maxSite CMS для удобства отладки имеется несколько функций. Хотел бы показать две, которые делают красивым отладочный вывод содержимого нужной переменной. Может плохо искал и в InstantCMS тоже есть нечто подобное. Но мне оказалось проще добавить в ядро эту функция и использовать так, как уже привык. Вот она:

  1.  
  2. # функция для отладки
  3. function pr($var, $html = false, $echo = true)
  4. {
  5. if (!$echo) ob_start();
  6. else echo '<pre>';
  7. if (is_bool($var))
  8. {
  9. if ($var) echo 'TRUE';
  10. else echo 'FALSE';
  11. }
  12. else
  13. {
  14. if ( is_scalar($var) )
  15. {
  16. if (!$html) echo $var;
  17. else
  18. {
  19. $var = str_replace('<br />', "<br>", $var);
  20. $var = str_replace('<br>', "<br>\n", $var);
  21. $var = str_replace('</p>', "</p>\n", $var);
  22. $var = str_replace('<ul>', "\n<ul>", $var);
  23. $var = str_replace('<li>', "\n<li>", $var);
  24. $var = htmlspecialchars($var);
  25. $var = wordwrap($var, 300);
  26. echo $var;
  27. }
  28. }
  29. else print_r ($var);
  30. }
  31. if (!$echo)
  32. {
  33. $out = ob_get_contents();
  34. return $out;
  35. }
  36. else echo '</pre>';
  37. }
  38.  
  39. # функция, аналогичная pr, только завершающаяся die()
  40. # используется для отладки с помощью прерывания
  41. function _pr($var, $html = false, $echo = true)
  42. {
  43. pr($var, $html, $echo);
  44. die();
  45. }
  46.  
Можно было бы привести скриншоты. Но думаю, что код очевиден и если кому-то близка проблема, то ему будет проще попробовать на практике и самому решить, что делать дальше с этим знанием. Лично я бы был рад, если бы в InstantCMS обнаружилось нечто подобное.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.