Пример #1
0
 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);
 }