Как так,
форум крутых PHP/JS/MySQL программеров, а подсветка кода работает не всегда ровно.. Пора исправлять!
Итак, в
другом топике я предложил:
Цитата (kirik @ 8.07.2009 - 12:05) |
Может реализуем подсветку с помощью JS? Пусть юзер сам себе все подсвечивает, если ему нужно. Я вчере разбирал библиотечку SHJS - неплохо подсвечивает. Даже немного дописал ее, чтобы ставила ссылки на php.net, если функция стандартная, и добавил подсветку всех предустановленных контстант. Седня еще посижу, о результатах сообщу.
Кстати плюсы в JS подсветке: (из озвученных выше) 1. В бд хранится только код 2. Юзеру отдается чистый код, вес которого минимален 3. JS, который подсвечивает, будет кэшироваться у юзера. 4. Также те юзеры (читай боты) у которыхх не работает яваскрип не будут есть траффик |
У кого какие мысли?
Цитата (twin @ 8.07.2009 - 12:07) |
kirik А где взглянуть можно? |
Тут можно посмотреть подсветку
php, если в коде не только
php код. (Да, в JS сходные с PHP функции ссылаются все равно на
php.net, но думаю что можно решить).
Я думаю, может получится сделать одну универсальную подсветку на все (без разделения
php-html-
sql)..
Я полностью за, а то получается непорядок. Это можно сравнить как у профессионала каменьшика свой же дом шотался бы.
stepanДа это как всегда получается: сапожник без сапог
highlight_string всё таки как то привычнее...
Класс от геши мож всётаки прикрутить?
Вот неплохо ведь смотрится. И номера строк и ссылки так же генерит.
Тут вопрос в устройстве
форума, но можно ведь что то придумать.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Цитата (twin @ 8.07.2009 - 13:03) |
И номера строк и ссылки так же генерит. |
Номера строк, эт не проблема.. Кстати вот
этот подсвечивальщик я вчера тоже смотрел, он и номера строк генерит и может отдавать plain текст вместо кода, и есть кнопка копирования.
Цитата (twin @ 8.07.2009 - 13:03) |
Класс от геши мож всётаки прикрутить? |
Можно и его. Сейчас бы голоса собрать кто за JS, кто за PHP. Разница лишь в том, кто будет код раскрашивать сервер или юзер.
Ща голосовалку сделаю.
Мне кажеться лучше всё таки использовать php т.к вот в голосавании два примера который на js там 20-30 сток кода а грузил довольнотаки долго... хотя такойже код на php моментом загрузился.
Кстати тот же геши он очень удобен и очень легок в настройках.
Цитата (Joker @ 8.07.2009 - 13:57) |
на js там 20-30 сток кода а грузил довольнотаки долго... |
Грузил сам код, или именно раскрашивал? Просто сервер, на котором находится сайт в штатах, и работает не всегда хорошо.
Если js, объясните мне, как он отличит какой кнопкой задали код...
На статичных заранее просчитанных страничках он хорошо смотрится, но в моих экспериментах мне легко удавалось ввести такой код, который ломал скрипт, и давал незакрытые теги, курочащие всю страницу вслед за блоком кода.
Если пхп, давайте определимся, красить на входе или на выходе.
Объем хранимой информации нас не напрягает, трафик тоже. Логика движка предполагает краску на входе. И все равно, краска после функции:
_____________
Бесплатному сыру в дырки не заглядывают...
Кстати, как вам вставленный код?
Может заморочимся отладить у нас такой механизм вставки?
_____________
Бесплатному сыру в дырки не заглядывают...
Цитата (FatCat @ 8.07.2009 - 14:54) |
Если js, объясните мне, как он отличит какой кнопкой задали код... |
В оригинале код вставляется так: <pre class="sh_php">код</pre>, где sh_php - "язык" для раскраски. Тоесть у нас есть тэги [ php], [ sql], [ html] которые при отдаче юзеру можно менять на <pre class="sh_php">, <pre class="sh_sql">, <pre class="sh_html"> соответственно. Тогда JS будет разбирать код, который только в этих блоках.
Цитата (FatCat @ 8.07.2009 - 14:54) |
в моих экспериментах мне легко удавалось ввести такой код, который ломал скрипт, и давал незакрытые теги, курочащие всю страницу вслед за блоком кода. |
Просто для тестов, можешь выложить примеры кривого кода?
Цитата (FatCat @ 8.07.2009 - 14:54) |
Если пхп, давайте определимся, красить на входе или на выходе. |
Раскраска на выходе будет лишней нагрузкой, я думаю что на входе. Тем более ты говоришь что движок это предусматривает.
Цитата (FatCat @ 8.07.2009 - 15:02) |
Кстати, как вам вставленный код? Может заморочимся отладить у нас такой механизм вставки? |
На самом деле вполне не плохо. Но это не решает вопроса раскраски
Цитата (kirik @ 9.07.2009 - 03:02) |
Просто для тестов, можешь выложить примеры кривого кода? |
А чтоб я помнил...
Я тупо по инструкции подключил гешу и начал для пробы вставлять большие куски кода из нашего движка; пару раз получил выход жирности и цвета за пределы блока кода.
Цитата (kirik @ 9.07.2009 - 03:02) |
На самом деле вполне не плохо. Но это не решает вопроса раскраски |
Там раскрашенный.
Код сбрасывается в файл с расширением .
phps, и затем ифреймится на страницу.
Просто и элегантно. Но есть проблемы:
- Имя файла должно быть привязано к айдишнику поста, чтобы им можно было управлять: удалять при удалении поста, изменять при редактировании. Когда один блок кода на один пост - всё просто. Но если в одном посте несколько блоков кода - в этом случае нужно уже не имя, а система имен.
- Пока пост еще не отправлен, у него нет айдишника. Значит нет и имени файла. А функция предпросмотра сообщения перед отправкой откуда будет брать? Значит надо создавать временные файлы, и удалять их?
Не хотелось бы замусоривать файловую систему хостинга кучей забытых файлов...
_____________
Бесплатному сыру в дырки не заглядывают...
Цитата (kirik @ 9.07.2009 - 03:02) |
В оригинале код вставляется так: <pre class="sh_php">код</pre> |
Звучит привлекательно.
_____________
Бесплатному сыру в дырки не заглядывают...
Цитата (kirik @ 9.07.2009 - 01:07) |
Грузил сам код |
Причом оч долго грузиться....
Блин, вчера написал сообщение а оно почему-то не добавилось..
Цитата (Joker @ 8.07.2009 - 13:57) |
на js там 20-30 сток кода а грузил довольнотаки долго |
Вчера в Опере проверил - действительно как-то уж очень долго процессится.. ИЕ/ФФ отдают моментально, а Опера думает секунд 5. Я беру свои слова назад - делаем на PHP.
Вариант с
.phps выглядит немного сложным в реализации.. Тем более что подсветку html/
sql и парсинг функций все равно придется прикручивать.
Вариант с Геши более удобный, но как ты говоришь,
FatCat, некоторый код он все-таки бажил.
Есть еще варинт - написать самим. Мне этот вариант вполне интересен, будет чисто
phpforum_sh
С подсветкой
php/
sql/js/html/htaccess.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.