Exemplo n.º 1
0
 /**
  * Create elements for this group.
  */
 public function _createElements()
 {
     global $COURSE, $CFG, $OUTPUT;
     $attributes = $this->getAttributes();
     if (is_null($attributes)) {
         $attributes = array();
     }
     $this->_elements = array();
     // Create main elements
     // We have to create the scale and point elements first, as we need their IDs.
     // Grade scale select box.
     $scales = get_scales_menu($COURSE->id);
     $langscale = get_string('modgradetypescale', 'grades');
     $this->scaleformelement = $this->createFormElement('select', 'modgrade_scale', $langscale, $scales, $attributes);
     $this->scaleformelement->setHiddenLabel(true);
     $scaleformelementid = $this->generate_modgrade_subelement_id('modgrade_scale');
     $this->scaleformelement->updateAttributes(array('id' => $scaleformelementid));
     // Maximum grade textbox.
     $langmaxgrade = get_string('modgrademaxgrade', 'grades');
     $this->maxgradeformelement = $this->createFormElement('text', 'modgrade_point', $langmaxgrade, array());
     $this->maxgradeformelement->setHiddenLabel(true);
     $maxgradeformelementid = $this->generate_modgrade_subelement_id('modgrade_point');
     $this->maxgradeformelement->updateAttributes(array('id' => $maxgradeformelementid));
     // Grade type select box.
     $gradetype = array('none' => get_string('modgradetypenone', 'grades'), 'scale' => get_string('modgradetypescale', 'grades'), 'point' => get_string('modgradetypepoint', 'grades'));
     $langtype = get_string('modgradetype', 'grades');
     $this->gradetypeformelement = $this->createFormElement('select', 'modgrade_type', $langtype, $gradetype, $attributes, true);
     $this->gradetypeformelement->setHiddenLabel(true);
     $gradetypeformelementid = $this->generate_modgrade_subelement_id('modgrade_type');
     $this->gradetypeformelement->updateAttributes(array('id' => $gradetypeformelementid));
     if ($this->isupdate && $this->hasgrades) {
         $this->gradetypeformelement->updateAttributes(array('disabled' => 'disabled'));
         $this->scaleformelement->updateAttributes(array('disabled' => 'disabled'));
         // Check box for options for processing existing grades.
         if ($this->canrescale) {
             $langrescalegrades = get_string('modgraderescalegrades', 'grades');
             $choices = array();
             $choices[''] = get_string('choose');
             $choices['no'] = get_string('no');
             $choices['yes'] = get_string('yes');
             $rescalegradesselect = $this->createFormElement('select', 'modgrade_rescalegrades', $langrescalegrades, $choices);
             $rescalegradesselect->setHiddenLabel(true);
             $rescalegradesselectid = $this->generate_modgrade_subelement_id('modgrade_rescalegrades');
             $rescalegradesselect->updateAttributes(array('id' => $rescalegradesselectid));
         }
     }
     // Add elements.
     if ($this->isupdate && $this->hasgrades) {
         // Set a message so the user knows why they can not alter the grade type or scale.
         if ($this->currentgradetype == 'scale') {
             $gradesexistmsg = get_string('modgradecantchangegradetyporscalemsg', 'grades');
         } else {
             $gradesexistmsg = get_string('modgradecantchangegradetypemsg', 'grades');
         }
         $gradesexisthtml = '<div class=\'alert\'>' . $gradesexistmsg . '</div>';
         $this->_elements[] = $this->createFormElement('static', 'gradesexistmsg', '', $gradesexisthtml);
     }
     // Grade type select box.
     $label = html_writer::tag('label', $this->gradetypeformelement->getLabel(), array('for' => $this->gradetypeformelement->getAttribute('id')));
     $this->_elements[] = $this->createFormElement('static', 'gradetypelabel', '', '&nbsp;' . $label);
     $this->_elements[] = $this->gradetypeformelement;
     $this->_elements[] = $this->createFormElement('static', 'gradetypespacer', '', '<br />');
     // Only show the grade scale select box when applicable.
     if (!$this->isupdate || !$this->hasgrades || $this->currentgradetype == 'scale') {
         $label = html_writer::tag('label', $this->scaleformelement->getLabel(), array('for' => $this->scaleformelement->getAttribute('id')));
         $this->_elements[] = $this->createFormElement('static', 'scalelabel', '', $label);
         $this->_elements[] = $this->scaleformelement;
         $this->_elements[] = $this->createFormElement('static', 'scalespacer', '', '<br />');
     }
     if ($this->isupdate && $this->hasgrades && $this->canrescale && $this->currentgradetype == 'point') {
         // We need to know how to apply any changes to maxgrade - ie to either update, or don't touch exising grades.
         $label = html_writer::tag('label', $rescalegradesselect->getLabel(), array('for' => $rescalegradesselect->getAttribute('id')));
         $labelhelp = new help_icon('modgraderescalegrades', 'grades');
         $this->_elements[] = $this->createFormElement('static', 'scalelabel', '', $label . $OUTPUT->render($labelhelp));
         $this->_elements[] = $rescalegradesselect;
         $this->_elements[] = $this->createFormElement('static', 'scalespacer', '', '<br />');
     }
     // Only show the max points form element when applicable.
     if (!$this->isupdate || !$this->hasgrades || $this->currentgradetype == 'point') {
         $label = html_writer::tag('label', $this->maxgradeformelement->getLabel(), array('for' => $this->maxgradeformelement->getAttribute('id')));
         $this->_elements[] = $this->createFormElement('static', 'pointlabel', '', $label);
         $this->_elements[] = $this->maxgradeformelement;
         $this->_elements[] = $this->createFormElement('static', 'pointspacer', '', '<br />');
     }
 }