function smarty_block_citatas($params, $content, Smarty_Internal_Template &$template) { SmartyBlockContext::getInstance()->registerBlock($content, __FUNCTION__); if ($content) { PSSmarty::template('common/citatas.tpl', array('c_body' => trim($content)))->display(); } }
function smarty_block_book($params, $content, Smarty_Internal_Template &$smarty) { SmartyBlockContext::getInstance()->registerBlock($content, __FUNCTION__); if ($content) { echo '<div class="book"><div class="content">' . trim($content) . '</div></div>'; } }
function smarty_block_task($params, $content, Smarty_Internal_Template &$template) { $ctxtParams = SmartyBlockContext::getInstance()->registerBlock($content, __FUNCTION__); if (!$content) { return; //--- } /* @var $taskTpl Smarty_Internal_Template */ $taskTpl = PSSmarty::template('common/task.tpl', $ctxtParams); $from = value_Array(array('from', 'c_from'), $params); $taskTpl->assign('from', $from); $taskTpl->assign('body', $content); $isSubTask = SmartyBlockContext::getInstance()->hasParentBlock('tasks'); $taskTpl->assign('sub_task', $isSubTask); $taskNum = null; if (!$isSubTask) { $taskNumber = null; //Допускается вывод задач не в контексте $ctxt = FoldedContextWatcher::getInstance()->getTasksNumeratorContext(false); if ($ctxt) { $taskNumber = $ctxt->getNextTaskNumber(); } $taskNum = $taskNumber ? "Задача № {$taskNumber}" : null; } $taskTpl->assign('task_num', $taskNum); $taskTpl->display(); }
function smarty_block_tool($params, $content, Smarty_Internal_Template &$template) { $ctxtParams = SmartyBlockContext::getInstance()->registerBlock($content, __FUNCTION__); if (!$content) { return; } $hasToolBody = !isEmptyInArray(SmartyBlockContext::HAS_TOOL_BODY, $ctxtParams); $id = value_Array('id', $params); $name = value_Array('name', $params); $img = value_Array('img', $params); $ident = value_Array('ident', $params); /* * Вычислим - показывать утилиту как ссылку или нет. * Такое возможно в двух случаях: у утилиты есть контент или мы насильно её делаем * ссылкой, чтобы "рулить" руками. */ $asHref = $hasToolBody; $toolTpl = $template->smarty->createTemplate('common/tool.tpl'); $toolTpl->assign('id', $id ? 'tool_' . $id : ''); $toolTpl->assign('name', $name); $toolTpl->assign('img', $img); $toolTpl->assign('ident', $ident); $toolTpl->assign('as_href', $asHref); $toolTpl->assign('c_body', $content); $toolTpl->display(); }
function smarty_block_tasks($params, $content, Smarty_Internal_Template &$smarty) { SmartyBlockContext::getInstance()->registerBlock($content, __FUNCTION__); if ($content) { echo $content; } }
function smarty_block_hint($params, $content, Smarty_Internal_Template &$smarty) { if ($content) { SmartyBlockContext::getInstance()->getParentBlockSetVirtualCtxt(array('task'), __FUNCTION__, true); SmartyBlockContext::getInstance()->setParam('c_hint', trim($content)); SmartyBlockContext::getInstance()->dropVirtualContext(); } }
function smarty_block_option($params, $content, Smarty_Internal_Template &$smarty) { if ($content === null) { return; } $params['content'] = $content; SmartyBlockContext::getInstance()->getParentBlockSetVirtualCtxt('choice', __FUNCTION__, true); SmartyBlockContext::getInstance()->addParam(SmartyBlockContext::CHOICE_OPTION, $params); SmartyBlockContext::getInstance()->dropVirtualContext(); }
function smarty_block_question($params, $content, Smarty_Internal_Template &$template) { $ctxtParams = SmartyBlockContext::getInstance()->registerBlock($content, __FUNCTION__); if (!$content) { return; } /* @var $questionTpl Smarty_Internal_Template */ $questionTpl = $template->smarty->createTemplate('common/question.tpl', $ctxtParams); $questionTpl->assign('c_body', $content); $questionTpl->display(); }
function smarty_block_answers($params, $content, Smarty_Internal_Template &$smarty) { $ctxtParams = SmartyBlockContext::getInstance()->registerBlock($content, __FUNCTION__); if (!$content) { return; } $answers = value_Array(SmartyBlockContext::MULTIPLE_ANSWERS, $ctxtParams); if ($answers) { PSSmarty::template('common/answers.tpl', array('answers' => $answers))->display(); } }
function smarty_block_ans($params, $content, Smarty_Internal_Template &$smarty) { if ($content === null) { return; } $parent = SmartyBlockContext::getInstance()->getParentBlockSetVirtualCtxt(array('answers', 'ex', 'task', 'question'), __FUNCTION__, true); if ($parent == 'answers') { $correct = !isEmptyInArray('correct', $params); SmartyBlockContext::getInstance()->addParam(SmartyBlockContext::MULTIPLE_ANSWERS, array($content, $correct)); } else { SmartyBlockContext::getInstance()->setParam('c_ans', $content); } SmartyBlockContext::getInstance()->dropVirtualContext(); }
function smarty_block_toolbody($params, $content, Smarty_Internal_Template &$template) { if (!$content) { return; } SmartyBlockContext::getInstance()->getParentBlockSetVirtualCtxt('tool', __FUNCTION__, true); SmartyBlockContext::getInstance()->setParam(SmartyBlockContext::HAS_TOOL_BODY, true); SmartyBlockContext::getInstance()->dropVirtualContext(); $toolName = value_Array('name', $params); if ($toolName) { /* @var $toolBodyContentTpl Smarty_Internal_Template */ $toolBodyContentTpl = $template->smarty->createTemplate("tools/{$toolName}.tpl"); $content = $toolBodyContentTpl->fetch(); } echo "<div class=\"tool_body\">{$content}</div>"; }
function smarty_block_citata($params, $content, Smarty_Internal_Template &$template) { $ctxtParams = SmartyBlockContext::getInstance()->registerBlock($content, __FUNCTION__); if (!$content) { return; } $citatas = SmartyBlockContext::getInstance()->hasParentBlock('citatas'); $from = value_Array('c_from', $ctxtParams); $from = $from ? $from : value_Array('from', $params); /* @var $citataTpl Smarty_Internal_Template */ $citataTpl = $template->smarty->createTemplate('common/citata.tpl'); $citataTpl->assign('child', $citatas); $citataTpl->assign('body', trim($content)); $citataTpl->assign('from', $from); $citataTpl->display(); }
function smarty_block_th($params, $content, Smarty_Internal_Template &$smarty) { $ctxtParams = SmartyBlockContext::getInstance()->registerBlock($content, __FUNCTION__); if (!$content) { return; //--- } $thId = trim(value_Array(array('id', 'num'), $params)); $num = PostFetchingContext::getInstance()->getNextThNum($thId, true); $elId = $thId ? PostFetchingContext::getInstance()->getThElId($thId) : null; $tpl = PSSmarty::template('common/theorem.tpl'); $tpl->assign('id', $elId); $tpl->assign('num', $num); $tpl->assign('c_body', $content); $tpl->assign($ctxtParams); $tpl->display(); }
function smarty_block_from($params, $content, Smarty_Internal_Template &$smarty) { if (!$content) { return; } $content = trim($content); $parent = SmartyBlockContext::getInstance()->getParentBlock(array('book', 'task', 'citata'), __FUNCTION__, true); switch ($parent) { case 'book': echo "<h6 class=\"book_info\">{$content}</h6>"; break; default: SmartyBlockContext::getInstance()->setVirtualContext($parent); SmartyBlockContext::getInstance()->setParam('c_from', $content); SmartyBlockContext::getInstance()->dropVirtualContext(); break; } }
function smarty_function_varres($params, Smarty_Internal_Template &$smarty) { SmartyBlockContext::getInstance()->getParentBlockSetVirtualCtxt(array('task', 'ex'), __FUNCTION__, true); $num = SmartyBlockContext::getInstance()->getNumAndIncrease(SmartyBlockContext::ALTERNATE_SOLUTION_NUM); SmartyBlockContext::getInstance()->dropVirtualContext(); switch ($num) { case 1: $text = 'I. Первый'; break; case 2: $text = 'II. Второй'; break; case 3: $text = 'III. Третий'; break; case 4: $text = 'IV. Четвёртый'; break; case 5: $text = 'V. Пятый'; break; case 6: $text = 'VI. Шестой'; break; case 7: $text = 'VII. Седьмой'; break; case 8: $text = 'VIII. Восьмой'; break; case 9: $text = 'IX. Девятый'; break; case 10: $text = 'X. Десятый'; break; default: die("Not enougth var resh nums"); } echo "<p><strong>{$text} вариант решения:</strong></p>"; }
function smarty_block_ex($params, $content, Smarty_Internal_Template &$template) { $ctxtParams = SmartyBlockContext::getInstance()->registerBlock($content, __FUNCTION__); if (!$content) { return; //--- } $ctxt = PostFetchingContext::getInstance(); if (array_key_exists('reset', $params)) { $ctxt->resetExamplesNum(); } $exId = trim(value_Array(array('id', 'num'), $params)); $num = $ctxt->getExampleNum($exId, true); $elId = $exId ? $ctxt->getExampleElId($exId) : null; /* @var $exampleTpl Smarty_Internal_Template */ $exampleTpl = PSSmarty::template('common/example.tpl'); $exampleTpl->assign('id', $elId); $exampleTpl->assign('num', $num); $exampleTpl->assign('c_body', $content); $exampleTpl->assign($ctxtParams); $exampleTpl->display(); }
function smarty_block_choice($params, $content, Smarty_Internal_Template &$smarty) { $ctxtParams = SmartyBlockContext::getInstance()->registerBlock($content, __FUNCTION__); if (!$content) { return; } //<select name="$name" /> || <input type="checkbox|readio" name="$name" /> $name = array_get_value('name', $params); //Если передан label, то поле будет отображено, как field формы $label = array_get_value('label', $params); //Текущее значение $curVal = array_get_value_unset('value', $params); //Текущее значение $choiceType = array_get_value_unset('type', $params); //Значения $options = array_get_value(SmartyBlockContext::CHOICE_OPTION, $ctxtParams); if (isEmpty($options)) { return; //--- } switch ($choiceType) { case 'combo': case 'select': echo $label ? PsHtmlForm::select($label, $name, $params, $options, $curVal) : PsHtml::select($params, $options, $curVal); break; case 'check': case 'checkboxes': echo $label ? PsHtmlForm::checkboxes($label, $name, $options, $curVal) : PsHtml::checkboxes($name, $options, $curVal); break; case 'radio': case 'radios': echo $label ? PsHtmlForm::radios($label, $name, $options, $curVal) : PsHtml::radios($name, $options, $curVal); break; default: echo PsHtml::divErr("Неизвестный тип выбора: [{$choiceType}]"); } }