$string['donotusepaging'] = 'Do not use paging';
$string['duration'] = 'Duration';
$string['editsession'] = 'Edit Session';
+$string['emptyacronym'] = 'Empty acronyms are not allowed. Status record not updated.';
+$string['emptydescription'] = 'Empty descriptions are not allowed. Status record not updated.';
$string['endtime'] = 'Session end time';
$string['endofperiod'] = 'End of period';
$string['enrolmentend'] = 'User enrolment ends {$a}';
public function update_status($status, $acronym, $description, $grade, $visible) {
global $DB;
+ if (empty($acronym) || empty($description)) {
+ return array('acronym' => $acronym, 'description' => $description);
+ }
+
$updated = array();
if ($acronym) {
$PAGE->set_button($OUTPUT->update_module_button($cm->id, 'attendance'));
$PAGE->navbar->add(get_string('settings', 'attendance'));
+$errors = array();
+
switch ($att->pageparams->action) {
case att_preferences_page_params::ACTION_ADD:
$newacronym = optional_param('newacronym', null, PARAM_TEXT);
foreach ($acronym as $id => $v) {
$status = $statuses[$id];
- $att->update_status($status, $acronym[$id], $description[$id], $grade[$id], null);
+ $errors[$id] = $att->update_status($status, $acronym[$id], $description[$id], $grade[$id], null);
}
if ($att->grade > 0) {
att_update_all_users_grades($att->id, $att->course, $att->context, $cm);
$output = $PAGE->get_renderer('mod_attendance');
$tabs = new attendance_tabs($att, attendance_tabs::TAB_PREFERENCES);
-$prefdata = new attendance_preferences_data($att);
+$prefdata = new attendance_preferences_data($att, array_filter($errors));
// Output starts here.
private $att;
- public function __construct(attendance $att) {
+ public $errors;
+
+ public function __construct(attendance $att, $errors) {
$this->statuses = $att->get_statuses(false);
+ $this->errors = $errors;
foreach ($this->statuses as $st) {
$st->haslogs = att_has_logs_for_status ($st->id);
$i = 1;
foreach ($prefdata->statuses as $st) {
+ $emptyacronym = '';
+ $emptydescription = '';
+ if (array_key_exists($st->id, $prefdata->errors)) {
+ if (empty($prefdata->errors[$st->id]['acronym'])) {
+ $emptyacronym = $this->construct_notice(get_string('emptyacronym', 'mod_attendance'), 'notifyproblem');
+ }
+ if (empty($prefdata->errors[$st->id]['description'])) {
+ $emptydescription = $this->construct_notice(get_string('emptydescription', 'mod_attendance') , 'notifyproblem');
+ }
+ }
+
$table->data[$i][] = $i;
- $table->data[$i][] = $this->construct_text_input('acronym['.$st->id.']', 2, 2, $st->acronym);
- $table->data[$i][] = $this->construct_text_input('description['.$st->id.']', 30, 30, $st->description);
+ $table->data[$i][] = $this->construct_text_input('acronym['.$st->id.']', 2, 2, $st->acronym)
+ . $emptyacronym;
+ $table->data[$i][] = $this->construct_text_input('description['.$st->id.']', 30, 30, $st->description)
+ . $emptydescription;
$table->data[$i][] = $this->construct_text_input('grade['.$st->id.']', 4, 4, $st->grade);
$table->data[$i][] = $this->construct_preferences_actions_icons($st, $prefdata);
return html_writer::empty_tag('input', $attributes);
}
+ /**
+ * Construct a notice message
+ *
+ * @param string $text
+ * @param string $class
+ * @return string
+ */
+ private function construct_notice($text, $class = 'notifymessage') {
+ $attributes = array('class' => $class);
+ return html_writer::tag('p', $text, $attributes);
+ }
+
}