Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Интеграция форумской подсветки на других ресурсах. 
:(
    Опции темы
sergejzr
Дата 20.6.2007, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 35
Всего: 360



Пишу туториал. Так как ключевые слова подсветки ссылаются на наш Вики, было бы неплохо распространять подсветку на различных рессурсах. Туториал находится в состоянии разработки. т.е не готов ещё полностью

---------------------------------
Наша фирменная подсветка работает шустро, весит мало и встраивается легко.  Будем только рады, если вы сможете использовать её на своём сайте! 
Некоторые данные:
Ядро подсветки - core.js Весит около 6 кБ
Скрипт подсветки конкретного языка - около 1кБ
И того при вызове страницы на клиента грузитя 8 кБ. Загрузка происходит только при первом вызове страницы. В дальнейшем сёрфинге все скрипты беруться из локального кэша комьютера и не производят траффика.
Существует возможность на сервере сжимать скрипты, что будет экономить ещё больше траффика. Но об этом в другой раз.

Условия использования подсветки на Вашем сервере:
1) Все скрипты должны быть скачаны на свой сервер. Нельзя просто линковать их с форума.
2) Менять скрипты естественно нельзя.
  2а) в генерируемых кодах создаются ссылки на справочник-ВИКИ на нашем форуме. Их естественно менять тоже нельзя.
  2б) инфу в Вики добавлять естествено можно и очень приветствуется smile
3) Пожалуйста ссылайтесь на Винград при использовании подсветки, хоть мельком где нибудь (например в новостях)

Перейдём к технический части.
Скрипты качаются отсюда:
http://forum.vingrad.ru/html/syntax_script/includer.js
http://forum.vingrad.ru/html/syntax_script/core.js
http://forum.vingrad.ru/html/syntax_script/ИМЯ_ЯЗЫКА.js

Языки: cpp, cppb, html, vb, asm, html, delphi, csharp, perl, php, asp, java,javascript, sql, foxpro, xml, css, python, ocaml
например: http://forum.vingrad.ru/html/syntax_script/cpp.js

Как видим, каждый язык имеет у нас свой алиас. Его и следует использовать в коде, чтобы подгружался правильный скрипт.
скрипты необходимо сохранить в папку: http://МОЙ_СЕРВЕР/html/syntax_script/
Например: http://forum.vingrad.ru/html/syntax_script/

Для каждого куска кода вам необходимо на сервере генерировать идентификатор - набор букв. какой именно - значения не имеет. главное, что бы он начинался с буквы и был однозначным для каждого куска кода. В нашем примере идентификатором будет 123ID, а подсвечиваемым кодом будет код языка С++ (cpp)

Ваш сервер должен генерировать:
Код

<script type='text/javascript' src='/html/syntax_script/includer.js'></script>

<table class='code' cellspacing='0'>
  <tr>
    <td>
      <b>Код</b>
    </td>
  </tr>
  <tr>
    <td class='code'>
       <script language='javascript' type='text/javascript'>includeSyntax('cpp');</script>
       <code id='cpp_123ID'>
          <br />#include&nbsp;&lt;dos.h&gt;
       </code>
    </td>
  </tr>
</table>
<script language='javascript' type='text/javascript'>highlightSyntax('cpp_123ID','cpp');</script>

При этом сам код находится между тэгами <code> в формате HTML.

Вот и всё..

Рассмотрим пример подсветки кода на PHP.
Код

<?php
function highlightCode($codestring,$language)
{
$id=substring('A'.md5(rand().time())0,5); //5 знаков на идентификатор

 return "<table class='code' cellspacing='0'>
  <tr>
    <td>
      <b>Код</b>
    </td>
  </tr>
  <tr>
    <td class='code'>
       <script language='javascript' type='text/javascript'>includeSyntax('$language');</script>
       <code id='$language_$id'>
          $codestring
       </code>
    </td>
  </tr>
</table>
<script language='javascript' type='text/javascript'>highlightSyntax('$language_$id','cpp');</script>";
}

?>
<html>
  <head>
    <title>Тест Подсветки</title>
    <script type='text/javascript' src='/html/syntax_script/includer.js'></script>
  </head>
  <body>
<?php
print highlightCode('include "test.h";','cpp');
?>
</body></html>


Если код у вас не в формате ХТМЛ, то его легко привести туда функцией php:

Код


function toHTML($str)
{
$str= str_replace('<','&gt;',$str);
$str= str_replace('>','&lt;',$str);
$str= str_replace('&','&amp;',$str);
$str= str_replace("\n",'<br />',$str);
return $str;
}



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Wowa
Дата 24.6.2007, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 79
Всего: 290



Вроде хорошо! Просто и ясно!
PM WWW   Вверх
sergejzr
Дата 20.2.2008, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 35
Всего: 360



Ещё было бы неплохо описать интеграцию с различными (форумными например) движками. Если народ будет использовать у себя подсветку, я бы попросил написать в кратце, как её удалось заинтегрировать в конкретный движёк, чтобы другим уже легче было smile


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
sTa1kEr
Дата 20.2.2008, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 8
Всего: 146



