コード例 #1
0
 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'));
 }
コード例 #2
0
 /**
  * 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');
 }
コード例 #3
0
$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();
コード例 #4
0
        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();