protected function definition() { $mform = $this->_form; $question = $this->_customdata; // Inputs. $mform->addElement('header', 'inputsheader', stack_string('inputs')); foreach ($question->inputs as $inputname => $input) { $mform->addElement('text', 'inputname_' . $inputname, stack_string('newnameforx', $inputname), array('size' => 20)); $mform->setDefault('inputname_' . $inputname, $inputname); $mform->setType('inputname_' . $inputname, PARAM_RAW); // Validated in the validation method. } // PRTs. $mform->addElement('header', 'prtsheader', stack_string('prts')); foreach ($question->prts as $prtname => $prt) { $mform->addElement('text', 'prtname_' . $prtname, stack_string('newnameforx', $prtname), array('size' => 20)); $mform->setDefault('prtname_' . $prtname, $prtname); $mform->setType('prtname_' . $prtname, PARAM_RAW); // Validated in the validation method. } // PRT nodes. foreach ($question->prts as $prtname => $prt) { $mform->addElement('header', 'prtnodesheader' . $prtname, stack_string('prtnodesheading', $prtname)); $graph = $graph = $this->get_prt_graph($prt); $newnames = $graph->get_suggested_node_names(); $mform->addElement('static', $prtname . 'graph', '', stack_abstract_graph_svg_renderer::render($graph, $prtname . 'graphsvg')); foreach ($prt->get_nodes_summary() as $nodekey => $notused) { $mform->addElement('text', 'nodename_' . $prtname . '_' . $nodekey, stack_string('newnameforx', $nodekey + 1), array('size' => 20)); $mform->setDefault('nodename_' . $prtname . '_' . $nodekey, $newnames[$nodekey + 1]); $mform->setType('nodename_' . $prtname . '_' . $nodekey, PARAM_INT); } } // Submit buttons. $this->add_action_buttons(true, stack_string('renamequestionparts')); }
/** * Add the form elements defining one PRT. * @param string $prtname the name of the PRT. * @param MoodleQuickForm $mform the form being assembled. * @param int $count the number of times this PRT appears in the text of the question. */ protected function definition_prt($prtname, MoodleQuickForm $mform, $count) { $mform->addElement('header', $prtname . 'header', stack_string('prtheading', $prtname)); if ($count == 0) { $mform->addElement('static', $prtname . 'prtwarning', '', stack_string('prtwillberemoved', $prtname)); $mform->addElement('advcheckbox', $prtname . 'prtdeleteconfirm', '', stack_string('prtremovedconfirm')); $mform->setDefault($prtname . 'prtdeleteconfirm', 0); $mform->setExpanded($prtname . 'header'); } $mform->addElement('text', $prtname . 'value', stack_string('questionvalue'), array('size' => 3)); $mform->setType($prtname . 'value', PARAM_FLOAT); $mform->setDefault($prtname . 'value', 1); $mform->addElement('selectyesno', $prtname . 'autosimplify', stack_string('autosimplify')); $mform->setDefault($prtname . 'autosimplify', true); $mform->addHelpButton($prtname . 'autosimplify', 'autosimplifyprt', 'qtype_stack'); $mform->addElement('textarea', $prtname . 'feedbackvariables', stack_string('feedbackvariables'), array('rows' => 3, 'cols' => 80)); $mform->addHelpButton($prtname . 'feedbackvariables', 'feedbackvariables', 'qtype_stack'); $inputnames = implode(', ', $this->get_inputs_used_by_prt($prtname)); $mform->addElement('static', $prtname . 'inputsnote', '', stack_string('prtwillbecomeactivewhen', html_writer::tag('b', $inputnames))); // Create the section of the form for each node - general bits. $graph = $this->get_prt_graph($prtname); $mform->addElement('static', $prtname . 'graph', '', stack_abstract_graph_svg_renderer::render($graph, $prtname . 'graphsvg')); $nextnodechoices = array('-1' => stack_string('stop')); foreach ($graph->get_nodes() as $node) { $nextnodechoices[$node->name - 1] = stack_string('nodex', $node->name); } $deletable = count($graph->get_nodes()) > 1; foreach ($graph->get_nodes() as $node) { $this->definition_prt_node($prtname, $node->name, $nextnodechoices, $deletable, $mform); } $mform->addElement('submit', $prtname . 'nodeadd', stack_string('addanothernode')); $mform->registerNoSubmitButton($prtname . 'nodeadd'); }
$graph3->add_node(3, 4, 4, '+0.1', '-0.1'); $graph3->add_node(4, null, null, '+0.1', '-0.1'); $graph4 = new stack_abstract_graph(); $graph4->add_node(1, 3, 2, '=1', '=0'); $graph4->add_node(2, 4, 4, '+0.1', '-0.1'); $graph4->add_node(3, 4, 4, '+0.1', '-0.1'); $graph4->add_node(4, null, null, '+0.1', '-0.1'); $graph5 = new stack_abstract_graph(); $graph5->add_node(1, 7, 2, '=1', '=0'); $graph5->add_node(2, 7, 3, '+0.1', '-0.1'); $graph5->add_node(3, 7, 4, '+0.1', '-0.1'); $graph5->add_node(4, 7, 5, '+0.1', '-0.1'); $graph5->add_node(5, 7, 6, '+0.1', '-0.1'); $graph5->add_node(6, 7, 7, '+0.1', '-0.1'); $graph5->add_node(7, null, null, '+0.1', '-0.1'); $graph6 = new stack_abstract_graph(); $graph6->add_node(7, 10, 8, '=1', '=0'); $graph6->add_node(8, null, 9, '+0.1', '-0.1'); $graph6->add_node(9, 10, 10, '+0.1', '-0.1'); $graph6->add_node(10, null, null, '+0.1', '-0.1'); $examples = array($broken, $broken2, $tree, $tree2, $tree3, $graph, $graph2, $graph3, $graph4, $graph5, $graph6); foreach ($examples as $example) { $example->layout(); } echo $OUTPUT->header(); echo $OUTPUT->heading('Example graphs'); $i = 0; foreach ($examples as $example) { echo stack_abstract_graph_svg_renderer::render($example, 'example' . $i++); } echo $OUTPUT->footer();
list($left, $right) = $branches; if ($left == -1) { $left = null; } else { $left += 1; } if ($right == -1) { $right = null; } else { $right += 1; } $tree->add_node($node + 1, $left, $right); } reset($uniquetree); echo $OUTPUT->heading('Tree used ' . $count . ' times'); if ($count < 10) { echo '<p>' . implode('<br .>', $qnamesused[$key]) . '</p>'; } try { $tree->layout(); echo stack_abstract_graph_svg_renderer::render($tree, 'real' . $i++); } catch (Exception $e) { print_object($tree); foreach ($trees as $name => $tree) { if (json_encode($tree) == $key) { print_object($name); } } } } echo $OUTPUT->footer();