PDA

Показать полную графическую версию : Как прикрутить тег [autoit] к форуму?


Belfigor
24-08-2009, 11:33
Никто не подскажет что надо прикрутить к форуму, чтобы можно постить код без Au3Post а просто заключив его в теги ?

Medic84
24-08-2009, 13:50
Это не сюда :) Это в раздел Javascript.

Creat0R
24-08-2009, 16:20
Вопрос интересны, я бы и сам не против был узнать на него ответ.
По идее это можно спросить у Jon'а, как он это сделал на оф. форуме.

P.S
А заголовок темы неудачный.

Belfigor
24-08-2009, 18:29
А кто имеет контакт с Джоном? Я даже вопрос то так на английском сформулировать не смогу чтобы он меня понял :(
Просто если мне не изменяет память когда я начинал пользоваться AutoIt там то ли на главной странице то ли на самом форуме светилось нечто типа "Для веб разработчиков" и там вроде бы вобъяснялось как это сделать и был вроде какой-то файлик, или же кусок кода для форумов.

DedAlex
25-08-2009, 10:19
Belfigor, посмотрите GeSHi (http://qbnz.com/highlighter/)

Belfigor
25-08-2009, 23:55
Огромное спасибо :)

Creat0R
26-08-2009, 00:12
посмотрите GeSHi »
Интересно. Вот теперь бы ещё узнать как это прикручивать http://files.myopera.com/Creat0R/Opera_AC/Icons/whistle.gif ...

Creat0R
27-08-2009, 21:41
Оказывается прикрутиь GeSHi проще простого...

Метод для SMF (2.0):


Качаем архив geshi (GeSHi-1.0.8.4.zip (http://sourceforge.net/projects/geshi/files/geshi/GeSHi%201.0.8.4/GeSHi-1.0.8.4.zip/download)).

Распаковываем его куда нибудь.

И заливаем следующие файлы/папки, желательно в подпапку, не в корень:

\My_Tags\....
geshi [Папка]
geshi.php

Далее в файл «Sources/Subs.php» добавляем перед (ну или просто в начало файла)

// Update some basic statistics...

инклуд «geshi.php»:

include_once('тут\путь\до\geshi.php');

И добавляем тег в массивы тегов чуть ниже (в том же файле - ищем "$codes = array(...."):

array(
'tag' => 'autoit',
'type' => 'unparsed_content',
'content' => '<div class="codeheader">AutoIt: <a href="javascript:void(0);" onclick="return smfSelectText(this);" class="codeoperation">' . $txt['code_select'] . '</a></div><blockquote style="background-color: #ffffff;font-size: 11px;">$1</blockquote>',
'validate' => isset($disabled['autoit']) ? null : create_function('&$tag, &$data, $disabled', '
$lang = \'autoit\';
$path = \'\';

$data = str_replace("&lt;", "<", $data);
$data = str_replace("&gt;", ">", $data);
$data = str_replace("&quot;", "\"", $data);
$data = str_replace("&nbsp;", " ", $data);
$data = str_replace("<br />", "\r\n", $data);

//$code = geshi_highlight($data, $lang, $path, true);
//$data = $code;

$geshi = new GeSHi($data, $lang);
$data = $geshi->parse_code();

'),
'block_level' => true,
),

Всё, теперь при использовании тега [autoit] код внутри будет подсвечиваться синтаксисом AutoIt'а. Хотя следует заметить, что autoit.php (файл отвечающий за подсветку), немного(?) устарел, и замечаются некоторы глюки... если есть умельцы и знатоки в php/geshi, прошу подсказать как исправить некоторые из этих глюков, если что, напишу конкретно какие.


P.S
Теперь таким же способом можно подсвечивать синтаксис не только autoit тега, но и почти любого языка (список поддерживаемых языков есть на главной страничке GeSHi (http://qbnz.com/highlighter/)) - достаточно только поменять в коде выше (в переменной $lang) \'autoit\' на имя нужного языка.

P.P.S
Как всё это прикручивается я узнал прочитав документацию к GeSHi (http://qbnz.com/highlighter/geshi-doc.html), что ещё раз свидетельствует о том, что подобные документации пишутся не зря, и не нужно лениться читать их, иногда оно даётся не просто, но без этого обычно никак.

DedAlex
27-08-2009, 23:11
прошу подсказать как исправить некоторые из этих глюков, если что, напишу конкретно какие. »
Напишите, может смогу помочь.

Creat0R
28-08-2009, 00:34
Напишите, может смогу помочь »

Проблема первая - в AutoIt как известно есть #include, после которого идёт имя файл либо в кавычках (как обычная строка), либо в треугольных скобках, вот так:

#include <GUIConstants.au3>

Так вот в последнем случае, скобки подсвечиваются отдельно, а должно быть как обычная строка:

#include <GUIConstants.au3>

Проблема вторая - Цифры подсвечиваются не всегда, например вот тут:

$sVar = 12345

Sleep(10)

Из за вызова функции (даже если перед ней есть переменная), 12345 не подсвечивается как должно быть (как цифры в Sleep к примеру).

Если нужна среда тестирования, могу дать в ПМ логин и пароль тестового юзера у меня на форуме.

Creat0R
07-09-2009, 01:15
Ещё баги:


Макросы не всегда подсвечиваются: Поправил.

ConsoleWrite(@HOUR & ":" &@MIN & ":" & @SEC)
ConsoleWrite(@HOUR& ":" & @MIN& ":" & @SEC)

Строки в полукруглых скобках:

Send("{!}")
Должно быть так:
Send("{!}")

Комментарии неправильно подсвечиваются если нет парных обозначении в том же регистре букв: Поправил.

#cs Тут комент должен начинаться
#CE А тут он должен заканчиваться

Но по необъяснимому стечению обстоятельств этого не происходит
А те что совпадают в регистре букв, тоже имеют багу:

#cs тут
#ce все работает нормально

За исключением того момента что вся строка #ce должна быть зеленой

Creat0R
19-10-2009, 16:15
DedAlex, Вы ещё заинтересованы помочь? http://files.myopera.com/Creat0R/Opera_AC/Icons/Kolobki/blush2.gif




© OSzone.net 2001-2012