示例#1
0
 protected function tokenAreaToCode($token)
 {
     //$token_props = var_export($token->get_all_props(),1);
     $token_props_parts = array();
     $local_templates = self::getAreaLocalTemplates($token);
     $parsed_props = array();
     foreach ($token->getAllProps() as $tp => $tpval) {
         $c_part = "'" . $tp . "' => ";
         if ($tp === 'suit') {
             $res_suit = Suitable::compileAreaSuitProp($tpval, $local_templates, $this->template_set_name);
             $c_val = "'" . $res_suit . "'";
         } elseif (preg_match("~^`.+`\$~s", $tpval)) {
             $c_val = trim($tpval, '`');
         } elseif (preg_match('~\\$~', $tpval)) {
             $c_val = $this->parseExpression($tpval);
         } else {
             $c_val = "'" . addslashes($tpval) . "'";
         }
         $parsed_props[$tp] = $c_val;
         $token_props_parts[] = $c_part . $c_val;
     }
     $token_props = 'array(' . join(", ", $token_props_parts) . ')';
     $res = '';
     $res = '<?php $context->push(array("area_infoblocks" => fx::page()->getAreaInfoblocks(' . $parsed_props['id'] . ")));\n?>";
     $render_called = false;
     foreach ($token->getChildren() as $child_num => $child) {
         if ($child->name == 'template') {
             $child->setProp('area', $token->getProp('id'));
             if (!$render_called) {
                 if ($child_num > 0) {
                     $res = "<?php\n" . 'if ($_is_admin) {' . "\n" . 'echo self::renderArea(' . $token_props . ', $context, \'marker\');' . "\n" . '}' . "\n?>\n" . $res . '<?php echo self::renderArea(' . $token_props . ', $context, \'data\');?>';
                 } else {
                     $res .= '<?php echo self::renderArea(' . $token_props . ', $context);?>';
                 }
                 $render_called = true;
             }
             $this->registerTemplate($child);
         } else {
             $res .= $this->getTokenCode($child, $token);
         }
     }
     if (!$render_called) {
         $res = '<?php echo self::renderArea(' . $token_props . ', $context);?>' . $res;
     }
     $res .= "<?php \$context->pop();\n?>";
     return $res;
 }