学生が他の学生を採点したときに活動完了にする方法

学生が他の学生を採点したときに活動完了にする方法

- 俊章 江尻 の投稿
返信数: 6

初めて投稿します。

休業中の従業員向けに雇用調整助成金の教育訓練としてデジタルマーケティングを学ぶ講座をMoodleでつくっています。ITに不慣れな受講生が多いのですが、Moodleをつかうことで本当に役立つディスカッションなどができて助かっています。

ご相談したいのは、

学生が他の学生を採点(Grading)をしたときに、活動完了になるように設定をしたいと思ってます。どのアクティビティでどう設定すればいいか、ということです。

できれば、課題(Assignment)かオープンフォーラム(OpenForum)でできればと思っています。

現在、課題とオープンフォーラムでパーミッションを変更学生が採点できるようにはできています。

これで課題もオープンフォーラムも学生が採点することはできるようになっているのですが、採点することを完了条件にする方法を探しています。

ワークショップも進められたのですが、ワークショップの場合、課題提出を終わってからからPhaseを切り替えなければいけないと思います。

フォーラムで「トピックを作成して、返信をする」というような完了条件と同じように、自分の課題やトピックを投稿したタイミングで他人の投稿を採点してコメントなり返信をしたら完了、というような動きができると良いと思ってます。

以前、学なびのゲーミフィケーション:ゲームフルな学習デザイン方法論で、課題を提出したあと他の学生の投稿を採点するというものがあり、このような形で学生同士の回答を共有したいと思っています。

ご助言いただけますと幸いです。

俊章 江尻 への返信

Re: 学生が他の学生を採点したときに活動完了にする方法

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators
よろしければ、現在お使いのMoodleのバージョンをお教えください。
評点平均: お役立ち度: ★★★★★★★ (1)
Mitsuhiro Yoshida への返信

Re: 学生が他の学生を採点したときに活動完了にする方法

- 俊章 江尻 の投稿
大変失礼いたしました。
以下MoodleとDBとPHPのバージョンです。
moodle version 3.1 is required and you are running 3.5.5+ (Build: 20190418)
database mariadb (5.5.5-10.3.14-MariaDB) version 5.5.31 is required and you are running 10.3.14
php version 7.0.0 is required and you are running 7.2.16
俊章 江尻 への返信

Re: 学生が他の学生を採点したときに活動完了にする方法

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

以下の設定変更およびプログラム修正により、ご希望の動きに近くなるのではないでしょうか。

  1. Moodleのコースに編集権限のある教師またはサイト管理者として移動する。
  2. 作成済みの課題モジュール (例 「課題001」) に入る。
  3. 「管理 > 課題管理 > 設定を編集する」に移動する。
  4. 「活動完了」セクションの「完了するには学生はこの活動を送信する必要があります」チェックボックスをチェックする。
  5. 「保存して表示する」ボタンをクリックする。
  6. 「管理 > 課題管理 > パーミッション」に移動する。
  7. 「高度なロールオーバーライド」プルダウンメニューから「学生」を選択する。
  8. ケイパビリティ「課題を評定する mod/assign:grade」でパーミッション「許可」を選択する。
  9. 「変更を保存する」ボタンをクリックする。

---------------------------------------------------------

修正対象プログラム:
config.php

[ 修正前 ]
$CFG->directorypermissions = 0777;

require_once(__DIR__ . '/lib/setup.php');

// There is no php closing tag in this file,
// it is intentional because it prevents trailing whitespace problems!

[ 修正後 ]
$CFG->directorypermissions = 0777;

require_once(__DIR__ . '/lib/setup.php');

$CFG->completionsubmitgrade = true;

// There is no php closing tag in this file,
// it is intentional because it prevents trailing whitespace problems!

---------------------------------------------------------

修正対象プログラム:
mod/assign/mod_form.php

修正箇所:
292行目

[ 修正前 ]
    public function add_completion_rules() {
        $mform =& $this->_form;

        $mform->addElement('advcheckbox', 'completionsubmit', '', get_string('completionsubmit', 'assign'));
        // Enable this completion rule by default.
        $mform->setDefault('completionsubmit', 1);
        return array('completionsubmit');
    }

[ 修正後 ]
    public function add_completion_rules() {
        global $CFG;

        $mform =& $this->_form;

        $mform->addElement('advcheckbox', 'completionsubmit', '', get_string('completionsubmit', 'assign'));
        // Enable this completion rule by default.
        $mform->setDefault('completionsubmit', 1);

        if (!empty($CFG->completionsubmitgrade)) {
            $mform->addElement('advcheckbox', 'completiongrade', '', get_string('gradeuser', 'assign', get_string('students')) ,array('disabled'=>'disabled'));
            $mform->setDefault('completiongrade', 1);
            $mform->hideIf('completiongrade','completionsubmit');
        }

//        return array('completionsubmit');
        return array('completionsubmit', 'completiongrade');
    }

