Шаблон QuizFactory

Автор JBrown, 11 февраля 2021, 21:06

0 Пользователи и 1 гость просматривают эту тему.

JBrown

Шаблон QuizFactory предназначен для создания тестов, опросов или викторин в виде презентации Impress.

Особенности:

  • Мультиплатформенность
  • Переключаемый язык интерфейса (английский и русский) с возможностью расширения
  • Использование любых средств оформления, доступных в Impress
  • Формирование отчетов в формате PDF
  • Не требуется знаний программирования, достаточно уметь работать в Impress

Созданные тесты могут быть полезны при проведении тестирования психологом, при проверке знаний учителем или для организации познавательных викторин.

JBrown

#1
Во вложении описание QuizFactory.
(Есть обновленное описание. См. ниже)

JBrown

#2
Во вложении сам шаблон QuizFactory
(Есть обновленный шаблон. См. ниже)

JBrown

Во вложении примеры созданных тестов

JBrown

Во вложении пример сервисного отчета (тест excon)

JBrown

Дополнил шаблон двумя сервисными функциями. Одна из них ускоряет создание теста. Во вложении дополненное описание и сам шаблон.

JBrown

Во вложении еще один пример теста. В нем нужно подобрать слово к картинке. Ответы предлагаются в виде аудиозаписи, которую нужно прослушать (нажать на желтый треугольник). Затем нужно определиться с ответом и поставить галочку напротив него. Тест проверял в Windows/FreeBSD в LibreOffice 6.4/7.1. Работало и там, и там.

JBrown

Если в ответах только "да" и "нет", то создать тест можно очень быстро. Вот один из таких тестов. Он настроен на получение результата в виде отчета (отчет нужно искать в поддиректории reports). Можно создать бланк для ручного заполнения (макрос Blank).

JBrown

Вот еще один тест на "да" и "нет". Здесь больше вопросов, чем в предыдущем тесте. На нем еще раз опробовал макрос ReplicatingSlides, который дублирует слайды с переименованием элементов. В качестве эксперимента пробовал добавлять слайды так, чтобы их количество было 999. Макрос справился, и Impress тоже.

JBrown

Вот тест с другим оформлением. В нем ответы расположены в виде шкалы (синие вертикальные линии - на них и нужно нажимать клавишу мыши, делая свой выбор).

JBrown

Оформил тест по биологии (сами вопросы и изображения взял в интернете)
Тест "Клетки и ткани"
MD5: abe260152340fa01307b4f4a793b5470  "biocell.zip"
Извиняюсь за невнятный адрес, но прикрепить файл сюда не получилось из-за размера (6,5Мб)

Использовал такую версию LibreOffice:
Version: 7.5.4.2 (X86_64) / LibreOffice Community
Build ID: 50(Build:2)
CPU threads: 2; OS: FreeBSD 13.2; UI render: default; VCL: qt5 (cairo+xcb)
Locale: ru-RU (ru_RU.UTF-8); UI: ru-RU
Calc: threaded

Обнаружил следующее:
Отчет в виде pdf-файла не формируется (в директории reports файл не появляется). Мой отчет делается из шаблона "summary.ott". В нем есть закладки (закладка имеет текст). При составлении отчета в то место, где находится закладка вставляются данные. Затем текст закладки заменяется на пустую строку. Оказалось, что такая замена приводит к удалению самой закладки. Поскольку закладки я перебираю в простом цикле, то удаление закладки приводит к аварийному завершению (работа сценария тихо прекращается). В предыдущей версии LibreOffice такого поведения не наблюдал. Теперь заменяю текст закладки не на пустую строку, а на пробел. Отчет вновь стал формироваться. Не знаю, специально были сделаны такие изменения или нет.

mikekaganski

Цитата: JBrown от 10 ноября 2023, 20:53Отчет в виде pdf-файла не формируется (в директории reports файл не появляется). Мой отчет делается из шаблона "summary.ott". ...

Пожалуйста, подумайте, что должен сделать человек, читающий Ваш вопрос, чтобы понять проблему и увидеть её. В Вашем архиве 6 файлов и 2 папки. В файле biocell.odp 34 макроса и 34 слайда. Что я должен сделать / нажать / запустить, чтобы возникла проблема? В каком макросе Вы её нашли? Нет ли возможности вместо всего этого приложить один маленький файл с одним маленьким макросом и одной кнопкой "нажми меня", где бы проблему можно было увидеть?
С уважением,
Михаил Каганский

JBrown

Ой! Не ожидал, что это будет кому-то интересно. Не рассчитывал на ответ, просто поделился своими наблюдениями.

Если подробно, то вот:

Есть процедура MakeReport. Она запускается, когда тест пройден и в подкаталоге reports есть файл 'summary.ott'
Для того, чтобы ускорить отладку, делал тест из одного вопроса (слайд №33)

1802 SUB MakeReport
...
1843 FOR i=0 TO docBookmarks.count-1
...
1846    currentBookmark = docBookmarks.GetByIndex(i)
...
1848    SELECT CASE currentBookmark.name
...
1859    CASE "Key"
...
1899    ' Текст закладки будет лишним, поэтому удаляем его
1900     currentBookmark.anchor.string = " "
...
2017    END SELECT
2018 NEXT i

Изначально строка 1900 выглядела так:
currentBookmark.anchor.string = ""Но теперь у меня такая строка удаляет закладку совсем (выяснил это, проходя сценарий по шагам). Выполнение сценария прерывается на следующей итерации цикла. Как следствие, файл с отчетом в подкаталоге reports не появляется.

Проверил создание закладок во Writer. Вроде бы не запрещается создавать закладки без 'текста'.

В цикле подобных мест еще два (для "Protocol" и "Resume")

mikekaganski

Не могу воспроизвести, используя Version: 7.6.3.1 (X86_64) / LibreOffice Community
Build ID: c4af5b1259bceea6e979e6fe2435dbee7a5a87c2
CPU threads: 12; OS: Windows 10.0 Build 19045; UI render: default; VCL: win
Locale: ru-RU (ru_RU); UI: en-US
Calc: CL threaded

В приложении текст с одной закладкой на слове "Integer". Макрос Main выполняет такой код:

  currentBookmark = ThisComponent.bookmarks(0)
  currentBookmark.anchor.string = ""

После его выполнения закладка не удаляется.
С уважением,
Михаил Каганский

JBrown

Проверил файл из вложения. Действительно, закладка не пропадает.

Свой сценарий проверял через пошаговое выполнение и там в окне слежения за переменными массив закладок "терял" элемент. Перепроверю все еще раз.