function add_matrix() { $mform = $this->_form; $data = $mform->exportValues(); if (isset($_POST['colshort'])) { $cols_count = count($_POST['colshort']); } else { if (isset($this->question->options->cols) && count($this->question->options->cols) > 0) { $cols_count = count($this->question->options->cols); } else { $cols_count = self::DEFAULT_COLS; } } if ($add_cols = optional_param('add_cols', '', PARAM_TEXT)) { $cols_count++; } if (isset($_POST['rowshort'])) { $rows_count = count($_POST['rowshort']); } else { if (isset($this->question->options->rows) && count($this->question->options->rows) > 0) { $rows_count = count($this->question->options->rows); } else { $rows_count = self::DEFAULT_ROWS; } } if ($add_rows = optional_param('add_rows', '', PARAM_TEXT)) { $rows_count++; } $grademethod = isset($data['grademethod']) ? $data['grademethod'] : qtype_matrix::defaut_grading()->get_name(); $grading = qtype_matrix::grading($grademethod); $multiple = isset($data['multiple']) ? $data['multiple'] : true; $matrix = array(); $html = '<table class="quedit matrix"><thead><tr>'; $html .= '<th></th>'; $matrix[] = $this->create_static($html); for ($col = 0; $col < $cols_count; $col++) { $matrix[] = $this->create_static('<th>'); $matrix[] = $this->create_text("colshort[{$col}]"); $popup = $this->create_htmlpopup("collong[{$col}]", qtype_matrix::get_string('collong')); $matrix = array_merge($matrix, $popup); // $id = "popcol$col"; // $matrix[] = $this->create_static('<a class="pbutton" href="#" onclick="mtrx_popup(\'' . $id . '\');return false;" >...</a>'); // $matrix[] = $this->create_static('<span id="' . $id . '" class="popup">'); // $matrix[] = $this->create_static('<a class="pbutton close" href="#" onclick="mtrx_popup(\'' . $id . '\');return false;" > </a>'); // $matrix[] = $this->create_static('<span class="title">'); // $matrix[] = $this->create_static(qtype_matrix::get_string('collong')); // $matrix[] = $this->create_static('</span>'); // $matrix[] = $this->create_htmleditor("collong[$col]"); // $matrix[] = $this->create_hidden("colid[$col]"); // $matrix[] = $this->create_static('</span>'); $matrix[] = $this->create_hidden("colid[{$col}]"); $matrix[] = $this->create_static('</th>'); } $matrix[] = $this->create_static('<th>'); $matrix[] = $this->create_static(qtype_matrix::get_string('rowfeedback')); $matrix[] = $this->create_static('</th>'); $matrix[] = $this->create_static('<th>'); $matrix[] = $this->create_submit('add_cols', ' ', array('class' => 'button add')); $this->register_no_submit_button('add_cols'); $matrix[] = $this->create_static('</th>'); $matrix[] = $this->create_static('</tr></thead><tbody>'); for ($row = 0; $row < $rows_count; $row++) { $matrix[] = $this->create_static('<tr>'); $matrix[] = $this->create_static('<td>'); $matrix[] = $this->create_text("rowshort[{$row}]"); $popup = $this->create_htmlpopup("rowlong[{$row}]", qtype_matrix::get_string('rowlong')); $matrix = array_merge($matrix, $popup); $matrix[] = $this->create_hidden("rowid[{$row}]"); // $id = "poprow$row"; // $matrix[] = $this->create_static('<a class="pbutton" href="#" onclick="mtrx_popup(\'' . $id . '\');return false;" >...</a>'); // $matrix[] = $this->create_static('<span id="' . $id . '" class="popup">'); // $matrix[] = $this->create_static('<a class="pbutton close" href="#" onclick="mtrx_popup(\'' . $id . '\');return false;" > </a>'); // $matrix[] = $this->create_static('<span class="title">'); // $matrix[] = $this->create_static(qtype_matrix::get_string('rowlong')); // $matrix[] = $this->create_static('</span>'); // $matrix[] = $this->create_htmleditor("rowlong[$row]"); // $matrix[] = $this->create_static('</span>'); // $matrix[] = $this->create_hidden("rowid[$row]"); $matrix[] = $this->create_static('</td>'); for ($col = 0; $col < $cols_count; $col++) { $matrix[] = $this->create_static('<td>'); $cell_content = $grading->create_cell_element($mform, $row, $col, $multiple); $cell_content = $cell_content ? $cell_content : $this->create_static(''); $matrix[] = $cell_content; $matrix[] = $this->create_static('</td>'); } // $id = "popfeedback$row"; $matrix[] = $this->create_static('<td class="feedback">'); $popup = $this->create_htmlpopup("rowfeedback[{$row}]", qtype_matrix::get_string('rowfeedback')); $matrix = array_merge($matrix, $popup); // $matrix[] = $this->create_static('<a class="pbutton" href="#" onclick="mtrx_popup(\'' . $id . '\');return false;" >...</a>'); // $matrix[] = $this->create_static('<span id="' . $id . '" class="popup">'); // $matrix[] = $this->create_static('<a class="pbutton close" href="#" onclick="mtrx_popup(\'' . $id . '\');return false;" > </a>'); // $matrix[] = $this->create_static('<span class="title">'); // $matrix[] = $this->create_static(qtype_matrix::get_string('rowfeedback')); // $matrix[] = $this->create_static('</span>'); // $matrix[] = $this->create_htmleditor("rowfeedback[$row]"); // $matrix[] = $this->create_static('</span>'); $matrix[] = $this->create_static('</td>'); $matrix[] = $this->create_static('<td></td>'); $matrix[] = $this->create_static('</tr>'); } $matrix[] = $this->create_static('<tr>'); $matrix[] = $this->create_static('<td>'); $matrix[] = $this->create_submit('add_rows', ' ', array('class' => 'button add')); $this->register_no_submit_button('add_rows'); $matrix[] = $this->create_static('</td>'); for ($col = 0; $col < $cols_count; $col++) { $matrix[] = $this->create_static('<td>'); $matrix[] = $this->create_static('</td>'); } $matrix[] = $this->create_static('</tr>'); $matrix[] = $this->create_static('</tbody></table>'); $matrixheader = $this->create_header('matrixheader'); $matrix_group = $this->create_group('matrix', null, $matrix, '', false); if (isset($this['tagsheader'])) { $this->insert_element_before($matrixheader, 'tagsheader'); $refresh_button = $this->create_submit('refresh_matrix'); $this->register_no_submit_button('refresh_matrix'); $this->disabled_if('refresh_matrix', 'grademethod', 'eq', 'none'); $this->disabled_if('defaultgrade', 'grademethod', 'eq', 'none'); $this->insert_element_before($refresh_button, 'tagsheader'); $this->insert_element_before($matrix_group, 'tagsheader'); } else { $this[] = $matrixheader; $refresh_button = $this->create_submit('refresh_matrix'); $this->register_no_submit_button('refresh_matrix'); $this->disabled_if('refresh_matrix', 'grademethod', 'eq', 'none'); $this->disabled_if('defaultgrade', 'grademethod', 'eq', 'none'); $this[] = $refresh_button; $this[] = $matrix_group; } if ($cols_count > 1) { $this->set_default('colshort[0]', qtype_matrix::get_string('true')); $this->set_default('colshort[1]', qtype_matrix::get_string('false')); } }
function add_grading_matrix() { static $added = false; if ($added) { return; } $added = true; $mform = $this->_form; $data = $mform->exportValues(); $multiple = $data['multiple']; $grademethod = isset($data['grademethod']) ? $data['grademethod'] : qtype_matrix::defaut_grading()->get_name(); if ($grademethod == qtype_matrix_grading_none::TYPE) { return; } $gradeclass = qtype_matrix::grading($grademethod); $matrix = array(); $html = '<table class="qtypematrixformmatrix"><thead><tr>'; $html .= '<th></th>'; foreach ($data['colshort'] as $col_short) { if (empty($col_short)) { break; } $html .= "<th>{$col_short}</th>"; } $html .= '</tr></thead><tbody>'; $matrix[] = $this->create_static($html); foreach ($data['rowshort'] as $row_index => $row_short) { if (empty($row_short)) { break; } $matrix[] = $this->create_static('<tr>'); $matrix[] = $this->create_static("<td>{$row_short}</td>"); foreach ($data['colshort'] as $col_index => $col_short) { if (empty($col_short)) { break; } $matrix[] = $this->create_static('<td>'); $cell_content = $gradeclass->create_cell_element($mform, $row_index, $col_index, $multiple); $cell_content = $cell_content ? $cell_content : $this->create_static(''); $matrix[] = $cell_content; $matrix[] = $this->create_static('</td>'); } $matrix[] = $this->create_static('</tr>'); } $matrix[] = $this->create_static('</tbody></table>'); $matrixel = $this->create_group('matrix', null, $matrix, '', true); $matrixheader = $this->create_header('matrixheader', qtype_matrix::get_string('matrixheader')); if (isset($this['tagsheader'])) { $this->insert_element_before($matrixheader, 'tagsheader'); $this->insert_element_before($matrixel, 'tagsheader'); } else { $this[] = $matrixheader; $this[] = $matrixel; } $this->add_hidden('weightsadded', 1); $this['addweights']->setValue(qtype_matrix::get_string('updatematrix')); $this->disabled_if('matrix', 'grademethod', 'eq', 'none'); }