Example #1
0
 /**
  * Лупа, при наведении на которую отображается загружаемая картинка
  * <img class="ps-bubblehref-move preview" src="/resources/images/icons/preview.png" data-loader="image" data-img="/resources/images/logotip.png" alt="preview.png">
  */
 public static function previewImgBubble($src, array $attrs = array())
 {
     self::attrsLoader($attrs, PsConstJs::BUBBLE_LOADER_IMAGE, PsConstJs::BUBBLE_HREF_MOVE_CLASS);
     $attrs['data']['img'] = $src;
     $attrs['class'][] = 'preview';
     $attrs['src'] = PsConstJs::IMG_PREVIEW;
     echo PsHtml::img($attrs);
 }
 private function generateImpl()
 {
     $images = DirManager::inst('ps-addon/crop')->getDirContent('oboi', DirItemFilter::FILES);
     for ($i = 0; $i < rand(2000, 3000); $i++) {
         $img = $images[array_rand($images)];
         echo PsHtml::img(array('src' => PsImgEditor::resize($img, '60x60', null)));
     }
 }
Example #3
0
 /**
  * Метод возвращает <img /> элемент, готовый для вставки на страницу
  */
 public static function getAvatarImg(PsUser $user = null, $dim = false, array $params = array())
 {
     $params['src'] = self::getAvatarDi($user, $dim);
     $params['alt'] = $user ? $user->getName() : 'Аноним';
     $params['data'] = $user ? array('uid' => $user->getId()) : null;
     $params['class'] = to_array(array_get_value('class', $params));
     $params['class'][] = array('avatar', $user ? 'user' : null);
     return PsHtml::img($params);
 }
Example #4
0
 /**
  * Метод возвращает ссылку, открывающую загружаемую страницу.
  * Для работы загружаемой страницы нужны ресурсы фолдинга этой страницы - они также будут добавлены к ссылке.
  * 
  * <a title="Новости" class="ip-opener" href="#news"><img alt="news.png" src="/autogen/images/16x16/folding/idents/news.png"></a>
  * 
  * @param BaseIdentPage or String $item
  * @param array $params - параметры ссылки
  * @param type $content - содержимое ссылки. Если нет, то будет подставлена картинка.
  */
 public final function getIdentPageHref(array $params = array(), $content = null)
 {
     $this->checkAccess();
     $params['class'][] = 'ip-opener';
     $params['class'][] = $this->foldedEntity->getUnique();
     $params['title'] = $this->getTitle();
     $params['href'] = "#" . $this->foldedEntity->getIdent();
     //Если не передано содержимое, то добавим картинку
     $content = $content ? $content : PsHtml::img(array('src' => $this->foldedEntity->getCover()));
     //Добавим все необходимые ресурсы
     $content = $this->foldedEntity->getResourcesLinks($content);
     return PsHtml::a($params, $content);
 }
