Помощь Хак ссылки для DLE 8.0 (Хак_Parts) - переделать

Тема в разделе "DLE", создана пользователем solt, 8 ноя 2009.

Информация :
Актуальная версия DataLife Engine 11.2
( Final Release v.11.2 | Скачать DataLife Engine | Скачать 11.2 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.1 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. solt

    solt Постоялец

    Регистр.:
    24 июл 2008
    Сообщения:
    91
    Симпатии:
    2
    Наткнулся на отличный хак от REZER источник
    Что данный хак делает:
    Как можно сделать, так что бы при нажатии не задавался вопрос (их задается три - Добавлять в спойлер? Обводить как цитата? Подсчитывать парты?) а сразу обводил как цитату - добавлять спойлер, и подсчитывать парты НЕ НУЖНО!
    И Самое главное - что бы ссылки шли через leech
    Спасибо за внимание :)
     
  2. t0wer

    t0wer BlackHerald

    Регистр.:
    24 июн 2008
    Сообщения:
    733
    Симпатии:
    422
    Примерно вот так, только напишите регулярку на замену ваших ссылок личем!!!

    Переделываем функцию tag_links():
    HTML:
    
    function tag_links()
    	{
    	var thesel ='';
    
    	if ( (ua_vers >= 4) && is_ie && is_win) {
    		thesel = document.selection.createRange().text;
    	}
    	else thesel ='';
    
        if (!thesel) {
            thesel ='';
        }
    
    // тут пишем код, который будет искать все ссылки в тексте thesel и заменяем их на [leech=http://]My Webpage[/leech]
    // переменная thesel - это выделенный текст в котором есть или нет ссылок!
    
    	if (paste_quote) {paste_quote_s = "[QUOTE]"; paste_quote_e = "[/QUOTE]";}
    	else {paste_quote_s = ""; paste_quote_e = "";}
    	
    	doInsert(paste_quote_s + thesel + paste_quote_e, false);
    	}
    
    Потом ищем ее во всех приложенных файлах и заменяем этой новой написанной функцией.
     
  3. solt

    solt Постоялец

    Регистр.:
    24 июл 2008
    Сообщения:
    91
    Симпатии:
    2
    Не совсем понял покажите пожалуйста на реальном примере вот код из инструкции, его нужно править?
    PHP:
    function tag_links()
    {
       var 
    paste_parts confirm("Подсчитывать парты?");
              var 
    paste_spoiler confirm("Обрамить спойлером?");
              var 
    paste_quote confirm("Вставить цитатой?");
    if (
    paste_parts) {
    paste_parts " PARTS";
    } else {
    paste_parts "";
    } if (
    paste_spoiler) {
    paste_spoiler_s "[spoiler]";
    paste_spoiler_e "[/spoiler]";
    } else {
    paste_spoiler_s "";
    paste_spoiler_e "";
    } if (
    paste_quote) {
    paste_quote_s "[QUOTE]";
    paste_quote_e "[/QUOTE]";
    } else {
    paste_quote_s "";
    paste_quote_e "";
    doInsert(paste_spoiler_s paste_quote_s "[LINKS" paste_parts "]""[/LINKS]" paste_quote_e paste_spoiler_efalse);
    }  
    П.С. Сама инструкция:
    * Установка
    1. Скопируйте все файлы на ваш сервер.
    2. Открываем /engine/ajax/js_edit.js (если он закодированный, то взять из папки хака и заменить его) и ищем: function ShowOrHide(d1) { и выше вставляем
    PHP:
    function SpoilerShowOrHide(d1d2) {
      if (
    d1 != ''){
          
    DoDiv(d1);
      }
      if (
    d2 != ''){
          
    DoDiv(d2);
      }
    };
    3. Открываем /engine/classes/parse.class.php и ищем:
    PHP:
    $source preg_replace"#\[s\](.+?)\[/s\]#is""<s>\\1</s>"$source );
    Ниже вставляем
    PHP:
    $source preg_replace"#\[spoiler\](.+?)\[/spoiler\]#ie""\$this->build_spoiler('\\1')"$source );
    $source preg_replace"#\[spoiler=(.+?)\](.+?)\[/spoiler\]#ie""\$this->build_spoiler('\\2', '\\1')"$source );
    Далее ищем:
    PHP:
    $txt preg_replace"#<u>(.+?)</u>#is"  "[u]\\1[/u]"  $txt );
    Вставляем ниже:
    PHP:
    $txt preg_replace"#<!--SpoilerBegin-->(.+?)<!--SpBodyBegin-->#"'[spoiler]'       $txt );
    $txt preg_replace"#<!--SpoilerWTBegin-->(.+?)<!--SpTitleBegin-->(.+?)<!--SpTitleEnd-->(.+?)<!--SpBodyBegin-->#""[spoiler=\\2]"     $txt );
    $txt preg_replace"#<!--SpBodyEnd-->(.+?)<!--SpoilerEnd-->#"'[/spoiler]'      $txt );
    ищем:
    PHP:
    var $font_sizes = array( => '8',
                   
    => '10',
                   
    => '12',
                   
    => '14',
                   
    => '18',
                   
    => '24',
                   
    => '36' );
    Вставляем ниже:
    PHP:
    function build_links($source "") { 
            if (!
    $source) { 
                return 
    false;
            } elseif (
    preg_match_all("#\[LINKS(\sPARTS)*\](.+?)\[\/LINKS\]#si"$source$old_links)) {
                
    $parts $old_links[1];// print_r($parts);
                
    $old_links $old_links[0];
                for (
    $l 0$l count($old_links); $l++) { 
                    if (
    preg_match_all("/(http:\/\/|edk2:\/\/|ftp:\/\/|https:\/\/|news:\/\/)+([^\s\n><\'\"\*\[\]]+)/si"$old_links[$l], $new_links)) { 
                        
    $parts[$l] = ((strtoupper(trim($parts[$l])) == 'PARTS') ? true false);
                        
    $new_links $new_links[0];
                        
    $new_link ""
                        if (
    count($new_links) > 1) {
                            for (
    $c 0$c count($new_links); $c++) { 
                                if (
    $parts[$l]) {
                                    
    $new_link .= "[URL=".$new_links[$c]."]Скачать с [b]".ucfirst(strtolower(trim(clean_url($new_links[$c]))))."[/b] part#".($c+1)."[/URL]\r\n";
                                } else {
                                    
    $new_link .= "[URL=".$new_links[$c]."]Скачать с [b]".ucfirst(strtolower(trim(clean_url($new_links[$c]))))."[/b][/URL]\r\n";
                                }
                            }
                        } else { 
                            
    $new_link .= "[URL=".$new_links[0]."]Скачать с [b]".ucfirst(strtolower(trim(clean_url($new_links[0]))))."[/b][/URL]\r\n";
                        } 
    // А приписывать к одной ссылке 1 - парт не прилично=)
                        
    $source str_replace($old_links[$l], trim($new_link), $source); 
                    }
                }
            }
            return 
    $source
        }
    Далее ищем:
    PHP:
    $source preg_replace($find$replace$source);
    Выше вставляем:
    PHP:
    $source $this->build_links($source);
    4. Открываем /engine/modules/bbcode.php и ищем (первый)
    PHP:
    <div class="editor_button"  onclick="tag_url()"><img title="$lang[bb_t_url]src="{THEME}/bbcodes/link.gif" width="23" height="25" border="0"></div>   
    Ниже вставляем:
    PHP:
    <div class="editor_button"  onclick="tag_links()"><img title="Вставка ссылок с обрамлением спойлера и цитаты" src="{THEME}/bbcodes/parts.gif" width="23" height="25" border="0"></div>
    Далее ищем:
    PHP:
    var selField  "{$startform}";
    var 
    fombj    = {$addform};
    Ниже вставляем:
    PHP:
    function tag_links()
    {
       var 
    paste_parts confirm("Подсчитывать парты?");
              var 
    paste_spoiler confirm("Обрамить спойлером?");
              var 
    paste_quote confirm("Вставить цитатой?");
    if (
    paste_parts) {
    paste_parts " PARTS";
    } else {
    paste_parts "";
    } if (
    paste_spoiler) {
    paste_spoiler_s "[spoiler]";
    paste_spoiler_e "[/spoiler]";
    } else {
    paste_spoiler_s "";
    paste_spoiler_e "";
    } if (
    paste_quote) {
    paste_quote_s "[QUOTE]";
    paste_quote_e "[/QUOTE]";
    } else {
    paste_quote_s "";
    paste_quote_e "";
    doInsert(paste_spoiler_s paste_quote_s "[LINKS" paste_parts "]""[/LINKS]" paste_quote_e paste_spoiler_efalse);
    }
    5. Открываем /engine/ajax/bbcode.php и ищем:
    <
    div class="editor_button"  onclick="tag_url()"><img title="$lang[bb_t_url]src="{THEME}/bbcodes/images/link.gif" width="23" height="25" border="0"></div>   
    Ниже вставляем:
    PHP:
    <div class="editor_button" onclick="tag_links()"><img title="Вставка ссылок с обрамлением спойлера и цитаты" src="{THEME}/bbcodes/images/parts.gif" width="23" height="25" border="0"></div>  
    Далее ищем:
    PHP:
    var email_title          "$lang[bb_email_title]";
    var 
    text_pages          "$lang[bb_bb_page]";
    var 
    image_align          "{$config['image_align']}";
    Ниже вставляем:
    PHP:
    function tag_links()
    {
       var 
    paste_parts confirm("Подсчитывать парты?");
              var 
    paste_spoiler confirm("Обрамить спойлером?");
              var 
    paste_quote confirm("Вставить цитатой?");
    if (
    paste_parts) {
    paste_parts " PARTS";
    } else {
    paste_parts "";
    } if (
    paste_spoiler) {
    paste_spoiler_s "[spoiler]";
    paste_spoiler_e "[/spoiler]";
    } else {
    paste_spoiler_s "";
    paste_spoiler_e "";
    } if (
    paste_quote) {
    paste_quote_s "[QUOTE]";
    paste_quote_e "[/QUOTE]";
    } else {
    paste_quote_s "";
    paste_quote_e "";
    doInsert(paste_spoiler_s paste_quote_s "[LINKS" paste_parts "]""[/LINKS]" paste_quote_e paste_spoiler_efalse);
    }
    7. Открываем /language/russian/website.lng и ищем:
    PHP:
    'spoiler_title'        =>    "Показать / Скрыть текст",
    Заменим :
    PHP:
    'spoiler_title'        =>    "Скачать / Download",
    8. Открываем /language/russian/adminpanel.lng
    PHP:
    'spoiler_title'        =>    "Показать / Скрыть текст",
    Вставляем ниже:
    PHP:
    'spoiler_title'        =>    "Скачать / Download",
    9. Открываем engine/inc/include/inserttag.php и ищем:
    PHP:
    function tag_url()
    Вставляем выше:
    PHP:
    function tag_links()
    {
       var 
    paste_parts confirm("Подсчитывать парты?");
              var 
    paste_spoiler confirm("Обрамить спойлером?");
              var 
    paste_quote confirm("Вставить цитатой?");
    if (
    paste_parts) {
    paste_parts " PARTS";
    } else {
    paste_parts "";
    } if (
    paste_spoiler) {
    paste_spoiler_s "[spoiler]";
    paste_spoiler_e "[/spoiler]";
    } else {
    paste_spoiler_s "";
    paste_spoiler_e "";
    } if (
    paste_quote) {
    paste_quote_s "[QUOTE]";
    paste_quote_e "[/QUOTE]";
    } else {
    paste_quote_s "";
    paste_quote_e "";
    doInsert(paste_spoiler_s paste_quote_s "[LINKS" paste_parts "]""[/LINKS]" paste_quote_e paste_spoiler_efalse);
    }
    Далее ищем:
    PHP:
    <div class="editor_button"  onclick="tag_url()"><img title="$lang[bb_t_url]src="engine/skins/bbcodes/images/link.gif" width="23" height="25" border="0"></div>
    Вставляем ниже:
    PHP:
    <div class="editor_button"  onclick="tag_links()"><img title="Вставка ссылок с обрамлением спойлера и цитаты" src="engine/skins/bbcodes/images/parts.gif" width="23" height="25" border="0"></div>
    * На этом установка закончена.
     
  4. t0wer

    t0wer BlackHerald

    Регистр.:
    24 июн 2008
    Сообщения:
    733
    Симпатии:
    422
    Набросал... должно прокатить:

    1. Открываем /engine/modules/bbcode.php

    1.1. Ищем строку:
    PHP:
    <div class="editor_button"  onclick="tag_url()"><img title="$lang[bb_t_url]src="{THEME}/bbcodes/link.gif" width="23" height="25" border="0" alt="" /></div>
    1.2. После нее вставляем
    PHP:
    <div class="editor_button"  onclick="tag_links()"><img title="Закинуть личные ссылки в цитату" src="{THEME}/bbcodes/taglinks.gif" width="23" height="25" border="0" alt="" /></div>
    1.3. Ищем строку:
    PHP:
    $script_code = <<<HTML
    1.4. После нее вставляем
    PHP:
    function tag_links()
      {
        var 
    FoundErrors '';
        var 
    links '';
        var 
    numLinks 1;
        var 
    0;
        var 
    enterNum prompt('Сколько ссылок будете заносить?'numLinks);
        var 
    enterURL = [];

        if (!
    enterNum)
          {
          
    FoundErrors += " " error_no_url;
          }
        else
          {
          
    Number(enterNum);

          for (
    0ji++)
            {
            if (!(
    enterURL[i] = prompt("Введите ссылку №"+i"http://")))
              {
              
    FoundErrors += " " error_no_url;
              }
            else
              {
              
    links += '[leech=' enterURL[i] + '] Ссылка № ' ' [/leech]<br />';
              
    //alert(links);
              
    }
            }

          
    doInsert("[QUOTE]" links "[/QUOTE]"false);
          
    // alert("[QUOTE]" + links + "[/QUOTE]");
          
    }
        if (
    FoundErrors)
          {
          
    alert("Error!"+FoundErrors);
          return;
          }
        }
    2. Открываем engine/inc/include/inserttag.php

    2.1. Ищем строки:
    PHP:
    -->
    </SCRIPT>
    <div style="width:98%; height:50px; border:1px solid #BBB; background-image:url('engine/skins/bbcodes/images/bg.gif');">
    2.2. Перед ними вставляем:
    Код:
    функцию в п.1.4.
    2.3. Ищем строку:
    PHP:
    <div class="editor_button"  onclick="tag_url()"><img title="$lang[bb_t_url]src="engine/skins/bbcodes/images/link.gif" width="23" height="25" border="0"></div>
    2.4. После нее вставляем
    PHP:
    <div class="editor_button"  onclick="tag_links()"><img title="Закинуть личные ссылки в цитату" src="engine/skins/bbcodes/images/taglinks.gif" width="23" height="25" border="0"></div>
    3. Закидываем графический файл taglinks.gif на тэг в соответствующие папки
    Код:
    engine/skins/bbcodes/images/
    и
    Код:
    {THEME}/bbcodes/
     
    solt нравится это.
Статус темы:
Закрыта.