Ejemplo n.º 1
0
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();
    }
}
Ejemplo n.º 2
0
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>';
    }
}
Ejemplo n.º 3
0
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();
}
Ejemplo n.º 4
0
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();
}
Ejemplo n.º 5
0
function smarty_block_tasks($params, $content, Smarty_Internal_Template &$smarty)
{
    SmartyBlockContext::getInstance()->registerBlock($content, __FUNCTION__);
    if ($content) {
        echo $content;
    }
}
Ejemplo n.º 6
0
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();
    }
}
Ejemplo n.º 7
0
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();
}
Ejemplo n.º 8
0
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();
}
Ejemplo n.º 9
0
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();
    }
}
Ejemplo n.º 10
0
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();
}
Ejemplo n.º 11
0
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>";
}
Ejemplo n.º 12
0
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();
}
Ejemplo n.º 13
0
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();
}
Ejemplo n.º 14
0
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;
    }
}
Ejemplo n.º 15
0
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>";
}
Ejemplo n.º 16
0
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();
}
Ejemplo n.º 17
0
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}]");
    }
}