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)); }
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'); }
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'); }
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(); }
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); } } }
/** * Функция вставляет текст всплывающей подсказки */ 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}]"); } } }
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(); }
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())); }