#225 Allow element plugins to control if they can be added

This commit is contained in:
Alexander Bias 2018-08-08 13:45:20 +02:00 committed by Mark Nelson
parent 97498b54a0
commit f16434575d
2 changed files with 15 additions and 2 deletions

View file

@ -352,6 +352,16 @@ abstract class element {
return true; return true;
} }
/**
* This defines if an element plugin can be added to a certificate.
* Can be overridden if an element plugin wants to take over the control.
*
* @return bool returns true if the element can be added, false otherwise
*/
public static function allow_add() {
return true;
}
/** /**
* Handles rendering the element on the pdf. * Handles rendering the element on the pdf.
* *

View file

@ -412,8 +412,11 @@ class element_helper {
$classname = '\\customcertelement_' . $foldername . '\\element'; $classname = '\\customcertelement_' . $foldername . '\\element';
// Ensure the necessary class exists. // Ensure the necessary class exists.
if (class_exists($classname)) { if (class_exists($classname)) {
$component = "customcertelement_{$foldername}"; // Additionally, check if the user is allowed to add the element at all.
$options[$foldername] = get_string('pluginname', $component); if ($classname::allow_add()) {
$component = "customcertelement_{$foldername}";
$options[$foldername] = get_string('pluginname', $component);
}
} }
} }
} }