以下の設定変更およびプログラム修正により、ご希望の動きに近くなるのではないでしょうか。
- Moodleのコースに編集権限のある教師またはサイト管理者として移動する。
- 作成済みの課題モジュール (例 「課題001」) に入る。
- 「管理 > 課題管理 > 設定を編集する」に移動する。
- 「活動完了」セクションの「完了するには学生はこの活動を送信する必要があります」チェックボックスをチェックする。
- 「保存して表示する」ボタンをクリックする。
- 「管理 > 課題管理 > パーミッション」に移動する。
- 「高度なロールオーバーライド」プルダウンメニューから「学生」を選択する。
- ケイパビリティ「課題を評定する mod/assign:grade」でパーミッション「許可」を選択する。
- 「変更を保存する」ボタンをクリックする。
---------------------------------------------------------
修正対象プログラム:
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;
}