1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10:
11:
12: namespace Nette\Latte\Macros;
13:
14: use Nette,
15: Nette\Latte,
16: Nette\Latte\MacroNode,
17: Nette\Latte\ParseException,
18: Nette\Utils\Strings;
19:
20:
21:
22: 23: 24: 25: 26: 27: 28: 29: 30:
31: class FormMacros extends MacroSet
32: {
33:
34: public static function install(Latte\Parser $parser)
35: {
36: $me = new static($parser);
37: $me->addMacro('form',
38: '$form = $control[%node.word]; echo $form->getElementPrototype()->addAttributes(%node.array)->startTag()',
39: '?><div><?php
40: foreach ($form->getComponents(TRUE, \'Nette\Forms\Controls\HiddenField\') as $_tmp) echo $_tmp->getControl();
41: if (iterator_count($form->getComponents(TRUE, \'Nette\Forms\Controls\TextInput\')) < 2) echo "<!--[if IE]><input type=IEbug disabled style=\"display:none\"><![endif]-->";
42: ?></div>
43: <?php echo $form->getElementPrototype()->endTag()');
44: $me->addMacro('label', array($me, 'macroLabel'), '?></label><?php');
45: $me->addMacro('input', 'echo $form[%node.word]->getControl()->addAttributes(%node.array)');
46: }
47:
48:
49:
50:
51:
52:
53: 54: 55:
56: public function macroLabel(MacroNode $node, $writer)
57: {
58: $cmd = 'if ($_label = $form[%node.word]->getLabel()) echo $_label->addAttributes(%node.array)';
59: if ($node->isEmpty = (substr($node->args, -1) === '/')) {
60: $node->setArgs(substr($node->args, 0, -1));
61: return $writer->write($cmd);
62: } else {
63: return $writer->write($cmd . '->startTag()');
64: }
65: }
66:
67: }
68: