Предоставляем срочную помощь по DLE, пишем эксклюзивные модули для вашего проекта, парсеры грабберы, исправляем базу данных, удаляем вирусы редиректы, обновляем скрипты, помощь с переездом на другой хостинг, перенос домена, большой опыт работы с высоконагруженными проектами, защита ddos атаки, ботов и спама, оптимизация модулей и серверов дле, более 10 лет работы, тысячи модификаций и доработок, короткие сроки, дорого, качественно. telegram: @histoo

[Решено] BB-код [*] ломает дизайн

  1. Онлайн

    Grey

    Администраторы

    Сообщений: 2130

    При написании сообщения указав символ [*] без тегов [ol=1][/ol] Ваш дизайн форума может поехать по ширине, что сделает невозможным удаление/редактирование сообщений. Если мы используем стандартный шаблон.

    Всплывает один интересный баг верстки если используется элемент списка без открытия списка:
    [*] - если в теле сообщения будет один этот символ, то стандартная верстка форума очень сильно плывет.


    Этот баг (?) парсера бб кодов DLE. Исправляется так:

    Исправление от Andrej.in.ua
    Вносим изменения в файл /engine/bullet_energy/classes/filter.class.php

    Находим:
    
    $source = preg_replace("#\[ol=([^\]]+)\]\[\*\]#ies", "\$this->build_list('\\1')", $source);
    $source = preg_replace("#\[ol=([^\]]+)\](.+?)\[\*\]#ies", "\$this->build_list('\\1')", $source);
    $source = str_replace("[list][*]", "<!--dle_list--><ul><li>", $source);
    $source = preg_replace("#\[list\](.+?)\[\*\]#is", "<!--dle_list--><ul><li>", $source);
    $source = str_replace("[*]", "</li><!--dle_li--><li>", $source);
    $source = str_replace("[/list]", "</li></ul><!--dle_list_end-->", $source);
    $source = str_replace("[/ol]", "</li></ol><!--dle_list_end-->", $source);
    


    Заменить на:
    
    $source = preg_replace("#\[ol=([^\]]+)\][^\[]*((?:\[\*\].+)+)\[\/ol\]#ies", "\$this->getOrderedList('\\1', '\\2')", $source);
    $source = preg_replace("#\[list\][^\[]*((?:\[\*\].+)+)\[\/list\]#ies", "\$this->getUnorderedList('\\1')", $source);
    


    Найти:
    
    function build_list($type)
      {
    ...
      }
    


    Заменить на:
    
    //
      function getUnorderedList( $matches ) 
      { 
            $matches = explode( '[*]', substr( trim( $matches ), 3 ) );     
            $elements = $matches[0];
            for ( $i = 1; $i < count($matches); $i++ ) { 
                $elements = $elements.'</li><!--dle_li--><li>'.trim($matches[$i]).''; 
            } 
            return '<!--dle_list--><ul><li>'.$elements.'</li></ul><!--dle_list_end-->'; 
          
      }
        
      function getOrderedList( $type, $matches ) 
      {
            $matches = explode( '[*]', substr( trim( $matches ), 3 ) );    
            $elements = $matches[0];
            for ( $i = 1; $i < count($matches); $i++ ) { 
                $elements = $elements.'</li><!--dle_li--><li>'.trim($matches[$i]).''; 
            }
      
              $allowed_types = array ("A", "a", "I", "i", "1");
        
            if (in_array($type, $allowed_types))
                return "<!--dle_ol_{$type}--><ol type=\"{$type}\"><li><!--/dle_ol-->".$elements."</li></ol><!--dle_list_end-->";
            else
                return "<!--dle_ol_1--><ol type=\"1\"><li><!--/dle_ol-->".$elements."</li></ol><!--dle_list_end-->";
      }
    //
    


    Тоже-самое можно применить к парсеру DLE - /engine/classes/parse.class.php что бы на сайте тоже работало правильно.

    Так же хочу заметить, что:
    [ol=1]
    [*]Это нумерованный список
    [/ol]


    Трюк: для того чтобы нумерованный список был римскими цифрами используем комбинацию:
    [ol=I]
    [*]Это нумерованный список
    [/ol]

    Так-же доступны комбинации: A, a, I, i, 1

    [list]
    [*]а это ненумерованный
    [/list]



    В шаблоне нежелательно использовать ol, особенно когда в стили вписывается:
    #bullet_energy ol{list-style-type:none}


    Из-за этого в большинстве браузеров у нас возникли проблемы с нумерованными списками.

    Вложением добавляю уже модифицированный filter.class.php и копию данного сообщения.

    Вложения:

    1. list-fix.txt

      Размер файла:
      3,28 Kb
      Скачиваний:
      731
    2. filter.class.rar

      Размер файла:
      13,09 Kb
      Скачиваний:
      349

    сделаю любой модуль dle на заказ, если вам нужны услуги по dle
    скaйп rdn-team.com
    телегрaм @histoo

    15 августа 2013 - 17:21 / #1
  2. Онлайн

    Grey

    Администраторы

    Сообщений: 2130

    Небольшое обновление, найти:
    .$elements.

    Заменить на:
    .stripslashes(quotemeta($elements)).

    сделаю любой модуль dle на заказ, если вам нужны услуги по dle
    скaйп rdn-team.com
    телегрaм @histoo

    6 сентября 2013 - 06:57 / #2
  3. Оффлайн

    Johan

    Посетители

    Сообщений: 89

    Цитата: Grey
    Заменить на:

    .stripslashes(quotemeta($elements)).

    Это во втором пункте поменять все .$elements. на .stripslashes(quotemeta($elements)). ?
    6 сентября 2013 - 09:55 / #3
  4. Онлайн

    Grey

    Администраторы

    Сообщений: 2130

    Да, во втором.

    сделаю любой модуль dle на заказ, если вам нужны услуги по dle
    скaйп rdn-team.com
    телегрaм @histoo

    6 сентября 2013 - 13:52 / #4
Модераторы форума: greyPowered by Bullet Energy Forum