moodle で,課題の評点を一括アップロードするのに「インポート」を使っていたが,フィードバックが学生の画面にちゃんと反映されないという問題があった.
そうではなく,「評定ワークシート」を使えば,そういう問題は無いようだ.
課題作成の時に,「フィードバック」のところで,「オフライン評定ワークシート」にチェックを入れておく.
提出一覧を表示した時の「評定操作」ドロップダウンリストに「評定ワークシートのダウンロード」なるものが追加されている.
このダウンロードした評定ワークシートに,評点とフィードバックを書き入れて,「評定ワークシートのアップロード」を行えば良い.
その際,不要そうな列は削除しても良いが,以下の3つは削除してはいけない:
- ID
- 評点
- 最終更新日時(評定)
これらがないと,CSVファイルでないとかなんとか言われる.もちろん,フィードバックをアップロードするのなら,フィードバックの列も必要である.
日本語で使っていると,「更新されているレコードがない」とかなんとか言われてアップロードは常に失敗するようだ.
これは,「スプレッドシートよりも最近にMoodle内のレコードが修正されている場合、レコードの更新を許可します。」にチェックマークを入れることによって
回避可能.一応追いかけてみたところ:
mod/assign/feedback/offline/locallib.php の155行目:
$stalemodificationdate = ($usergrade && $usergrade->timemodified > ($modified + 60));
で$modifiedが日本語の時には常に0になっているので,レコードが stale だと判断されるため,このような動作になる.
$modified というのは,ダウンロードした時のスプレッドシートに入っている「最終更新日時(評定)」で,
ここには,日本語で日時が記録されているのだが,それを mod/assign/feedback/offline/importgradeslib.php の194行目
$result->modified = strtotime($record[$this->modifiedindex]);
で,整数にしている.この時点では,LANG=Cだと思うので,変換ができないということであろう.その日本語の日時文字列は,
どうもSQLで返してきている値なのではないかと思われる (詳細未確認).
keywords: assignment grade feedback import upload moodle