questionnaire. */ interface QuestionElements { /** * Returns a specific icon for this type of question. Note this is not bound to the * object but called staticly. * @return Icon the specific icon for this type of question */ static public function getIcon(bool $active = false) : Icon; /** * Returns the shape of the icon that is used in vue. * @return string */ static public function getIconShape(); /** * Returns the name of the type of question like "Frage" or "Test" or "Dateiablage" * This name is not showed to the participant of the questionnaire, but to the editor. * It might get displayed like "add another Frage to questionnaire", where 'Frage' * is the name of the type. * @return string : the name of this type of question. */ static public function getName(); /** * Returns an array with two parts: First one is the name of the component for editing the question. Second * one is the import path of the component. Plugins can use this to get their component imported. * @return Array */ static public function getEditingComponent(); /** * Usually the $questiondata is already in the correct format. But for some question types * some data have to be manipulated by for example the HTML-purifier. So this takes * the questiondata and changed them before they get stored. * @param $questiondata * @return mixed */ public function beforeStoringQuestiondata($questiondata); /** * Display the question to the user. This template will be embedded into a * html