2016-11-18 72 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

超級!非常感謝。但我必須試試看看它是否有效。作爲對您的時間和精力的讚賞,我會給您帶來懷疑的好處。 ;-) –