Обсуждение шаблона:ZmQuiz

Материал из Абсурдопедии
Перейти к:навигация, поиск

Синтаксис без шаблонов[править]

Раз тест целиком рисуется скриптом, то не упростить ли синтаксис

{{ZmQuiz
    |тип=очки
    |вопросы=
    {{ZmQuiz-вопрос
        |вопрос=Вы любите розы?
        |ответ1=Да | очки1=3
        |ответ2=Нет | очки2=2
        |ответ3=Затрудняюсь ответить | очки3=0
    }}
    {{ZmQuiz-вопрос
        |вопрос=Кто подставил кролика Роджера?
        |ответ1=Я | очки1=7
        |ответ2=Не я | очки2=5
    }}
...

до какого-нибудь такого:

|тип=очки
* Вы любите розы?
Да | очки=3
Нет | очки=2
Затрудняюсь ответить | очки=0
* Кто подставил кролика Роджера?
Я | очки=7
Не я | очки=5
...

Скрипту всё равно, что искать, $('.zmQuizAnswer') или text.match(/^\*/m). Edward Chernenkoo a 18:15, 10 июля 2017 (UTC)

Набросал пример парсера. На тестовой странице выдаёт

var options = {"тип":"очки"};
var questions = {"Вы любите розы?":{"Да":{"очки":"3"},"Нет":{"очки":"2"},"Затрудняюсь ответить":{"очки":"0"}},"Кто подставил кролика Роджера?":{"Я":{"очки":"7"},"Не я":{"очки":"5"}}}

Edward Chernenkoo a 19:27, 10 июля 2017 (UTC)

Класс! Да, это имеет смысл однозначно. Счас посмотрю, попробую переписать. — ГиМЦ-Д 01:51, 11 июля 2017 (UTC)

Возврат к предыдущему шагу кнопкой Back браузера[править]

Сейчас у всех шагов квеста один и тот же URL, поэтому кнопкой Back нельзя вернуться к предыдущему шагу (автору — чтобы проверить квест на ошибки, читателю — чтобы прочитать весь квест). Исправить это можно так:

  1. Когда мы хотим перейти на вопрос №5, мы меняем URL страницы: window.location.hash = '#q5'; (страница при этом не перезагружается, просто добавляется #q5 в конце URL).
  2. Сама отрисовка вопроса находится в событии onhashchange:
    $( window ).on( 'hashchange', function() {
      /* тут проверяем window.location.hash и узнаём, какой вопрос рисовать */
      var nr = parseInt( window.location.hash.replace( /^#q/, '' ) );
      if ( !nr ) {
        return; /* Не начинается с #q - значит, не наш anchor */
      }
    
      /* Тут рисуем вопрос номер nr */
    
    } );
    
  3. Таким образом, если пользователь с вопроса #q5 перешёл на вопрос #q7 и нажал кнопку Back, то URL поменяется на #q5, и код снова покажет вопрос №5.

Edward Chernenkoo a 09:34, 11 июля 2017 (UTC)