*/
protected $qbank;
+ /** @var bool determine whether the column is td or th. */
+ protected $isheading = false;
+
/**
* Constructor.
* @param $qbank the question_bank_view we are helping to render.
protected function init() {
}
+ /**
+ * Set the column as heading
+ */
+ public function set_as_heading() {
+ $this->isheading = true;
+ }
+
public function is_extra_row() {
return false;
}
$this->display_end($question, $rowclasses);
}
+ /**
+ * Output the opening column tag. If it is set as heading, it will use <th> tag instead of <td>
+ *
+ * @param stdClass $question
+ * @param array $rowclasses
+ */
protected function display_start($question, $rowclasses) {
- echo '<td class="' . $this->get_classes() . '">';
+ $tag = 'td';
+ $attr = array('class' => $this->get_classes());
+ if ($this->isheading) {
+ $tag = 'th';
+ $attr['scope'] = 'row';
+ }
+ echo html_writer::start_tag($tag, $attr);
}
/**
*/
protected abstract function display_content($question, $rowclasses);
+ /**
+ * Output the closing column tag
+ *
+ * @param type $question
+ * @param type $rowclasses
+ */
protected function display_end($question, $rowclasses) {
- echo "</td>\n";
+ $tag = 'td';
+ if ($this->isheading) {
+ $tag = 'th';
+ }
+ echo html_writer::end_tag($tag);
}
/**
$this->lastchangedid = optional_param('lastchanged',0,PARAM_INT);
$this->init_column_types();
- $this->init_columns($this->wanted_columns());
+ $this->init_columns($this->wanted_columns(), $this->heading_column());
$this->init_sort();
}
return $columns;
}
+ /**
+ * Specify the column heading
+ *
+ * @return string Column name for the heading
+ */
+ protected function heading_column() {
+ return 'questionname';
+ }
+
protected function known_field_types() {
return array(
new question_bank_checkbox_column($this),
}
}
- protected function init_columns($wanted) {
+ /**
+ * Initializing table columns
+ *
+ * @param array $wanted Collection of column names
+ * @param string $heading The name of column that is set as heading
+ */
+ protected function init_columns($wanted, $heading = '') {
$this->visiblecolumns = array();
$this->extrarows = array();
foreach ($wanted as $colname) {
}
}
$this->requiredcolumns = array_merge($this->visiblecolumns, $this->extrarows);
+ if (array_key_exists($heading, $this->requiredcolumns)) {
+ $this->requiredcolumns[$heading]->set_as_heading();
+ }
}
/**