2016-11-18 21 views
0

Я использую Moodle 2.9.2. Активность назначения.Moodle - как скрыть описание задания, если пользователь уже отправил задание

enter image description here

Я хочу, чтобы не отображать описание назначения, если пользователь уже представил задание для маркировки. Теперь, почему я хотел бы сделать такое? Причина этого заключается в том, что описание присваивания содержит форму, которую я хочу, чтобы пользователь заполнил один раз. Ожидается, что пользователь загрузит прикрепление файла как часть выполнения подачи задания. Поэтому после того, как файл был загружен и отправлено задание, пользователь больше не должен обращаться к форме (i..e, description description).

Я сделал домашнее задание. Я уже сузил нулевой код земли до

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 может помочь мне здесь? Мне нужны некоторые советы/помощь/указатели/скелет кода/реальный код на линии 233.

С уважением Фрэнки Kam Кстати, происхождение безумия моего метода лежит здесь: https://moodle.org/mod/forum/discuss.php?d=343136

ответ

1

Там, наверное, лучший способ , но вы можете сделать это:

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 
    } 

eg

/* 
* 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

Super! Большое спасибо. Но я должен попробовать это, чтобы увидеть, работает ли это. Я даю вам пользу от сомнений в качестве благодарности за ваше время и усилия. ;-) –

 Смежные вопросы

  • Нет связанных вопросов^_^