2016-06-02 2 views
0

Я хочу контролировать действия, которые пользователь делает в тесте (нажмите на ответ, закончить тест и т. Д.)? Является ли это возможным?Создание плагина Moodle

Я думаю, что для этой задачи нужно создать плагин? Я прав? И дорогая община, можете ли вы помочь мне в каком-то материале - как разработать плагин? Может быть, можно рекомендовать некоторые сайты из статей? Потому что сейчас я не понимаю этого процесса.

Например, я знаю, что плагин необходимо установить в Moodle? Но где создавать плагин перед установкой? В moodle также? Но как экспорт, созданный в плагине Moodle, для установки пакета?

Для меня очень важный вопрос - как создать установочный пакет с плагином, который другие пользователи могут его установить.

Извините за большой вопрос и спасибо за помощь.

ответ

3

Эти документы разработчик - https://docs.moodle.org/dev/Main_Page

ЗАВИСИТ, какой плагин нужно развивать - https://docs.moodle.org/dev/Plugin_types

Если его часть курса, то вам необходимо будет разработать модуль активности - https://docs.moodle.org/dev/Activity_modules

Или если нет, то вам, вероятно, понадобится локальный плагин - https://docs.moodle.org/dev/Local_plugins

ОБНОВЛЕНИЕ:

Используйте локальный плагин и ответьте на один из событий викторины.

https://docs.moodle.org/dev/Event_2#Event_observers

Это обзор:

Создать локальный плагин - https://docs.moodle.org/dev/Local_plugins

Тогда в local/yourpluginname/db/events/php есть что-то вроде

defined('MOODLE_INTERNAL') || die(); 

$observers = array(
    array(
     'eventname' => '\mod_quiz\event\attempt_submitted', 
     'includefile' => '/local/yourpluginname/locallib.php', 
     'callback' => 'local_yourpluginname_attempt_submitted', 
     'internal' => false 
    ), 
); 

Это будет реагировать на attempt_submitted случае, когда пользователь отправляет викторину. Я предполагаю, что это событие, которое вам нужно будет использовать. Если нет, то есть и другие здесь /mod/quiz/classes/event/

Тогда в /local/yourpluginname/locallib.php есть что-то вроде

/** 
* Handle the quiz_attempt_submitted event. 
* 
* @global moodle_database $DB 
* @param mod_quiz\event\attempt_submitted $event 
* @return boolean 
*/ 
function local_yourpluginname_attempt_submitted(mod_quiz\event\attempt_submitted $event) { 
    global $DB; 

    $course = $DB->get_record('course', array('id' => $event->courseid)); 
    $attempt = $event->get_record_snapshot('quiz_attempts', $event->objectid); 
    $quiz = $event->get_record_snapshot('quiz', $attempt->quiz); 
    $cm  = get_coursemodule_from_id('quiz', $event->get_context()->instanceid, $event->courseid); 

    if (!($course && $quiz && $cm && $attempt)) { 
     // Something has been deleted since the event was raised. Therefore, the 
     // event is no longer relevant. 
     return true; 
    } 

    // Your code here to send the data to an external server. 

    return true; 
} 

Это должно вам начать работу.

+0

спасибо, я хочу создать плагин, который управляет действиями пользователя в викторине и отправляет его на внешний сервер. Это плагин активности? А как экспортировать плагин после создания? Просто поместите это .zip? –

+0

Я не уверен, что вы подразумеваете под «контролем действий пользователя» - вы хотите отправить данные на внешний сервер, когда пользователь отправляет викторину? –

+0

да, или где выбрать ответ на вопрос в викторине ... что-то вроде этого –