Changeset 1359

Show
Ignore:
Timestamp:
08/25/11 10:51:15 (9 months ago)
Author:
ort
Message:

Доработка jevix - возможность обрабатывать в collback весь тег, а не только его контент

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/engine/lib/external/Jevix/jevix.class.php

    r1056 r1359  
    153153        const TR_TAG_IS_EMPTY = 13;      // Не короткий тег с пустым содержанием имеет право существовать 
    154154        const TR_TAG_NO_AUTO_BR = 14;    // Тег в котором не нужна авто-расстановка <br> 
    155         const TR_TAG_CALLBACK = 15;      // Тег обрабатывается callback-функцией 
     155        const TR_TAG_CALLBACK = 15;      // Тег обрабатывается callback-функцией - в обработку уходит только контент тега(короткие теги не обрабатываются) 
    156156        const TR_TAG_BLOCK_TYPE = 16;    // Тег после которого не нужна автоподстановка доп. <br>  
     157        const TR_TAG_CALLBACK_FULL = 17;    // Тег обрабатывается callback-функцией - в обработку уходит весь тег 
    157158 
    158159        /** 
     
    341342        } 
    342343 
    343 /** 
     344        /** 
    344345         * КОНФИГУРАЦИЯ: Устанавливаем callback-функцию на обработку содержимого тега 
    345346         * @param string $tag тег 
     
    351352        } 
    352353 
     354        /** 
     355         * КОНФИГУРАЦИЯ: Устанавливаем callback-функцию на обработку содержимого тега 
     356         * @param string $tag тег 
     357         * @param mixed $callback функция 
     358         */ 
     359        function cfgSetTagCallbackFull($tag, $callback = null){ 
     360                if(!isset($this->tagsRules[$tag])) throw new Exception("Тег $tag отсутствует в списке разрешённых тегов"); 
     361                $this->tagsRules[$tag][self::TR_TAG_CALLBACK_FULL] = $callback; 
     362        } 
     363         
    353364        /** 
    354365         * Автозамена 
     
    10201031                        if(!$short && $content == '') return ''; 
    10211032                } 
    1022                 // Собираем тег 
    1023                 $text='<'.$tag; 
    1024  
    1025                 // Параметры 
    1026                 foreach($resParams as $param => $value) { 
    1027                         if ($value != '') { 
    1028                                 $text.=' '.$param.'="'.$value.'"'; 
    1029                         } 
    1030                 } 
    10311033                 
    1032                 // Закрытие тега (если короткий то без контента) 
    1033                 $text.= $short && $this->isXHTMLMode ? '/>' : '>'; 
    1034                 if(isset($tagRules[self::TR_TAG_CONTAINER])) $text .= "\r\n"; 
    1035                 if(!$short) $text.= $content.'</'.$tag.'>'; 
    1036                 if($parentTagIsContainer) $text .= "\r\n"; 
    1037                 if($tag == 'br') $text.="\r\n"; 
     1034                // Если тег обрабатывает "полным" колбеком 
     1035                if (isset($tagRules[self::TR_TAG_CALLBACK_FULL])) { 
     1036                        $text = call_user_func($tagRules[self::TR_TAG_CALLBACK_FULL], $tag, $resParams); 
     1037                } else { 
     1038                        // Собираем тег 
     1039                        $text='<'.$tag; 
     1040 
     1041                        // Параметры 
     1042                        foreach($resParams as $param => $value) { 
     1043                                if ($value != '') { 
     1044                                        $text.=' '.$param.'="'.$value.'"'; 
     1045                                } 
     1046                        } 
     1047 
     1048                        // Закрытие тега (если короткий то без контента) 
     1049                        $text.= $short && $this->isXHTMLMode ? '/>' : '>'; 
     1050                        if(isset($tagRules[self::TR_TAG_CONTAINER])) $text .= "\r\n"; 
     1051                        if(!$short) $text.= $content.'</'.$tag.'>'; 
     1052                        if($parentTagIsContainer) $text .= "\r\n"; 
     1053                        if($tag == 'br') $text.="\r\n"; 
     1054                } 
    10381055                return $text; 
    10391056        }