解答のフィードバックのエクスポート/インポート

解答のフィードバックのエクスポート/インポート

- 伸太郎 横井 の投稿
返信数: 2

はじめまして、お世話になります。

Moodle 2.0.3+を利用したサイトの設立の準備をしているものです。

小テスト用の大量の問題をオフラインで作成しようとして、GIFT形式の組み合わせ問題でテストしてみたところ、組み合わせ問題の解答のフィードバックが、エクスポート・インポート出来ないようです。

目的の機能は、question/format/gift/format.phpのwritequestion,readquestion辺りを書き換えれば実装できそうなのですが、ソースを書き換えてしまう事に抵抗があります。(ソースを勝手に書き換えてしまうと、Moodleのアップデート後等に動作しなくなるかもと心配しています)

出来るだけ安全に上記目的を実現する方法や指針について、

相談にのっていただければ助かります。

伸太郎 横井 への返信

Re: 解答のフィードバックのエクスポート/インポート

- 伸太郎 横井 の投稿

エクスポート・インポートする際、問題文と選択肢の間に、「"!".$generalfeedback."\n"」を追加する方法で実装成功しました。

良い方法があればご教授いただきたく。

question/format/gift/format.phpのreadquestion(360行目近辺)

case MATCH:
$answers = explode('=', $answertext);
if (isset($answers[0])) {
$answers[0] = trim($answers[0]);
}
if (empty($answers[0])) {
array_shift($answers);
}

//↓customize begin
if ($answers[0][0] == '!'){
$question->generalfeedback = substr($answers[0],1);
array_shift($answers);
}

//↑customize end
if (!$this->check_answer_count(2,$answers,$text)) {
return false;
break;
}

question/format/gift/format.phpのwritequestion(700行目近辺)

case MATCH:
$expout .= $this->write_name($question->name);
$expout .= $this->write_questiontext($question->questiontext, $question->questiontextformat);
$expout .= "{\n";
// ↓customize begin
$expout .="!".$question->generalfeedback . "\n";
// ↑customize end
foreach($question->options->subquestions as $subquestion) {
$expout .= "\t=" . $this->repchar($this->write_questiontext($subquestion->questiontext, $subquestion->questiontextformat, $question->questiontextformat)) .
' -> ' . $this->repchar($subquestion->answertext) . "\n";
}
$expout .= "}\n";
break;

伸太郎 横井 への返信

Re: 解答のフィードバックのエクスポート/インポート

- Tatsuya Shirai の投稿

Moodle Trackerに要望として投稿する手があります.その際に参考として今回の修正点をパッチとして添付します.

うまくいけば本家にコードが取り込まれて,バージョンアップごとに手作業で修正する作業からは解放されます.

もし修正個所が膨大な場合は,subversionなどのバージョン管理のシステムを構築して,本家の更新差分を運用中のシステム(改造済み)にマージする手段もあります.