Commit 18fd1950 authored by David Monllaó's avatar David Monllaó
Browse files

MDL-50332 enrol_self: Formatting unavailable instances error messages

Many thanks to Andrew Nicols as this patch is based on his
proposal. Thanks Andrew.
parent a91caeef
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Empty enrol_self form.
*
* Useful to mimic valid enrol instances UI when the enrolment instance is not available.
*
* @package enrol_self
* @copyright 2015 David Monllaó
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
require_once($CFG->libdir.'/formslib.php');
class enrol_self_empty_form extends moodleform {
/**
* Form definition.
* @return void
*/
public function definition() {
$this->_form->addElement('header', 'selfheader', $this->_customdata->header);
$this->_form->addElement('static', 'info', '', $this->_customdata->info);
}
}
......@@ -234,8 +234,8 @@ class enrol_self_plugin extends enrol_plugin {
$enrolstatus = $this->can_self_enrol($instance);
// Don't show enrolment instance form, if user can't enrol using it.
if (true === $enrolstatus) {
// This user can self enrol using this instance.
$form = new enrol_self_enrol_form(NULL, $instance);
$instanceid = optional_param('instance', 0, PARAM_INT);
if ($instance->id == $instanceid) {
......@@ -243,14 +243,19 @@ class enrol_self_plugin extends enrol_plugin {
$this->enrol_self($instance, $data);
}
}
ob_start();
$form->display();
$output = ob_get_clean();
return $OUTPUT->box($output);
} else {
return $OUTPUT->box($enrolstatus);
}
// This user can not self enrol using this instance. Using an empty form to keep
// the UI consistent with other enrolment plugins that returns a form.
$data = new stdClass();
$data->header = $this->get_instance_name($instance);
$data->info = $enrolstatus;
$form = new enrol_self_empty_form(null, $data);
}
ob_start();
$form->display();
$output = ob_get_clean();
return $OUTPUT->box($output);
}
/**
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment