2016-11-18 121 views
0

我正在使用Moodle 2.9.2。分配活动。Moodle - 如果用户已经提交了作业,如何隐藏作业描述

enter image description here

我想,如果用户已经提交了标记分配给不显示委派描述。现在为什么我想要做这样的事情?原因是分配描述包含一个我希望用户填写一次的表单。预计用户将上传文件附件作为完成作业提交的一部分。因此,在上传文件并提交分配之后,用户不应该再访问表单(i..e,分配描述)。

我已经完成了我的功课。我已经将地面零代码缩小到文件mod/assign/renderer.php的

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

。我需要的是检测用户是否已经提交了用于标记的分配的方法,如果是这样,则不显示说明部分。基本上,除了吹口哨(235线),别无他法。

但是,如果用户尚未提交作业,则会在其所有荣耀(第238至252行)中显示作业标题标题和说明。

因此,这里是我的代码... function render_assign_header of class mod_assign_renderer of /mod/assign/renderer.php

...这失败壮观。就像我的编程讲师曾经说过他想安慰我们一样,“至少这个想法是存在的”。

任何能帮助我的Moodle编程大师吗?我需要一些技巧/帮助/指针/框架代码/实线码233

问候 羊羊锦 顺便说一句,我的方法的疯狂的根源就出在这里: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

超级!非常感谢。但我必须试试看看它是否有效。作为对您的时间和精力的赞赏,我会给您带来怀疑的好处。 ;-) –