Разворачивающийся список категорий курсов

Разворачивающийся список категорий курсов

от Alexandre Scherbyna -
Количество ответов: 46

Подскажите, кто знает, чем создается разворачивающийся список категорий курсов, такой как на сайте http://moodle.insa-lyon.fr/.

Еще меня удивило, что на этот французский сайт я зашел впервые, не регистрировался, а часть интерфейса уже на русском языке. Причем, наблюдается это только в Firefox. Как это можно объяснить?

В ответ на Alexandre Scherbyna

Re: Разворачивающийся список категорий курсов

от Vadim Tabunshchik -
Изображение пользователя Developers
Похоже, это их собственная разработка на основе доп. библиотеки lib/dbtreeview, включающей java-скрипт и css, а может и ошибаюсь. Может, это тема такая установлена.
Что-то наподобие: http://tracker.moodle.org/browse/MDL-15749
>> Причем, наблюдается это только в Firefox.
А у меня и в ИЕ, и в Гугл Хром улыбаюсь
>> Как это можно объяснить?
Определяют по АйПи, откуда пришел пользователь и выдают страницу (то, что доступно) на его языке, как-то так.
В ответ на Vadim Tabunshchik

Re: Разворачивающийся список категорий курсов

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода
Скорее всё-таки не по IP. Каждый браузер посылает строчку с языками, на которых бы он хотел получать информацию в первую очередь. Придумано ещё на заре интернета. В firefox это в настройках на вкладке "содержимое". На moodle.org, кстати, это тоже работает.
В ответ на Alexandre Scherbyna

Re: Разворачивающийся список категорий курсов

от Evheniy Shapoval -
Как подсказывает код, в основе дерева лежит http://rcardon.free.fr/dbtreeview

В ответ на Evheniy Shapoval

Re: Разворачивающийся список категорий курсов

от Vadim Tabunshchik -
Изображение пользователя Developers
Нарыл больше инфы об этом. Основано на library "PHP DBTreeView".
Если интересно, архив во вложении. Можно прочитать про установку (французский) и скачать тут: http://blog.cyberlearn.ch/?p=73
Еще сайт с таким списком: http://cyberlearn.hes-so.ch/
В ответ на Vadim Tabunshchik

Re: Разворачивающийся список категорий курсов

от Alexandre Scherbyna -
Спасибо большое, буду разбираться.
В ответ на Alexandre Scherbyna

Re: Разворачивающийся список категорий курсов

от Игорь Ярошенко -
Судя по информации на сайте разработчика для разворачивающегося списка категорий курсов необходим PHP 5, а у моего хостера 4 версия PHP.
Есть ли средства для создания аналогичного функционала на PHP 4?
В ответ на Alexandre Scherbyna

Re: Разворачивающийся список категорий курсов

от Vitaliy Puterov -
Установил по инструкции, но код на http://blog.cyberlearn.ch/?p=73 плохо читается. Поогите найти ошибку в строчке во вложении Стили описанные в файле treeview.css не работают. Файл treeview.css положил в папку текущей темы.
Приложение 2010-11-10_0623.png
В ответ на Alexandre Scherbyna

Re: Разворачивающийся список категорий курсов

от Vitaliy Puterov -
Названия категорий и курсов нужно выравнить по левому краю.
Приложение 2010-11-10_0618.png
В ответ на Vitaliy Puterov

Re: Разворачивающийся список категорий курсов

от Alexandre Scherbyna -

Как это чинить я не знаю, но знаю, что есть блок, который отображает курсы, на которые записан студент в таком виде:

В ответ на Alexandre Scherbyna

Re: Разворачивающийся список категорий курсов

от Vitaliy Puterov -

Кто-нибудь установил ajax-treeview. Поделитесь пожалуйста результатами. Может вы используете другие способы для работы с большим количеством категори?

В ответ на Alexandre Scherbyna

Re: Разворачивающийся список категорий курсов

от Айдар Зайнуллин -

Может кто нибудь поможет правильно оформить этот код

