• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

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

Статус
В этой теме нельзя размещать новые ответы.

solt

Постоялец
Регистрация
24 Июл 2008
Сообщения
91
Реакции
2
Наткнулся на отличный хак от REZER Для просмотра ссылки Войди или Зарегистрируйся
Что данный хак делает:
Хак так сказать на половину автора REZER. Спойлер используется с другого хака. Хак нужен для облегчения добавления ссылок в 1 новость, он появляется в ВВ - коды (во всём админцентре, в добавлении новости на сайте + в быстром редактировании статьи) и автоматически делает следующее:
_http://depositfiles.com/789651/
_http://depositfiles.com/789652/
_http://depositfiles.com/789653/
Возможности:
- Распознование: ссылка или нет
- Добавляется в спойлер
- Обводится как цитата
- Подсчитывает парты
- Каждое действие можно отменить отказавшись от вопроса
Как можно сделать, так что бы при нажатии не задавался вопрос (их задается три - Добавлять в спойлер? Обводить как цитата? Подсчитывать парты?) а сразу обводил как цитату - добавлять спойлер, и подсчитывать парты НЕ НУЖНО!
И Самое главное - что бы ссылки шли через leech
Спасибо за внимание :)
 
Примерно вот так, только напишите регулярку на замену ваших ссылок личем!!!

Переделываем функцию 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);
	}

Потом ищем ее во всех приложенных файлах и заменяем этой новой написанной функцией.
 
Не совсем понял покажите пожалуйста на реальном примере вот код из инструкции, его нужно править?
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_e, false);
}
П.С. Сама инструкция:
* Установка
1. Скопируйте все файлы на ваш сервер.
2. Открываем /engine/ajax/js_edit.js (если он закодированный, то взять из папки хака и заменить его) и ищем: function ShowOrHide(d1) { и выше вставляем
PHP:
function SpoilerShowOrHide(d1, d2) {
  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( 1 => '8',
               2 => '10',
               3 => '12',
               4 => '14',
               5 => '18',
               6 => '24',
               7 => '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_e, false);
}
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_e, false);
}
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_e, false);
}
Далее ищем:
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>
* На этом установка закончена.
 
Набросал... должно прокатить:

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 j = 0;
    var enterNum = prompt('Сколько ссылок будете заносить?', numLinks);
	var enterURL = [];

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

	  for (i = 0; i < j; i++)
		{
		if (!(enterURL[i] = prompt("Введите ссылку №"+i, "http://")))
		  {
          FoundErrors += " " + error_no_url;
		  }
		else
		  {
		  links += '[leech=' + enterURL[i] + '] Ссылка № ' + 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
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху