Merge branch 'MDL-27065-workshop-categories' of git://github.com/mudrd8mz/moodle
This commit is contained in:
+35
-2
@@ -102,8 +102,9 @@ function workshop_add_instance(stdclass $workshop) {
|
||||
// re-save the record with the replaced URLs in editor fields
|
||||
$DB->update_record('workshop', $workshop);
|
||||
|
||||
// update gradebook item
|
||||
// create gradebook items
|
||||
workshop_grade_item_update($workshop);
|
||||
workshop_grade_item_category_update($workshop);
|
||||
|
||||
return $workshop->id;
|
||||
}
|
||||
@@ -150,8 +151,9 @@ function workshop_update_instance(stdclass $workshop) {
|
||||
// re-save the record with the replaced URLs in editor fields
|
||||
$DB->update_record('workshop', $workshop);
|
||||
|
||||
// update gradebook item
|
||||
// update gradebook items
|
||||
workshop_grade_item_update($workshop);
|
||||
workshop_grade_item_category_update($workshop);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1100,6 +1102,37 @@ function workshop_update_grades(stdclass $workshop, $userid=0) {
|
||||
workshop_grade_item_update($workshop, $submissiongrades, $assessmentgrades);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the grade items categories if they are changed via mod_form.php
|
||||
*
|
||||
* We must do it manually here in the workshop module because modedit supports only
|
||||
* single grade item while we use two.
|
||||
*
|
||||
* @param stdClass $workshop An object from the form in mod_form.php
|
||||
*/
|
||||
function workshop_grade_item_category_update($workshop) {
|
||||
|
||||
$gradeitems = grade_item::fetch_all(array(
|
||||
'itemtype' => 'mod',
|
||||
'itemmodule' => 'workshop',
|
||||
'iteminstance' => $workshop->id,
|
||||
'courseid' => $workshop->course));
|
||||
|
||||
if (!empty($gradeitems)) {
|
||||
foreach ($gradeitems as $gradeitem) {
|
||||
if ($gradeitem->itemnumber == 0) {
|
||||
if ($gradeitem->categoryid != $workshop->gradecategory) {
|
||||
$gradeitem->set_parent($workshop->gradecategory);
|
||||
}
|
||||
} else if ($gradeitem->itemnumber == 1) {
|
||||
if ($gradeitem->categoryid != $workshop->gradinggradecategory) {
|
||||
$gradeitem->set_parent($workshop->gradinggradecategory);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// File API //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
+76
-10
@@ -34,16 +34,30 @@ require_once($CFG->dirroot . '/course/moodleform_mod.php');
|
||||
require_once(dirname(__FILE__) . '/locallib.php');
|
||||
require_once($CFG->libdir . '/filelib.php');
|
||||
|
||||
/**
|
||||
* Module settings form for Workshop instances
|
||||
*/
|
||||
class mod_workshop_mod_form extends moodleform_mod {
|
||||
|
||||
/** @var object the course this instance is part of */
|
||||
protected $course = null;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct($current, $section, $cm, $course) {
|
||||
$this->course = $course;
|
||||
parent::__construct($current, $section, $cm, $course);
|
||||
}
|
||||
|
||||
/**
|
||||
* Defines the workshop instance configuration form
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function definition() {
|
||||
public function definition() {
|
||||
global $CFG;
|
||||
|
||||
global $CFG, $COURSE;
|
||||
$workshopconfig = get_config('workshop');
|
||||
$mform = $this->_form;
|
||||
|
||||
@@ -86,16 +100,23 @@ class mod_workshop_mod_form extends moodleform_mod {
|
||||
$mform->addElement('header', 'gradingsettings', get_string('gradingsettings', 'workshop'));
|
||||
|
||||
$grades = workshop::available_maxgrades_list();
|
||||
$gradecategories = grade_get_categories_menu($this->course->id);
|
||||
|
||||
$label = get_string('submissiongrade', 'workshop');
|
||||
$mform->addElement('select', 'grade', $label, $grades);
|
||||
$mform->addGroup(array(
|
||||
$mform->createElement('select', 'grade', '', $grades),
|
||||
$mform->createElement('select', 'gradecategory', '', $gradecategories),
|
||||
), 'submissiongradegroup', $label, ' ', false);
|
||||
$mform->setDefault('grade', $workshopconfig->grade);
|
||||
$mform->addHelpButton('grade', 'submissiongrade', 'workshop');
|
||||
$mform->addHelpButton('submissiongradegroup', 'submissiongrade', 'workshop');
|
||||
|
||||
$label = get_string('gradinggrade', 'workshop');
|
||||
$mform->addElement('select', 'gradinggrade', $label , $grades);
|
||||
$mform->addGroup(array(
|
||||
$mform->createElement('select', 'gradinggrade', '', $grades),
|
||||
$mform->createElement('select', 'gradinggradecategory', '', $gradecategories),
|
||||
), 'gradinggradegroup', $label, ' ', false);
|
||||
$mform->setDefault('gradinggrade', $workshopconfig->gradinggrade);
|
||||
$mform->addHelpButton('gradinggrade', 'gradinggrade', 'workshop');
|
||||
$mform->addHelpButton('gradinggradegroup', 'gradinggrade', 'workshop');
|
||||
|
||||
$label = get_string('strategy', 'workshop');
|
||||
$mform->addElement('select', 'strategy', $label, workshop::available_strategies_list());
|
||||
@@ -126,8 +147,8 @@ class mod_workshop_mod_form extends moodleform_mod {
|
||||
$mform->addElement('select', 'nattachments', $label, $options);
|
||||
$mform->setDefault('nattachments', 1);
|
||||
|
||||
$options = get_max_upload_sizes($CFG->maxbytes, $COURSE->maxbytes);
|
||||
$options[0] = get_string('courseuploadlimit') . ' ('.display_size($COURSE->maxbytes).')';
|
||||
$options = get_max_upload_sizes($CFG->maxbytes, $this->course->maxbytes);
|
||||
$options[0] = get_string('courseuploadlimit') . ' ('.display_size($this->course->maxbytes).')';
|
||||
$mform->addElement('select', 'maxbytes', get_string('maxbytes', 'workshop'), $options);
|
||||
$mform->setDefault('maxbytes', $workshopconfig->maxbytes);
|
||||
|
||||
@@ -183,12 +204,13 @@ class mod_workshop_mod_form extends moodleform_mod {
|
||||
/**
|
||||
* Prepares the form before data are set
|
||||
*
|
||||
* Additional wysiwyg editor are prepared here, the introeditor is prepared automatically by core
|
||||
* Additional wysiwyg editor are prepared here, the introeditor is prepared automatically by core.
|
||||
* Grade items are set here because the core modedit supports single grade item only.
|
||||
*
|
||||
* @param array $data to be set
|
||||
* @return void
|
||||
*/
|
||||
function data_preprocessing(&$data) {
|
||||
public function data_preprocessing(&$data) {
|
||||
if ($this->current->instance) {
|
||||
// editing an existing workshop - let us prepare the added editor elements (intro done automatically)
|
||||
$draftitemid = file_get_submitted_draft_itemid('instructauthors');
|
||||
@@ -217,4 +239,48 @@ class mod_workshop_mod_form extends moodleform_mod {
|
||||
$data['instructreviewerseditor'] = array('text' => '', 'format' => editors_get_preferred_format(), 'itemid' => $draftitemid);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the grade item categories when editing an instance
|
||||
*/
|
||||
public function definition_after_data() {
|
||||
|
||||
$mform =& $this->_form;
|
||||
|
||||
if ($id = $mform->getElementValue('update')) {
|
||||
$instance = $mform->getElementValue('instance');
|
||||
|
||||
$gradeitems = grade_item::fetch_all(array(
|
||||
'itemtype' => 'mod',
|
||||
'itemmodule' => 'workshop',
|
||||
'iteminstance' => $instance,
|
||||
'courseid' => $this->course->id));
|
||||
|
||||
if (!empty($gradeitems)) {
|
||||
foreach ($gradeitems as $gradeitem) {
|
||||
// here comes really crappy way how to set the value of the fields
|
||||
// gradecategory and gradinggradecategory - grrr QuickForms
|
||||
if ($gradeitem->itemnumber == 0) {
|
||||
$group = $mform->getElement('submissiongradegroup');
|
||||
$elements = $group->getElements();
|
||||
foreach ($elements as $element) {
|
||||
if ($element->getName() == 'gradecategory') {
|
||||
$element->setValue($gradeitem->categoryid);
|
||||
}
|
||||
}
|
||||
} else if ($gradeitem->itemnumber == 1) {
|
||||
$group = $mform->getElement('gradinggradegroup');
|
||||
$elements = $group->getElements();
|
||||
foreach ($elements as $element) {
|
||||
if ($element->getName() == 'gradinggradecategory') {
|
||||
$element->setValue($gradeitem->categoryid);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
parent::definition_after_data();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user