2016-11-18 9 views
0

私はMoodle 2.9.2を使用しています。割り当てアクティビティMoodle - ユーザがすでに課題を提出している場合、課題の説明を非表示にする方法

enter image description here

私は、ユーザーが既にマーキングのための割り当てを提出した場合、割り当ての説明を表示しないようにしたいです。なぜ私はそんなことをしたいのですか?これは、割り当て記述にユーザーが一度入力したいフォームが含まれているためです。そして、ユーザは、割り当て提出の実行の一部としてファイル添付をアップロードすることが期待されます。したがって、ファイルがアップロードされ、割り当てが提出された後、ユーザーはフォーム(i..e、割り当ての説明)にもうアクセスするべきではありません。

私は宿題をしました。私は既に、ゼロゼロコードを

public function render_assign_header(assign_header $header) { 
... 
} 

mod/assign/renderer.phpファイルに絞り込んだ。私が必要とするのは、ユーザーがマーキングの割り当てを既に提出したことを検出する方法です。そうであれば、説明セクションを表示しません。基本的には、ディキシー(235行目)を告げるだけです。

ただし、ユーザーが割り当てをまだ送信していない場合は、割り当てヘッダーのタイトルと説明をすべての栄光で表示します(行238〜252)。

だからここに私のコードは、見事に失敗した... function render_assign_header of class mod_assign_renderer of /mod/assign/renderer.php

...です。私のプログラミング講師のように、彼が私たちを慰めようとしていたとき、「少なくともアイデアはそこにある」と言っていました。

ここで私を助けることができる任意のMoodleプログラミングの達人? https://moodle.org/mod/forum/discuss.php?d=343136は、おそらくより良い方法はあり

答えて

1

:私は233

よろしく フランキーカム はところで、私の方法の狂気の起源はここにあるライン上のいくつかのヒント/ヘルプ/ポインタ/スケルトンコード/実際のコードを必要としますこれを行うことができます:

global $USER; 
    $assign = new \assign($this->page->context, $this->page->cm, $this->page->course); 
    $submission = $assign->get_user_submission($USER->id, false); 
    if (!$submission || $submission->status != ASSIGN_SUBMISSION_STATUS_SUBMITTED) 
    { 
    //header here 
    } 

/* 
* Render the header. 
* 
* @param assign_header $header 
* @return string 
*/ 
public function render_assign_header(assign_header $header) { 
    $o = ''; 

    if ($header->subpage) { 
     $this->page->navbar->add($header->subpage); 
    } 

    $this->page->set_title(get_string('pluginname', 'assign')); 
    $this->page->set_heading($this->page->course->fullname); 

    $o .= $this->output->header(); 

    global $USER; 
    $assign = new \assign($this->page->context, $this->page->cm, $this->page->course); 
    $submission = $assign->get_user_submission($USER->id, false); 
    if (!$submission || $submission->status != ASSIGN_SUBMISSION_STATUS_SUBMITTED) 
    { 

     $heading = format_string($header->assign->name, false, array('context' => $header->context)); 
     $o .= $this->output->heading($heading); 
     if ($header->preface) { 
      $o .= $header->preface; 
     } 

     if ($header->showintro) { 
      $o .= $this->output->box_start('generalbox boxaligncenter', 'intro'); 
      $o .= format_module_intro('assign', $header->assign, $header->coursemoduleid); 
      $o .= $header->postfix; 
      $o .= $this->output->box_end(); 
     } 

    } 

    return $o; 
} 
+0

スーパー!どうもありがとう。しかし、私はそれが動作するかどうかを見るためにこれを試さなければならない。私はあなたに時間と労力のための感謝として疑念の恩恵を与えています。 ;-) –

関連する問題