Example #1
0
function smarty_function_video($params, Smarty_Internal_Template &$smarty)
{
    $params = ArrayAdapter::inst($params);
    MmediaManager::getInstance()->insertVideo($params->str('dir'), $params->str('name'));
    if (PostFetchingContext::getInstance()->isSetted()) {
        PostFetchingContext::getInstance()->setHasVideo();
    }
}
Example #2
0
function smarty_modifier_thhref($thId)
{
    $thId = trim($thId);
    $CTXT = PostFetchingContext::getInstance();
    $num = $CTXT->getNextThNum($thId, false);
    if (!$num) {
        return PsHtml::spanErr("Ссылка на незарегистрированную теорему с идентификатором '{$thId}'");
    }
    return PsBubble::aById($CTXT->getThElId($thId), "№{$num}", 'theorem');
}
Example #3
0
function smarty_modifier_exhref($exId)
{
    $exId = trim($exId);
    $num = PostFetchingContext::getInstance()->getExampleNum($exId, false);
    $elId = PostFetchingContext::getInstance()->getExampleElId($exId);
    if (!$num) {
        return PsHtml::spanErr("Ссылка на незарегистрированный пример с идентификатором '{$exId}'");
    }
    return PsBubble::aById($elId, "№{$num}", 'example');
}
Example #4
0
function smarty_block_part($params, $content, Smarty_Internal_Template &$smarty)
{
    if (!$content) {
        return;
    }
    $post = PostFetchingContext::getInstance()->getPost();
    $postType = $post->getPostType();
    $content = trim($content);
    $descr = value_Array(array('desc', 'descr'), $params);
    switch ($postType) {
        case POST_TYPE_ISSUE:
            //ЖУРНАЛ
            if ($content == 'EDITOR') {
                $postId = MagManager::ident2id($post->getIdent());
                echo "<h4 class=\"ps-post-head section\"><span>Выпуск {$postId}.</span> Редакторская колонка</h4>";
            } else {
                switch ($content) {
                    case 'WHOIS':
                        $content = 'Кто это?';
                        break;
                    case 'TASKS':
                        PostFetchingContext::getInstance()->resetTasksNumber();
                        $content = 'Задачки на подумать';
                        break;
                    case 'TASKS_A':
                        $content = 'Ответы на задачи предыдущего номера';
                        break;
                    case 'CITATA':
                        $content = 'Цитата номера';
                        break;
                    case 'VERSE':
                        $content = "Стихи, {$descr}";
                        break;
                    case 'HUMOR':
                        $content = 'Студенческий юмор';
                        break;
                }
                $curNum = PostFetchingContext::getInstance()->addAnons($content);
                echo "<h4 id=\"p{$curNum}\" class=\"section\"><span>Часть#{$curNum}.</span> {$content}</h4>";
            }
            break;
        case POST_TYPE_TRAINING:
            //УПРАЖНЕНИЯ
            $curNum = PostFetchingContext::getInstance()->addAnons($content);
            echo "<h5 id=\"p{$curNum}\" class=\"paragraph\">{$curNum}. {$content}</h5>";
            break;
        default:
            check_condition(false, __FUNCTION__ . ' function cannot be used with post type ' . $postType);
    }
}
Example #5
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();
}
Example #6
0
function smarty_block_partition($params, $content, Smarty_Internal_Template &$smarty)
{
    if (!$content) {
        return;
    }
    $type = PostFetchingContext::getInstance()->getFoldedEntity()->getFolding()->getFoldingSubType();
    $aa = ArrayAdapter::inst(explode(':', $content));
    $MAKROS = $aa->str(0);
    $VALUE = $aa->str(1);
    switch ($type) {
        case POST_TYPE_TRAINING:
            //УПРАЖНЕНИЯ
            switch ($MAKROS) {
                case 'PLAN':
                    echo '<h3>План урока:</h3>';
                    break;
                case 'VIDEO':
                    echo '<h3>Видео урок:</h3>';
                    break;
                case 'CONSPECT':
                    echo '<h3>Конспект занятия:</h3>';
                    break;
                case 'TASKS':
                    if (!$VALUE) {
                        echo '<h3>Контрольные вопросы и задачи:</h3>';
                    } else {
                        echo "<h3 class=\"section\">{$VALUE}</h4>";
                    }
                    break;
                case 'FINAL':
                    echo '<h3>Заключение:</h3>';
                    break;
                default:
                    echo "<h3>{$content}</h3>";
                    break;
            }
            break;
        default:
            check_condition(false, __FUNCTION__ . ' function cannot be used with post type ' . $type);
    }
}
Example #7
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();
}
Example #8
0
 /**
  * Основной метод, выполняющий всю работу.
  * К этому моменту мы уже определили плагин и установили контекст.
  * Остаётся только построить сам плагин.
  */
 private function buildImpl(BasePlugin $plugin, $content, ArrayAdapter $params)
 {
     //Если $content === null, то мы отображаем плагин в popup окне
     //В противном случае запросим УРЛ для перехода к popup-виду плагина
     $popupUrl = $content === null ? null : PopupPagesManager::inst()->getPluginUrl($plugin);
     $ident = $plugin->getIdent();
     $content = trim($content);
     try {
         $pluginContent = $plugin->getPluginContent($content, $params, PluginFetchingContext::getInstance());
         if (PostFetchingContext::getInstance()->isSetted()) {
             PostFetchingContext::getInstance()->registerPlugin($ident, $pluginContent->getPostData());
         }
         $tpl = PSSmarty::template('psplugins/BASE.tpl');
         $tpl->assign('url', $popupUrl);
         $tpl->assign('ident', $ident);
         $tpl->assign('content', $this->getResourcesLinks($ident, $pluginContent->getContent()));
         return $tpl->fetch();
     } catch (Exception $e) {
         //Произошла ошибка... От нас требуется вернуть её текстовое представление,
         //так как самое важное - отключить контекст выполнения плагина.
         return ExceptionHandler::getHtml($e);
     }
 }
Example #9
0
function smarty_function_ANONS($params, Smarty_Internal_Template &$smarty)
{
    $replId = PostFetchingContext::REPLACEMENT_ANONS;
    PostFetchingContext::getInstance()->registerReplacement($replId);
    echo $replId;
}
Example #10
0
 protected function getFoldedContext()
 {
     return PostFetchingContext::getInstance();
 }