Skip to content

Commit

Permalink
MDL-50332 enrol_self: Formatting unavailable instances error messages
Browse files Browse the repository at this point in the history
Many thanks to Andrew Nicols as this patch is based on his
proposal. Thanks Andrew.
  • Loading branch information
David Monllao committed Sep 21, 2015
1 parent d230899 commit 8f33808
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 8 deletions.
41 changes: 41 additions & 0 deletions enrol/self/classes/empty_form.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?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);
}
}
21 changes: 13 additions & 8 deletions enrol/self/lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -234,23 +234,28 @@ public function enrol_page_hook(stdClass $instance) {

$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) {
if ($data = $form->get_data()) {
$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);
}

/**
Expand Down

0 comments on commit 8f33808

Please sign in to comment.