Merge branch 'MDL-21625_b' of git://github.com/rwijaya/moodle
authorSam Hemelryk <sam@moodle.com>
Mon, 5 Nov 2012 03:27:43 +0000 (16:27 +1300)
committerSam Hemelryk <sam@moodle.com>
Mon, 5 Nov 2012 03:27:43 +0000 (16:27 +1300)
1  2 
question/editlib.php

diff --combined question/editlib.php
@@@ -134,6 -134,9 +134,9 @@@ abstract class question_bank_column_bas
       */
      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);
      }
  
      /**
@@@ -892,7 -924,7 +924,7 @@@ class question_bank_view 
          $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();
+         }
      }
  
      /**
          if(($unhide = optional_param('unhide', '', PARAM_INT)) and confirm_sesskey()) {
              question_require_capability_on($unhide, 'edit');
              $DB->set_field('question', 'hidden', 0, array('id' => $unhide));
 +
 +            // Purge these questions from the cache.
 +            question_bank::notify_question_edited($unhide);
 +
              redirect($this->baseurl);
          }
      }