public function getFormulaHref($formulaId)
 {
     $formulaId = trim($formulaId);
     $num = $this->getNextFormulaNum($formulaId, false);
     if (!$num) {
         return PsHtml::spanErr("Ссылка на незарегистрированную формулу с идентификатором '{$formulaId}'");
     }
     $boxId = $this->getFormulaElId($formulaId);
     return PsBubble::spanById($boxId, '(' . PsConstJs::numeratorHrefIndex(self::CSS_NUMERATOR_FORMULA, $num) . ')', 'formula');
 }
 public function getBlockImgHref($imageId)
 {
     $imageId = trim($imageId);
     $num = $this->getNextImgNum($imageId, false);
     if (!is_numeric($num)) {
         return PsHtml::spanErr("Ссылка на незарегистрированную картинку с идентификатором '{$imageId}'");
     }
     $boxId = $this->getImgElId($imageId);
     return PsBubble::spanById($boxId, "рис. " . PsConstJs::numeratorHrefIndex(self::CSS_NUMERATOR_IMG, $num));
 }
Exemple #3
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');
}
Exemple #4
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');
}
Exemple #5
0
function smarty_block_chessboard($params, $content, Smarty_Internal_Template &$template)
{
    if (!$content) {
        return;
    }
    $content = normalize_string($content, true);
    $content = strtolower($content);
    $arr = explode(',', $content);
    $sets = array();
    foreach ($arr as $value) {
        if (strlen($value) >= 4) {
            $fig = substr($value, 0, 2);
            $pos = substr($value, 2, 2);
            $sets[$pos] = $fig;
            $colNum = false;
            $rowNum = $pos[1];
            switch ($pos[0]) {
                case 'a':
                    $colNum = 1;
                    break;
                case 'b':
                    $colNum = 2;
                    break;
                case 'c':
                    $colNum = 3;
                    break;
                case 'd':
                    $colNum = 4;
                    break;
                case 'e':
                    $colNum = 5;
                    break;
                case 'f':
                    $colNum = 6;
                    break;
                case 'g':
                    $colNum = 7;
                    break;
                case 'h':
                    $colNum = 8;
                    break;
                default:
                    return PsHtml::spanErr("Bad chess board position: [{$value}]");
            }
            if ($colNum) {
                $sets[$colNum . $rowNum] = $fig;
            }
        }
    }
    /* @var $chessBoardTpl Smarty_Internal_Template */
    $chessBoardTpl = $template->smarty->createTemplate('common/chessboard.tpl');
    $chessBoardTpl->assign('figures', $sets);
    $chessBoardTpl->assign('small', array_key_exists('small', $params));
    $chessBoardTpl->display();
}
Exemple #6
0
 public function postHref($post, $content = null, $sub = null, $attrs = null, $blank = false)
 {
     $post = $this->extractPost($post, false);
     if (!$post) {
         /* Если поста нет, то ругаться не будем - нужно для предпросмотра поста */
         return PsHtml::spanErr($this->postTitle() . ' не определён');
     }
     $attrs = to_array($attrs);
     $attrs['href'] = $this->postUrl($post, $sub);
     if (!$sub) {
         $attrs['title'] = $this->postTitle($post);
     }
     $content = $content ? $content : $post->getName();
     return PsHtml::a($attrs, $content, $blank);
 }
function smarty_function_chis_rebus($params, Smarty_Internal_Template &$smarty)
{
    $params = ArrayAdapter::inst($params);
    /*
     * Текст ребуса
     */
    $rebus = $params->str('text');
    if ($rebus) {
        return "<div class=\"ps-math-rebus-holder\">{$rebus}</div>";
    }
    $rebus = $params->str('ans');
    if ($rebus) {
        $answers = PsMathRebus::inst()->rebusAnswers($rebus);
        if (is_array($answers)) {
            foreach ($answers as $ans) {
                echo "<div class=\"ps-math-rebus-holder\">{$ans}</div> ";
            }
        } else {
            return PsHtml::spanErr($answers);
        }
    }
}
Exemple #8
0
/**
 * Функция вставляет текст всплывающей подсказки
 */
function smarty_block_help($params, $content, Smarty_Internal_Template &$template)
{
    if (!$content) {
        return;
        //---
    }
    //Параметры
    $ident = $params->get(array('name', 'ident'));
    //Текст
    $text = $text == '.' ? null : $text;
    $entity = HelpManager::inst()->getFoldedEntity($ident);
    if ($entity) {
        return $entity->getFolding()->getLibItemBubbleHref($entity->getIdent(), $text);
    } else {
        if ($text) {
            return $text;
        } else {
            $info = ($libType ? $libType . '-' : '') . $ident;
            return PsHtml::spanErr("Не найден библиотечный элемент [{$info}]");
        }
    }
}
Exemple #9
0
function smarty_function_showcase($params, Smarty_Internal_Template &$template)
{
    /*
     * type - тип поста
     */
    $type = Handlers::getInstance()->extractPostType($params['type']);
    /*
     * full_view - полный или "обрезанный вид"
     */
    $full_view = !isEmptyInArray('full_view', $params);
    /*
     * mag_mode - режим вставки в журнал
     */
    $mag_mode = !isEmptyInArray('mag_mode', $params);
    /*
     * post_id - уникальный код поста в базе
     * post_ident - идентификатор поста, чаще всего - название шаблона
     *
     * Один из параметров обязательно должен присутствовать.
     */
    $post_id = value_Array('post_id', $params);
    $post_ident = value_Array('post_ident', $params);
    check_condition($post_id || $post_ident, 'Не переданы уникальный код или идентификатор поста.');
    $handler = Handlers::getInstance()->getPostsProcessorByPostType($type);
    /* @var $postCP PostContentProvider */
    $postCP = $post_id ? $handler->getPostContentProvider($post_id) : $handler->getPostContentProviderByIdent($post_ident);
    if (!$postCP) {
        return PsHtml::spanErr($post_id ? 'Не найден ' . $handler->postTitle() . ' с кодом \'' . $post_id . '\'' : 'Не найден ' . $handler->postTitle() . ' с идентификатором \'' . $post_ident . '\'');
    }
    /* @var $postShowcaseTpls Smarty_Internal_Template */
    $postShowcaseTpls = $template->smarty->createTemplate("{$type}/post_showcase.tpl");
    $postShowcaseTpls->assign('cp', $postCP);
    $postShowcaseTpls->assign('full_view', $full_view);
    $postShowcaseTpls->assign('mag_mode', $mag_mode);
    $postShowcaseTpls->display();
}
Exemple #10
0
 public function getBubbleHref($ident, $text, ArrayAdapter $params)
 {
     if (!$ident) {
         return $text;
     }
     $entity = $this->getFoldedEntity($ident);
     $entityDb = $entity ? $this->getLibItemDb($ident, false) : null;
     if ($entity && $entityDb) {
         $text = $text ? $text : $entityDb->getName();
         return PsBubble::spanFoldedEntityBubble($text, $entity->getUnique());
     }
     if ($text) {
         return $text;
     }
     $info = $this->getUnique($ident);
     return PsHtml::spanErr("Не найден библиотечный элемент [{$info}]");
 }
 public function __construct(Exception $ex)
 {
     //parent::__construct(PsHtml::spanErr('Ошибка шаблонного сообщения'), ExceptionHandler::inst()->getHtml($ex));
     parent::__construct(PsHtml::spanErr('Ошибка отображения сообщения'), PsHtml::divErr($ex->getMessage()));
 }