MDL-29303 mod_feedback: allow any characters in labels

This commit is contained in:
Marina Glancy
2016-03-27 21:47:49 +08:00
parent 0114ca3244
commit 2aad1094b1
14 changed files with 122 additions and 62 deletions
+10 -1
View File
@@ -37,7 +37,7 @@
defined('MOODLE_INTERNAL') || die();
function xmldb_feedback_upgrade($oldversion) {
global $CFG;
global $CFG, $DB;
// Moodle v2.8.0 release upgrade line.
// Put any upgrade step following this.
@@ -48,5 +48,14 @@ function xmldb_feedback_upgrade($oldversion) {
// Moodle v3.0.0 release upgrade line.
// Put any upgrade step following this.
if ($oldversion < 2016031600) {
// Remove labels from all 'captcha' and 'label' items.
$DB->execute('UPDATE {feedback_item} SET label = ? WHERE typ = ? OR typ = ?',
array('', 'captcha', 'label'));
// Data savepoint reached.
upgrade_mod_savepoint(true, 2016031600, 'feedback');
}
return true;
}
+4
View File
@@ -208,6 +208,10 @@ function feedback_import_loaded_data(&$data, $feedbackid) {
$newitem->typ = $typ;
$newitem->name = trim($item['#']['ITEMTEXT'][0]['#']);
$newitem->label = trim($item['#']['ITEMLABEL'][0]['#']);
if ($typ === 'captcha' || $typ === 'label') {
$newitem->label = '';
$newitem->name = '';
}
$newitem->options = trim($item['#']['OPTIONS'][0]['#']);
$newitem->presentation = trim($item['#']['PRESENTATION'][0]['#']);
//check old types of radio, check, and so on
+14 -17
View File
@@ -55,7 +55,7 @@ class feedback_item_captcha extends feedback_item_base {
$this->item->feedback = $feedback->id;
$this->item->template = 0;
$this->item->name = get_string('captcha', 'feedback');
$this->item->label = get_string('captcha', 'feedback');
$this->item->label = '';
$this->item->presentation = '';
$this->item->typ = $this->type;
$this->item->hasvalue = $this->get_hasvalue();
@@ -139,8 +139,10 @@ class feedback_item_captcha extends feedback_item_base {
//print the question and label
echo '<div class="feedback_item_label_'.$align.'">';
echo '('.$item->label.') ';
echo format_text($item->name.$requiredmark, true, false, false);
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
echo '</div>';
}
@@ -192,8 +194,10 @@ class feedback_item_captcha extends feedback_item_base {
//print the question and label
echo '<div class="feedback_item_label_'.$align.'">';
echo '('.$item->label.') ';
echo format_text($item->name.$requiredmark, true, false, false);
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
$inputname = 'name="'.$item->typ.'_'.$item->id.'"';
echo '<input type="hidden" value="'.$USER->sesskey.'" '.$inputname.' />';
echo '</div>';
@@ -259,26 +263,19 @@ class feedback_item_captcha extends feedback_item_base {
* @return void
*/
public function print_item_show_value($item, $value = '') {
global $DB;
global $OUTPUT;
$align = right_to_left() ? 'right' : 'left';
$cmid = 0;
$feedbackid = $item->feedback;
if ($feedbackid > 0) {
$feedback = $DB->get_record('feedback', array('id'=>$feedbackid));
if ($cm = get_coursemodule_from_instance("feedback", $feedback->id, $feedback->course)) {
$cmid = $cm->id;
}
}
$requiredmark = '<img class="req" title="'.get_string('requiredelement', 'form').'" alt="'.
get_string('requiredelement', 'form').'" src="'.$OUTPUT->pix_url('req') .'" />';
//print the question and label
echo '<div class="feedback_item_label_'.$align.'">';
echo '('.$item->label.') ';
echo format_text($item->name.$requiredmark, true, false, false);
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
echo '</div>';
}
@@ -76,7 +76,7 @@ abstract class feedback_item_form extends moodleform {
$mform->setType('template', PARAM_INT);
$mform->setType('name', PARAM_RAW);
$mform->setType('label', PARAM_ALPHANUM);
$mform->setType('label', PARAM_NOTAGS);
$mform->addElement('hidden', 'typ', $this->type);
$mform->setType('typ', PARAM_ALPHA);
+15 -7
View File
@@ -150,7 +150,11 @@ class feedback_item_info extends feedback_item_base {
$data = $analysed_item->data;
if (is_array($data)) {
echo '<tr><th colspan="2" align="left">';
echo $itemnr.'&nbsp;('.$item->label.') '.$item->name;
echo $itemnr . ' ';
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name, FORMAT_HTML, array('noclean' => true, 'para' => false));
echo '</th></tr>';
$sizeofdata = count($data);
for ($i = 0; $i < $sizeofdata; $i++) {
@@ -241,12 +245,14 @@ class feedback_item_info extends feedback_item_base {
//print the question and label
echo '<div class="feedback_item_label_'.$align.'">';
echo '('.$item->label.') ';
echo format_text($item->name.$requiredmark, true, false, false);
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
if ($item->dependitem) {
if ($dependitem = $DB->get_record('feedback_item', array('id'=>$item->dependitem))) {
echo ' <span class="feedback_depend">';
echo '('.$dependitem->label.'-&gt;'.$item->dependvalue.')';
echo '('.format_string($dependitem->label).'-&gt;'.$item->dependvalue.')';
echo '</span>';
}
}
@@ -330,7 +336,7 @@ class feedback_item_info extends feedback_item_base {
//print the question and label
echo '<div class="feedback_item_label_'.$align.'">';
echo '<span class="'.$highlight.'">';
echo format_text($item->name.$requiredmark, true, false, false);
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
echo '</span>';
echo '</div>';
@@ -363,8 +369,10 @@ class feedback_item_info extends feedback_item_base {
//print the question and label
echo '<div class="feedback_item_label_'.$align.'">';
echo '('.$item->label.') ';
echo format_text($item->name . $requiredmark, true, false, false);
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
echo '</div>';
//print the presentation
+1 -1
View File
@@ -35,7 +35,7 @@ class feedback_label_form extends feedback_item_form {
$mform->setType('required', PARAM_INT);
$mform->addElement('hidden', 'name', 'label');
$mform->setType('template', PARAM_ALPHA);
$mform->addElement('hidden', 'label', '-');
$mform->addElement('hidden', 'label', '');
$mform->setType('label', PARAM_ALPHA);
$mform->addElement('header', 'general', get_string($this->type, 'feedback'));
+1 -1
View File
@@ -184,7 +184,7 @@ class feedback_item_label extends feedback_item_base {
if ($item->dependitem) {
if ($dependitem = $DB->get_record('feedback_item', array('id'=>$item->dependitem))) {
echo ' <span class="feedback_depend">';
echo '('.$dependitem->label.'-&gt;'.$item->dependvalue.')';
echo '('.format_string($dependitem->label).'-&gt;'.$item->dependvalue.')';
echo '</span>';
}
}
+13 -5
View File
@@ -231,7 +231,11 @@ class feedback_item_multichoice extends feedback_item_base {
if ($analysed_item) {
$itemname = $analysed_item[1];
echo '<tr><th colspan="2" align="left">';
echo $itemnr.'&nbsp;('.$item->label.') '.$itemname;
echo $itemnr . ' ';
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo $itemname;
echo '</th></tr>';
$analysed_vals = $analysed_item[2];
@@ -320,12 +324,14 @@ class feedback_item_multichoice extends feedback_item_base {
if ($info->subtype == 'd') {
echo '<label for="'. $item->typ . '_' . $item->id .'">';
}
echo '('.$item->label.') ';
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
if ($item->dependitem) {
if ($dependitem = $DB->get_record('feedback_item', array('id'=>$item->dependitem))) {
echo ' <span class="feedback_depend">';
echo '('.$dependitem->label.'-&gt;'.$item->dependvalue.')';
echo '('.format_string($dependitem->label).'-&gt;'.$item->dependvalue.')';
echo '</span>';
}
}
@@ -425,7 +431,7 @@ class feedback_item_multichoice extends feedback_item_base {
echo '<div class="feedback_item_label_'.$align.'">';
if ($info->subtype == 'd') {
echo '<label for="'. $inputname .'">';
echo format_text($item->name.$requiredmark, true, false, false);
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
if ($highlightrequire AND $item->required AND (count($values) == 0 OR $values[0] == '' OR $values[0] == 0)) {
echo '<br class="error"><span id="id_error_'.$inputname.'" class="error"> '.get_string('err_required', 'form').
'</span><br id="id_error_break_'.$inputname.'" class="error" >';
@@ -536,7 +542,9 @@ class feedback_item_multichoice extends feedback_item_base {
//print the question and label
echo '<div class="feedback_item_label_'.$align.'">';
echo '('.$item->label.') ';
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
echo '</div>';
+14 -6
View File
@@ -206,7 +206,11 @@ class feedback_item_multichoicerated extends feedback_item_base {
$analysed_item = $this->get_analysed($item, $groupid, $courseid);
if ($analysed_item) {
echo '<tr><th colspan="2" align="left">';
echo $itemnr.'&nbsp;('.$item->label.') '.$analysed_item[1];
echo $itemnr . ' ';
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo $analysed_item[1];
echo '</th></tr>';
$analysed_vals = $analysed_item[2];
$pixnr = 0;
@@ -305,12 +309,14 @@ class feedback_item_multichoicerated extends feedback_item_base {
if ($info->subtype == 'd') {
echo '<label for="'. $item->typ . '_' . $item->id .'">';
}
echo '('.$item->label.') ';
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
if ($item->dependitem) {
if ($dependitem = $DB->get_record('feedback_item', array('id'=>$item->dependitem))) {
echo ' <span class="feedback_depend">';
echo '('.$dependitem->label.'-&gt;'.$item->dependvalue.')';
echo '('.format_string($dependitem->label).'-&gt;'.$item->dependvalue.')';
echo '</span>';
}
}
@@ -356,7 +362,7 @@ class feedback_item_multichoicerated extends feedback_item_base {
echo '<div class="feedback_item_label_'.$align.'">';
if ($info->subtype == 'd') {
echo '<label for="'. $inputname .'">';
echo format_text($item->name.$requiredmark, true, false, false);
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
if ($highlightrequire AND $item->required AND intval($value) <= 0) {
echo '<br class="error"><span id="id_error_'.$inputname.'" class="error"> '.get_string('err_required', 'form').
'</span><br id="id_error_break_'.$inputname.'" class="error" >';
@@ -403,8 +409,10 @@ class feedback_item_multichoicerated extends feedback_item_base {
//print the question and label
echo '<div class="feedback_item_label_'.$align.'">';
echo '('.$item->label.') ';
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
echo '</div>';
//print the presentation
+15 -7
View File
@@ -173,7 +173,11 @@ class feedback_item_numeric extends feedback_item_base {
if (isset($values->data) AND is_array($values->data)) {
echo '<tr><th colspan="2" align="left">';
echo $itemnr.'&nbsp;('.$item->label.') '.$item->name;
echo $itemnr . ' ';
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name, FORMAT_HTML, array('noclean' => true, 'para' => false));
echo '</th></tr>';
foreach ($values->data as $value) {
@@ -256,13 +260,15 @@ class feedback_item_numeric extends feedback_item_base {
$inputname = $item->typ . '_' . $item->id;
echo '<div class="feedback_item_label_'.$align.'">';
echo '<label for="'. $inputname .'">';
echo '('.$item->label.') ';
echo format_text($item->name . $requiredmark, true, false, false);
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
if ($item->dependitem) {
$params = array('id'=>$item->dependitem);
if ($dependitem = $DB->get_record('feedback_item', $params)) {
echo ' <span class="feedback_depend">';
echo '('.$dependitem->label.'-&gt;'.$item->dependvalue.')';
echo '('.format_string($dependitem->label).'-&gt;'.$item->dependvalue.')';
echo '</span>';
}
}
@@ -339,7 +345,7 @@ class feedback_item_numeric extends feedback_item_base {
$inputname = $item->typ . '_' . $item->id;
echo '<div class="feedback_item_label_'.$align.'">';
echo '<label for="'. $inputname .'">';
echo format_text($item->name . $requiredmark, true, false, false);
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
echo '<span class="feedback_item_numinfo">';
switch(true) {
case ($range_from === '-' AND is_numeric($range_to)):
@@ -411,8 +417,10 @@ class feedback_item_numeric extends feedback_item_base {
//print the question and label
echo '<div class="feedback_item_label_'.$align.'">';
echo '('.$item->label.') ';
echo format_text($item->name . $requiredmark, true, false, false);
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
switch(true) {
case ($range_from === '-' AND is_numeric($range_to)):
echo ' ('.get_string('maximal', 'feedback').
+15 -7
View File
@@ -151,7 +151,11 @@ class feedback_item_textarea extends feedback_item_base {
$values = feedback_get_group_values($item, $groupid, $courseid);
if ($values) {
echo '<tr><th colspan="2" align="left">';
echo $itemnr.'&nbsp;('.$item->label.') '.$item->name;
echo $itemnr . ' ';
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name, FORMAT_HTML, array('noclean' => true, 'para' => false));
echo '</th></tr>';
foreach ($values as $value) {
echo '<tr>';
@@ -208,12 +212,14 @@ class feedback_item_textarea extends feedback_item_base {
$inputname = $item->typ . '_' . $item->id;
echo '<div class="feedback_item_label_'.$align.'">';
echo '<label for="'. $inputname .'">';
echo '('.$item->label.') ';
echo format_text($item->name.$requiredmark, true, false, false);
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
if ($item->dependitem) {
if ($dependitem = $DB->get_record('feedback_item', array('id'=>$item->dependitem))) {
echo ' <span class="feedback_depend">';
echo '('.$dependitem->label.'-&gt;'.$item->dependvalue.')';
echo '('.format_string($dependitem->label).'-&gt;'.$item->dependvalue.')';
echo '</span>';
}
}
@@ -254,7 +260,7 @@ class feedback_item_textarea extends feedback_item_base {
$inputname = $item->typ . '_' . $item->id;
echo '<div class="feedback_item_label_'.$align.'">';
echo '<label for="'. $inputname .'">';
echo format_text($item->name . $requiredmark, true, false, false);
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
if ($highlightrequire AND $item->required AND strval($value) == '') {
echo '<br class="error"><span id="id_error_'.$inputname.'" class="error"> '.get_string('err_required', 'form').
'</span><br id="id_error_break_'.$inputname.'" class="error" >';
@@ -294,8 +300,10 @@ class feedback_item_textarea extends feedback_item_base {
//print the question and label
echo '<div class="feedback_item_label_'.$align.'">';
echo '('.$item->label.') ';
echo format_text($item->name . $requiredmark, true, false, false);
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
echo '</div>';
//print the presentation
+15 -7
View File
@@ -147,7 +147,11 @@ class feedback_item_textfield extends feedback_item_base {
$values = feedback_get_group_values($item, $groupid, $courseid);
if ($values) {
echo '<tr><th colspan="2" align="left">';
echo $itemnr.'&nbsp;('.$item->label.') '.$item->name;
echo $itemnr . ' ';
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name, FORMAT_HTML, array('noclean' => true, 'para' => false));
echo '</th></tr>';
foreach ($values as $value) {
echo '<tr><td colspan="2" valign="top" align="left">';
@@ -198,12 +202,14 @@ class feedback_item_textfield extends feedback_item_base {
$inputname = $item->typ . '_' . $item->id;
echo '<div class="feedback_item_label_'.$align.'">';
echo '<label for="'. $inputname .'">';
echo '('.$item->label.') ';
echo format_text($item->name.$requiredmark, true, false, false);
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
if ($item->dependitem) {
if ($dependitem = $DB->get_record('feedback_item', array('id'=>$item->dependitem))) {
echo ' <span class="feedback_depend">';
echo '('.$dependitem->label.'-&gt;'.$item->dependvalue.')';
echo '('.format_string($dependitem->label).'-&gt;'.$item->dependvalue.')';
echo '</span>';
}
}
@@ -245,7 +251,7 @@ class feedback_item_textfield extends feedback_item_base {
$inputname = $item->typ . '_' . $item->id;
echo '<div class="feedback_item_label_'.$align.'">';
echo '<label for="'. $inputname .'">';
echo format_text($item->name.$requiredmark, true, false, false);
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
if ($highlightrequire AND $item->required AND strval($value) == '') {
echo '<br class="error"><span id="id_error_'.$inputname.'" class="error"> '.get_string('err_required', 'form').
'</span><br id="id_error_break_'.$inputname.'" class="error" >';
@@ -285,8 +291,10 @@ class feedback_item_textfield extends feedback_item_base {
//print the question and label
echo '<div class="feedback_item_label_'.$align.'">';
echo '('.$item->label.') ';
echo format_text($item->name . $requiredmark, true, false, false);
if (strval($item->label) !== '') {
echo '('. format_string($item->label).') ';
}
echo format_text($item->name . $requiredmark, FORMAT_HTML, array('noclean' => true, 'para' => false));
echo '</div>';
echo $OUTPUT->box_start('generalbox boxalign'.$align);
echo $value ? $value : '&nbsp;';
+3 -1
View File
@@ -1450,7 +1450,9 @@ function feedback_get_depend_candidates_for_item($feedback, $item) {
}
//adding the choose-option
foreach ($feedbackitems as $key => $val) {
$dependitems[$key] = $val;
if (trim(strval($val)) !== '') {
$dependitems[$key] = format_string($val);
}
}
return $dependitems;
}
+1 -1
View File
@@ -24,7 +24,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2015111600; // The current module version (Date: YYYYMMDDXX)
$plugin->version = 2016031600; // The current module version (Date: YYYYMMDDXX)
$plugin->requires = 2015111000; // Requires this Moodle version
$plugin->component = 'mod_feedback'; // Full name of the plugin (used for diagnostics)
$plugin->cron = 0;