printf(« <script src=\ »%s/treeview.js\ » type=\ »text/javascript\ »></script>\n »,
« lib/dbtreeview »);
printf(‘<link href= »%s/treeview.css » rel= »stylesheet » type= »text/css » media= »screen »/>’. »\n »,
« lib/dbtreeview »);

В ответ на Айдар Зайнуллин

Re: Разворачивающийся список категорий курсов

от Vitaliy Puterov -
У меня получилось так, но вторая строчка не работает.
Приложение 2010-11-11_1141.png
В ответ на Vitaliy Puterov

Re: Разворачивающийся список категорий курсов

от Vadim Tabunshchik -
Изображение пользователя Developers

Виталий, может проще не париться со второй строкой, а просто из файла treeview.css перенести стили в файл styles_layout.css вашей темы и не подключать его в индекс.рнр.

Тогда и этот баг исчезнет - "link должен быть внутри элемента head, а в коде страницы он попадет в body".

Айдар, Виталий правильно код написал, только картинкой выложил улыбаюсь

А по поводу - "Самое главное что на их сайте все работает!" - так у них на сайте и тема соответствующая используется, называется cyberlearn. Вы же не знаете стили их темы (тот же styles_layout.css, из кот. ТОЖЕ используются стили и классы и для этого списка категорий/курсов), поэтому и определить, где это выравнивание указывается, сложно.

В ответ на Vadim Tabunshchik

Re: Разворачивающийся список категорий курсов

от Vitaliy Puterov -
Попробовал прописать в styles_layout.css - результат не изменился.
В ответ на Vitaliy Puterov

Re: Разворачивающийся список категорий курсов

от Айдар Зайнуллин -
Может у кого то получилось приспособить? А то у нас слишком много категорий и подкатегорий, поэтому смотриться не очень!
В ответ на Айдар Зайнуллин

Re: Разворачивающийся список категорий курсов

от Vitaliy Puterov -

В коде нет ссылок на стиль treeview.css. Он им не пользуется. Удалил класс .categorylist в файле styles_layout.css.

Результат есть  улыбаюсь, но надо будет сделать "правильно".

В ответ на Vitaliy Puterov

Re: Разворачивающийся список категорий курсов

от Айдар Зайнуллин -

В принципе да, так работает! Но потом криво отображаются курсы уже в списке курсов при редактировании. Если вас не затруднит, не могли бы вы выложить работающий вариант?

В ответ на Айдар Зайнуллин

Re: Разворачивающийся список категорий курсов

от Vitaliy Puterov -

link должен быть внутри элемента head, а в коде страницы он попадет в body

В ответ на Vitaliy Puterov

Re: Разворачивающийся список категорий курсов

от Айдар Зайнуллин -

То есть у вас выравнивание тоже не работает! Та же проблема! Самое главное что на их сайте все работает!

В ответ на Айдар Зайнуллин

Re: Разворачивающийся список категорий курсов

от Vadim Tabunshchik -
Изображение пользователя Developers

Ну что, вернемся к нашему "дереву"? всё отлично

Как и говорилось ранее, необходимо в стиль используемой на сайте темы вносить дополнения в файл styles_layout.css (если в вашей теме нет такого файла, то создайте его и подключите в файле темы config.php. Не путать с основным конфигурационным файлом!). Подключать так (пример из темы formal_white): $THEME->sheets = array('fw_layout','fw_color','fw_fonts'); т. е. тут подключены 3 файла - стили, цвета, шрифты.

Сначала все делаем по уже известной инструкции (см. ссылки в предыдущих сообщениях).

Стили из treeview.css я все-таки перенес в основной файл стилей styles_layout.css, чтоб убить тег "link" в теле HTML улыбаюсь

Теперь, собственно, о стилях, кот. нужно прописать в styles_layout.css (можно скопипастить):

.categorylist {
height: 22px;
margin-left: auto;
margin-right: auto;
width: 98%;
}

.categorylist .category.name {
vertical-align: middle;
}

.categorylist .category.image {
background: url("pix/i/course.gif") no-repeat scroll center center transparent;
width: 24px;
}

.categorylist .course.name {
vertical-align: middle;
width: auto;
}

.categorylist .course.info {
background-image: none;
text-align: right;
width: 80px;
}