---------------------------------------------------------

修正対象プログラム:
mod/assign/locallib.php

修正箇所:
7135行目

[ 修正前 ]
        $completion = new completion_info($this->get_course());
        if ($completion->is_enabled($this->get_course_module()) && $instance->completionsubmit) {
            $completion->update_state($this->get_course_module(), $complete, $userid);
        }

        if (!$instance->submissiondrafts) {


[ 修正後 ]
        $completion = new completion_info($this->get_course());
        if ($completion->is_enabled($this->get_course_module()) && $instance->completionsubmit) {
            $gradedcount = $DB->count_records_sql("SELECT COUNT(*) FROM {assign_grades} WHERE (assignment = ? AND grader = ?)", array($instance->id, $USER->id));
            if (empty($CFG->completionsubmitgrade) || (!empty($CFG->completionsubmitgrade) && $gradedcount > 0)) {
                $completion->update_state($this->get_course_module(), $complete, $userid);
            }
        }

        if (!$instance->submissiondrafts) {

---------------------------------------------------------

修正対象プログラム:
mod/assign/locallib.php

修正箇所:
8117行目

[ 修正前 ]
    public function save_grade($userid, $data) {

        // Need grade permission.

[ 修正後 ]
    public function save_grade($userid, $data) {
        global $CFG, $USER;

        // Need grade permission.

---------------------------------------------------------

修正対象プログラム:
mod/assign/locallib.php

修正箇所:
8155行目

[ 修正前 ]
        } else {
            $this->apply_grade_to_user($data, $userid, $data->attemptnumber);

            $this->process_outcomes($userid, $data);
        }

        return true;
    }

[ 修正後 ]
        } else {
            $this->apply_grade_to_user($data, $userid, $data->attemptnumber);

            $this->process_outcomes($userid, $data);
        }

        $instance = $this->get_instance();
        if ($instance->teamsubmission) {
            $submission = $this->get_group_submission($USER->id, 0, true);
        } else {
            $submission = $this->get_user_submission($USER->id, true);
        }
        if ($submission->status == ASSIGN_SUBMISSION_STATUS_SUBMITTED) {
            $complete = COMPLETION_COMPLETE;
            $completion = new completion_info($this->get_course());
            $completion->update_state($this->get_course_module(), $complete, $USER->id);
        }

        return true;
    }
添付 activity_completion.png
評点平均: お役立ち度: ★★★★★★★ (3)
Mitsuhiro Yoshida への返信

Re: 学生が他の学生を採点したときに活動完了にする方法

- 俊章 江尻 の投稿
ありがとうございます。
もういろんなサイト見て、諦めかけていたのですが、光明が見えました。
大変ありがたいです。
こんな丁寧なご回答をいただけるとは、素晴らしいコミュニティですね。
私も回答者としてお役立つようがんばります

早速、ソースの変更箇所なども含め勉強させていただきます。

ただ難点がありまして、現状の契約ではプログラムのソースを書き換えができない契約になってまして、今後のバージョンアップも考えるとできるだけソースコードの変更を抑えたいとは思ってます。(事前に環境伝えきれず申し訳ございません)

当然その分やりたいことができないこともでてくるかとは思いますが、ソース改変ができない場合でできる範囲で検討できれば幸いです。

俊章 江尻 への返信

Re: 学生が他の学生を採点したときに活動完了にする方法

- Mitsuhiro Yoshida の投稿
画像 Developers 画像 Particularly helpful Moodlers 画像 Translators

大変残念ですが、現在のところ、ご希望の動きをプログラム修正以外では実現できないようです。

以下のページ最上部にもありますように「手動 (manual)」完了を選択されてはいかがでしょうか。課題モジュールの場合、課題設定画面の「活動完了」セクションの「完了トラッキング」で「ユーザが手動で活動を完了マークできる」を選択して活動完了を「手動 (manual)」にできます。この場合、学生ユーザが「自分の課題を提出して他の学生も採点しました」と完了マークをクリックして自己申告することになります。

"f you make no changes to a module whatsoever, it can only support 'manual' completion (where the user ticks a box). "

[Activity completion API - MoodleDocs]
https://docs.moodle.org/dev/Activity_completion_API

評点平均: お役立ち度: ★★★★★★★ (2)
Mitsuhiro Yoshida への返信

Re: 学生が他の学生を採点したときに活動完了にする方法

- 俊章 江尻 の投稿
真摯なご回答まことにありがとうございます
たしかに学生に採点がおわったら完了するように伝え、抜けていたらそこで指摘すればいいですね。

ありがとうございます。大変参考になりました。