diff --git a/element/coursename/classes/element.php b/element/coursename/classes/element.php index 87a1764..c88c242 100644 --- a/element/coursename/classes/element.php +++ b/element/coursename/classes/element.php @@ -35,6 +35,33 @@ defined('MOODLE_INTERNAL') || die(); */ class element extends \mod_customcert\element { + /** + * This function renders the form elements when adding a customcert element. + * + * @param \MoodleQuickForm $mform the edit_form instance + */ + public function render_form_elements($mform) { + + // The course name display options. + $mform->addElement('select', 'coursenamedisplay', get_string('coursenamedisplay', 'customcertelement_coursename'), + self::get_course_name_display_options()); + $mform->setType('coursenamedisplay', PARAM_ALPHA); + $mform->addHelpButton('coursenamedisplay', 'coursenamedisplay', 'customcertelement_coursename'); + + parent::render_form_elements($mform); + } + + /** + * This will handle how form data will be saved into the data column in the + * customcert_elements table. + * + * @param \stdClass $data the form data + * @return string the text + */ + public function save_unique_data($data) { + return $data->coursenamedisplay; + } + /** * Handles rendering the element on the pdf. * @@ -43,7 +70,7 @@ class element extends \mod_customcert\element { * @param \stdClass $user the user we are rendering this for */ public function render($pdf, $preview, $user) { - \mod_customcert\element_helper::render_content($pdf, $this, $this->get_course_name()); + \mod_customcert\element_helper::render_content($pdf, $this, $this->get_course_name_detail()); } /** @@ -55,19 +82,54 @@ class element extends \mod_customcert\element { * @return string the html */ public function render_html() { - return \mod_customcert\element_helper::render_html_content($this, $this->get_course_name()); + return \mod_customcert\element_helper::render_html_content($this, $this->get_course_name_detail()); } /** - * Helper function that returns the category name. + * Sets the data on the form when editing an element. + * + * @param \MoodleQuickForm $mform the edit_form instance + */ + public function definition_after_data($mform) { + if (!empty($this->get_data())) { + $element = $mform->getElement('coursenamedisplay'); + $element->setValue($this->get_data()); + } + parent::definition_after_data($mform); + } + + /** + * Helper function that returns the selected course name detail (i.e. name or short description) for display. * * @return string */ - protected function get_course_name() : string { + protected function get_course_name_detail() : string { $courseid = \mod_customcert\element_helper::get_courseid($this->get_id()); $course = get_course($courseid); $context = \mod_customcert\element_helper::get_context($this->get_id()); - return format_string($course->fullname, true, ['context' => $context]); + // The name field to display. + $field = $this->get_data(); + // The name value to display. + $value = $course->fullname; + if ($field == 'courseshortdescription') { + $value = $course->shortname; + } + + return format_string($value, true, ['context' => $context]); + } + + /** + * Helper function to return all the possible name display options. + * + * @return array returns an array of name options + */ + public static function get_course_name_display_options() { + $coursenamedisplayoptions = array( + 'coursename' => get_string('coursename', 'customcertelement_coursename'), + 'courseshortdescription' => get_string('courseshortdescription', 'customcertelement_coursename') + ); + + return $coursenamedisplayoptions; } } diff --git a/element/coursename/lang/en/customcertelement_coursename.php b/element/coursename/lang/en/customcertelement_coursename.php index 48781e4..df10703 100644 --- a/element/coursename/lang/en/customcertelement_coursename.php +++ b/element/coursename/lang/en/customcertelement_coursename.php @@ -24,3 +24,7 @@ $string['pluginname'] = 'Course name'; $string['privacy:metadata'] = 'The Course name plugin does not store any personal data.'; +$string['coursenamedisplay'] = 'Course name / short description'; +$string['coursenamedisplay_help'] = 'Course name or short description you wish to display on certificate.'; +$string['coursename'] = 'Course name'; +$string['courseshortdescription'] = 'Course short description';