.categorylist .node {
background: url("pix/ftv2node.gif") no-repeat scroll center center transparent;
height: 22px;
width: 16px;
}

.categorylist .lastnodeCat {
background: url("pix/ftv2lastnodeCat.gif") no-repeat scroll center center transparent;
height: 22px;
width: 16px;
}

.categorylist .lastnode {
background: url("pix/ftv2lastnode.gif") no-repeat scroll center center transparent;
height: 22px;
width: 16px;
}

.categorylist .course.image {
background: url("pix/i/course1.gif") no-repeat scroll center center transparent;
width: 24px;
}

.categorylist .category.number {
text-align: left;
}

.categorylist .vertline {
background: url("pix/ftv2vertline.gif") repeat-y scroll center top transparent;
height: 22px;
width: 16px;
}

.categorylist .novertline {
background: url("pix/ftv2blank.gif") repeat-y scroll center top transparent;
height: 22px;
width: 16px;
}

.categorylist .ftv2mnode {
background: url("pix/ftv2mnode.gif") no-repeat scroll left top transparent;
height: 22px;
width: 16px;
}

Можно поиграться с параметрами стилей, т. к. даже размер шрифта оказывает влияние на вид "дерева".

Важно: Не забудьте после распаковки архива ajax-treeview.zip на сайт пройтись по файлам и заменить название темы cyberlearn на название вашей темы!

Что получилось у меня - смотрите на рисунке:
курсыGood luck! улыбаюсь

В ответ на Vadim Tabunshchik

Re: Разворачивающийся список категорий курсов

от Vadim Tabunshchik -
Изображение пользователя Developers