Example #5
0
 /**
  * Метод выполняет фактическую замену TEX тега на его представление в виде картинки или спрайта.
  * 
  * @param str $original \[v_{\text{cp}}=\frac{\Delta S}{\Delta t}\]
  * @param str $formula    v_{\text{cp}}=\frac{\Delta S}{\Delta t}
  * @param str $type     block or inline
  */
 public function _replaceInTextImpl($original, $formula, $isBlock)
 {
     $type = $isBlock ? 'block' : 'inline';
     $replace = '';
     if ($formula) {
         /*
          * Проверяем, разрешена ли замена формул на спрайты и есть ли сейчас контекст.
          * Если всё выполнено, то это вовсе не означает, что необходимый спрайт подключен и есть 
          * спрайт для данной формулы.
          */
         if (PsDefines::isReplaceFormulesWithSprites() && FoldedContextWatcher::getInstance()->getSpritableContext()) {
             $replace = CssSpritesManager::getFormulaSprite(FoldedContextWatcher::getInstance()->getSpritableContext()->getSpritable(), $formula, array('TeX', $type));
         }
         /*
          * Если спрайта не нашлось, то заменяем на картинку.
          */
         if (!$replace) {
             $imgDi = $this->getImgDi($formula);
             $imgPath = $imgDi ? $imgDi->getRelPath() : null;
             if ($imgPath) {
                 $replace = PsHtml::img(array('src' => $imgPath, 'class' => "TeX {$type}", 'alt' => ''));
             } else {
                 $replace = $original;
             }
         }
     }
     /*
      * Логирование
      */
     if ($this->LOGGER->isEnabled()) {
         $this->LOGGER->info(++$this->replaced . ". Replacing {$type} TeX");
         $this->LOGGER->info("FULL:   {$original}");
         $this->LOGGER->info("CONTENT:  {$formula}");
         $this->LOGGER->info("SAVED:    {$formula}");
         $this->LOGGER->info("REPLACED: {$replace}");
         $this->LOGGER->info("\n");
     }
     return $replace;
 }
 private function insert($FNAME, ArrayAdapter $params, $content)
 {
     $IMG['data'] = $params->has('data') ? $params->get('data') : $params->getByKeyPrefix('data_', true);
     $IMG['class'] = $params->get(array('cl', 'class'));
     $IMG['style'] = $params->get(array('st', 'style'));
     $IMG['title'] = $params->get('title');
     /*
      * Если alt задан, но пуст - таким его и оставим. 
      * Скорее всего нам такое поведение и нужно. Например в галлереях alt используется для подсказки.
      * Нам не нужно в качестве подсказки показывать название картинки.
      */
     if ($params->has('alt')) {
         $IMG['alt'] = $params->get('alt');
     }
     if ($params->hasNoEmpty('map')) {
         $IMG['usemap'] = '#' . $params->get('map');
     }
     $isPopup = ends_with($FNAME, 'imgp');
     //Массив фактических картинок
     $IMAGES = array();
     if ($content && !$isPopup) {
         //Есть содержимое
     } else {
         $IMAGES = to_array($this->getImages($params, $FNAME));
         check_condition($IMAGES, "В блок [{$FNAME}] не переданы картинки для отображения.");
     }
     if ($isPopup) {
         //Всплывающая картинка
         $popupImgSrc = $IMAGES[0] instanceof DirItem ? $IMAGES[0]->getRelPath() : $IMAGES[0];
         if ($content == '.') {
             echo PsBubble::previewImgBubble($popupImgSrc);
         } else {
             echo PsBubble::spanImgBubble($content, $popupImgSrc);
         }
         return;
         //---
     }
     //Параметры
     $id = $params->str(array('id', 'num'));
     $text = $params->str('text');
     $isBlock = $content || count($IMAGES) > 1 || $id || $text || ends_with($FNAME, array('imgb', 'imgn'));
     if (!$isBlock) {
         $IMG['src'] = $IMAGES[0];
         echo PsHtml::img($IMG);
         return;
         //---
     }
     //Блочная картинка
     //Определим номер картинки. Если это imgn, то нумерация форсированно отключена.
     $inc = ends_with($FNAME, 'imgn') ? null : FoldedContextWatcher::getInstance()->getImageNumeratorContext(false);
     //Определим текст подписи под картинкой.
     $num = $inc ? ' ' . PsConst::NUM_REPLCASE_MACROS : '';
     $text = trim($num || $text ? "<b>Рис.{$num}</b> {$text}" : '');
     $text = $text ? "<p>{$text}</p>" : '';
     //Строим див с картинками
     $DIV['class'] = array('block_img');
     if (!$content) {
         foreach ($IMAGES as $src) {
             $IMG['src'] = $src;
             $content .= PsHtml::img($IMG);
         }
     }
     $content .= $text;
     echo $inc ? $inc->wrapBlockImgBox($id, $DIV, $content) : PsHtml::div($DIV, $content);
 }
Example #7
0
 public static function capture()
 {
     $img = PsHtml::img(array('id' => PsConstJs::CAPTCHA_IMG_ID, 'alt' => 'Антибот'));
     $input = PsHtml::input('text', FORM_PARAM_PSCAPTURE);
     return self::field(null, $img . '<br />' . $input);
 }