Это все здорово, но сразу вижу два "но":

Цитата(sergejzr @  20.6.2007,  02:22 Найти цитируемый пост)
2) Менять скрипты естественно нельзя.

В таком случае для начала неплохо бы поправить все баги подсветки. Иначе получается, что и самому нельзя исправить и отображается криво.

Цитата(sergejzr @  20.6.2007,  02:22 Найти цитируемый пост)
2а) в генерируемых кодах создаются ссылки на справочник-ВИКИ на нашем форуме. Их естественно менять тоже нельзя.

Примерно тоже самое, что и предыдущий пункт, но относится к вики. Сейчас мне по ссылке http://wiki.vingrad.ru/index.php/HTML:cellspacing вылезло
Цитата

Fatal error: Call to undefined method ipbwiki::get_display_name() in /var/www/vhosts/wiki.vingrad.ru/httpdocs/includes/User.php on line 2637

Раньше просто отваливалось по таймауту.

Имхо, пока не будут исправлены эти баги про 2ой пункт говорить просто бессмыслено.

Добавлено @ 20:39
 smile Вики - это очень хорошая вещь, я бы сам с удовольствием бы пользовался ею, но тот факт, что она на моей памяти ни разу не работала, просто убивает...

Это сообщение отредактировал(а) sTa1kEr - 20.2.2008, 20:40
PM MAIL   Вверх
sergejzr
Дата 20.2.2008, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 35
Всего: 360



Спасибо за критику!
Цитата(sTa1kEr @  20.2.2008,  19:35 Найти цитируемый пост)
В таком случае для начала неплохо бы поправить все баги подсветки. Иначе получается, что и самому нельзя исправить и отображается криво.

Писать о багах надо сюда, потом отсюда новую весию качать. Тем более что багов в движке не так и много. Но они будут всегда, как и в любом софте.
К тому же одно дело - движок, а другое- настройка под одтельные языки, которые можно свободно менять (так же как и новые добавлять). Например ключевые слова, цвета итд. меняются без того, чтобы надо было менять движок.

Цитата(sTa1kEr @  20.2.2008,  19:35 Найти цитируемый пост)
Имхо, пока не будут исправлены эти баги про 2ой пункт говорить просто бессмыслено.

Это да.. Но надо как то винград бэклинкать. Н езаставлять же людей в каждый код спецссылку на винград вставлять smile Хотя в этом случае ссылки на Вики действительно не нужны.
КСтати Вики обещают скоро преобразовать..


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
sTa1kEr
Дата 20.2.2008, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 8
Всего: 146



Цитата(sergejzr @  20.2.2008,  22:02 Найти цитируемый пост)
Писать о багах надо сюда, потом отсюда новую весию качать. Тем более что багов в движке не так и много. Но они будут всегда, как и в любом софте.

Целый раздел "Подсветка синтаксиса", не переносить же все сюда?

Цитата(sergejzr @  20.2.2008,  22:02 Найти цитируемый пост)
Например ключевые слова, цвета итд. меняются без того, чтобы надо было менять движок.

А что бы добавить, к примеру в PHP, подсветку heredoc-ов, переменных в двойных кавычках и тех же heredoc-ах, и тп, в движок не надо лезть? Если не надо, тогда в принципе, первое "но" можно вычеркнуть. Хотя пользователям все-равно больше понравится, если все будет сразу подсвечиваться корректно.

Цитата(sergejzr @  20.2.2008,  22:02 Найти цитируемый пост)
Это да.. Но надо как то винград бэклинкать

Да я только за 2ой пункт. А способ так бэклинкать очень хороший и полезный, к тому же я не встречал подобных хороших специализированных вики... Вот только работало бы smile
PM MAIL   Вверх
sergejzr
Дата 21.2.2008, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 35
Всего: 360



Цитата(sTa1kEr @  20.2.2008,  20:20 Найти цитируемый пост)
Целый раздел "Подсветка синтаксиса", не переносить же все сюда?

"Здесь" имеется ввиду Винград.

Цитата(sTa1kEr @  20.2.2008,  20:20 Найти цитируемый пост)
А что бы добавить, к примеру в PHP, подсветку heredoc-ов, переменных в двойных кавычках и тех же heredoc-ах, и тп, в движок не надо лезть? Если не надо, тогда в принципе, первое "но" можно вычеркнуть. Хотя пользователям все-равно больше понравится, если все будет сразу подсвечиваться корректно.

Этого нет и скорее всего не будет, так как некогда пока подсветку дальше разрабатывать, но такое и багом вообще-то не называется. Скорее feature request.
Цитата(sTa1kEr @  20.2.2008,  20:20 Найти цитируемый пост)
Вот только работало бы

Ну... нам обещали smile


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Обсуждение форума | Следующая тема »


 




[ Время генерации скрипта: 0.1143 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.