Пара замечаний к предыдущему сообщению:

  1. Стиль
    .categorylist .category.number {
    text-align: left;
    }

    прописывать НЕ НУЖНО ("разбегутся" числа, показывающие кол-во курсов на странице course/index.php).
  2. Не забудьте активировать опцию "Быстрый поиск изображений (smartpix) в "Управление Разное Экспериментальные возможности".
  3. В прикрепленном архиве немного другие картинки (с родными из архива "ветки" выглядят прерывистыми (сравнить можно скрин из пред. сообщения с сайтом СДО ПГТУ) улыбаюсь
В ответ на Vadim Tabunshchik

Re: Разворачивающийся список категорий курсов

от Роман Марченко -
Vadim Tabunshchik не могли бы вы скинуть файлы для вот этого дела... ника не могу разобраться с этой бедой... =(
В ответ на Vadim Tabunshchik

Re: Разворачивающийся список категорий курсов

от Роман Марченко -
Или хотя бы описание по подробней а то с переводом с французского ничего не понятно... буду признателен если найдете пару минут на меня... Очень нужно...
В ответ на Роман Марченко

Re: Разворачивающийся список категорий курсов

от Vadim Tabunshchik -
Изображение пользователя Developers

Инструкция по установке разворачивающегося списка курсов

  1. скачиваем прикрепленный архив dbtreview.zip. (Лишнее убрано, рисунки заменены, прямые линки на тему оформления заменены на $CFG->themewww .'/'.current_theme().')
  2. каталог dbtreeview копируем в moodle/lib
  3. каталог pix копируем в theme/Ваша_тема_сайта
  4. открываем index.php (в корне moodle) и вносим изменения:
    • после строки require_once($CFG->dirroot .'/lib/blocklib.php'); добавляем строку require_once($CFG->dirroot .'/lib/dbtreeview/menu.php');
    • после строки print_header($SITE->fullname, $SITE->fullname, 'home', '','<meta name="description" content="'. strip_tags(format_text($SITE->summary, FORMAT_HTML)) .'" />',
      true, '', user_login_string($SITE).$langmenu); добавляем строку printf("<script src=\"%s/treeview.js\" type=\"text/javascript\"></script>\n", "lib/dbtreeview");
    • находим case FRONTPAGECATEGORYCOMBO: Вместо строки print_whole_category_list(NULL, NULL, NULL, -1, true); вставляем
      $rootAttributes = array("code" => "0");
      $treeID = "treev1";
      $tv = DBTreeView::createTreeView(
      $rootAttributes, "lib/dbtreeview",
      $treeID);
      $tv->printTreeViewScript();
  5. Содержимое styles_layout.css копируем и вставляем в файл styles_layout.css вашей темы, установленной на сайте.
  6. В настройках отображения главной страницы сайта до и после входа пользователя (Управление ► Главная страница ► Настройки главной страницы) выбираем "Комбинированный список".
  7. Всё. У меня работает. улыбаюсь
В ответ на Vadim Tabunshchik

Re: Разворачивающийся список категорий курсов

от Jury N. Belonozhkin -

У меня тоже заработало. Спасибо, Вадим!
Но, если не трудно, скажите: как сделать выравнивание категорий не по центру, а влево? И как сделать показ количества курсов в категориях? Как сделать показ направляющих вертикальных линий как в СДО ПГТУ при развертывании категорий?

В ответ на Jury N. Belonozhkin

Re: Разворачивающийся список категорий курсов

от Vadim Tabunshchik -
Изображение пользователя Developers

>> как сделать выравнивание категорий не по центру, а влево
>> Как сделать показ направляющих вертикальных линий

Все это прописано в файле стилей, кот. находится в архиве моего сообщения с инструкцией. Если Вы скопировали его содержимое и вставили в файл style_layout.css своей темы, то все должно отображаться красиво. Если у Вас в теме нет этого файла, создайте его и подключите в конфигурационном файле темы config.php: название файла должно быть в строке (пример) $THEME->sheets = array('хх_layout','хх_color','хх_fonts');

Работать обязано в ЛЮБОЙ теме оформления. В тех. детали вдаваться не буду.

Уточнить причину в Вашем случае помог бы скриншотик.

>> как сделать показ количества курсов в категориях?

Только внесением изменений в код. На досуге попробую сделать. Обязательно выложу сюда.

Всем спасибо за "СПАСИБО". Рад, что помогло и что пользуетесь. улыбаюсь

В ответ на Vadim Tabunshchik

Re: Разворачивающийся список категорий курсов

от Jury N. Belonozhkin -

Да, Вадим. Все получилось замечательно. И помогло и пользуемся! Можете посмотреть результат. Спасибо за оперативный ответ.

В ответ на Vadim Tabunshchik

Re: Разворачивающийся список категорий курсов

от Александр Анисимов -
Изображение пользователя Майнтейнер перевода Изображение пользователя Эксперт по Moodle

Вадим,  спасибо Вам! одобряю

Rate: Помогло!

В ответ на Александр Анисимов

Re: Разворачивающийся список категорий курсов

от Айдар Зайнуллин -

Добрый вечер! А как можно вставить данный список не на главную страницу, а на страницу курсы? Или такой возможности нет?

 

В ответ на Vadim Tabunshchik

Re: Разворачивающийся список категорий курсов

от Вячеслав Козлов -

Сделал все по инструкции, а при заходе на сайт выскакивает js alert с ошибкой: badServerResponse. С чем это может быть связано?

В ответ на Вячеслав Козлов

Re: Разворачивающийся список категорий курсов

от Вячеслав Козлов -

Но при этом поставил на домашнем компе- все работает. В чем проблема?

В ответ на Вячеслав Козлов

Re: Разворачивающийся список категорий курсов

от Vadim Tabunshchik -
Изображение пользователя Developers

Догадайтесь с трех раз улыбаюсь

На удаленном сервере не работает, дома (локально) - работает.
Значит, проблема в настройках сервера, о котором нам неизвестно ни капли. Как отвечать? Гадать на кофейной гуще?

Дайте подробную информацию о сервере, на котором не работает (пароли не нужно улыбаюсь)

ЗЫ: Помнится, кто-то, когда-то жаловался, что такая ошибка появлялась, когда на сервере включено gzip-сжатие страниц. Поищите тему.

В ответ на Vadim Tabunshchik

Re: Разворачивающийся список категорий курсов

от Вячеслав Козлов -

Какая конфигурация требуется? phpinfo? Сравнил gzip на неработающем и работающем...Везде стоят 3 опции:

HTTP_ACCEPT_ENCODING

Accept-Encoding

_SERVER["HTTP_ACCEPT_ENCODING"]

Значение всех: gzip

В ответ на Vadim Tabunshchik

Re: Разворачивающийся список категорий курсов

от Паша Базанов -

Вадим, здравствуйте.

Все сделал так, как описано выше - я о разворачивающемся списке! все получилось, но почему-то изменился цвет темы... (тема: metal)! что делать?

В ответ на Паша Базанов

Re: Разворачивающийся список категорий курсов

от Vadim Tabunshchik -
Изображение пользователя Developers

Паша, установка "разворачивающегося списка" не может изменить ни цвет темы, ни саму тему оформления. Вспоминайте, может сами случайно тему поменяли при "манипуляциях" со списком?

что делать?

В админке руками установить тему, которая была раньше. улыбаюсь

Для Вячеслав Козлов: Вы, случайно, не IE9 используете? Это в нем выбивает ошибку при обработке генерирующегося java-скриптом xml-файла. Нужно включать режим совместимости, тогда эта ошибка не появляется и всё работает нормально. Сорри за поздний ответ улыбаюсь

В ответ на Vadim Tabunshchik

Re: Разворачивающийся список категорий курсов

от Владимир Роганов -

Использовал Вашу рекомендацию. Все получилось и работает отлично.

При поиске удалось найти только архив ajax-treeview.rar

А так все очень хорошо!

В ответ на Владимир Роганов

Re: Разворачивающийся список категорий курсов

от Александр Сакович -

Применима ли "Инструкция по установке разворачивающегося списка курсов" (Vadimа Tabunshchikа) для moodle 2.2?

В ответ на Александр Сакович

Re: Разворачивающийся список категорий курсов

от Vadim Tabunshchik -
Изображение пользователя Developers

Применима ли "Инструкция…" для moodle 2.2?

Нет, а зачем Вам это нужно в 2.2?

Выберите в настройках главной страницы "Комбинированный список" отображения списка курсов и будет Вам счастье:

курсы

Разворачивается и сворачивается всё не хуже, чем после "плясок с бубном" в версии 1.9, причем, БЕЗ всякого вмешательства в исходный код. улыбаюсь

В ответ на Vadim Tabunshchik

Re: Разворачивающийся список категорий курсов

от Sergey Zolotykhin -

а как можно сделать, чтобы комбинированный список в moodle 2 был по-умолчанию свернут?

В ответ на Sergey Zolotykhin

Re: Разворачивающийся список категорий курсов

от Vadim Tabunshchik -
Изображение пользователя Developers

а как можно сделать, чтобы комбинированный список в moodle 2 был по-умолчанию свернут?

Сергей, вот Вы "любопытный"! Я в хорошем смысле этого слова улыбаюсь

Пришлось "порыться" в исходниках Мудл 2.2.3, чтоб удовлетворить Ваш "запрос".

Итак: за формирование списка категорий, подкатегорий и курсов в "Комбинированном списке" отвечают функции сourse_category_tree(…) и course_category_tree_category(…) в файле moodle/course/renderer.php. Найдено в итоге "тщательного исследования" moodle/index.php - case FRONTPAGECATEGORYCOMBO, строка 235: echo $renderer->course_category_tree(get_course_category_tree());

Находите в описании protected function course_category_tree_category файла moodle/course/renderer.php строки

if ($hassubcategories || $hascourses) {
            $classes[] = 'with_children';
            if ($depth > 10) { // меняте 1 (один) на 0 (ноль)

Пробуйте улыбаюсь

В ответ на Vadim Tabunshchik

Re: Разворачивающийся список категорий курсов

от Евгений Баулин -

В 2.2.4 я эти строки нашел и поменял. Спасибо большое за наводку!

А, вот, где найти этот параметр в 2.5?

в файле moodle/index.php - case FRONTPAGECATEGORYCOMBO - это строка 263:

echo html_writer::tag('a', get_string('skipa', 'access', textlib::strtolower(get_string('courses'))), array('href'=>'#skipcourses', 'class'=>'skip-block'));

И где там ловить куда идти дальше, я если честно, не понял.