News → Подсветка кода

Благодаря такой штуке, как SyntaxHighlighter, добавил себе в блог подсветку кода. Работает она только на странице записи, в ленте пока не организовывал её.

Собственно:

1
2
3
4
5
<?php

if ($ok) {
    echo 'Превед, Медвед';
}

Здесь значительно красивее :) Ниже помещу функцию, которая здесь посты сохраняет.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php

public function createNewTopic($formData)
{
    $auth = Zend_Auth::getInstance();
    $userId = $auth->getIdentity()->user_id;
    $text = $this->htmlFilter($formData['text_post']);
    $data = array('category_id'  => $formData['category_id'],
                  'hide'         => $formData['hide'],
                  'title'        => $formData['title'],
                  'text_post'    => $text,
                  'user_id'      => $userId,
                  'time_created' => date('Y-m-d H:i:s'),
                  'syntax'       => $formData['syntax']);
    $topicId = $this->insert($data);
    if (!empty($formData['tags'])) {
        $relation = new DbTable_RelationTopicTag();
        $relation->addRelation($formData['tags'], $topicId);
    }
    $category = new DbTable_Category;
    $category->setCount($formData['category_id'], 1);

    return $topicId;
}

Комментарии

avatar
aterentiev
avatar
интересненько, интересненько :)
ответить
avatar
morontt
avatar
Мне и самому интересно :)
ответить
avatar
aterentiev
avatar
ага, значит древовидных комментов нету...
ответить
avatar
morontt
avatar
Нету, но это не проблема. Здесь уже реализована одна древовидная структура - навигация по категориям. С бесконечной степенью вложенности :) Требуется только передать в неё массив элементов с информацией о родительских элементах для каждого, если они есть. Так что приспособить её для каментов будет не сложно. Но для начала я прикручу к каментам ajax, не знаю только когда, затягивать не планирую.
ответить
avatar
morontt
avatar
Теперь есть. И древовидные, и уведомления :) Не прошло и двух лет.
ответить
avatar
morontt
avatar
Ещё одна попытка :)
ответить
avatar
aterentiev
avatar
A, не, одно было. Я думал, ты что-то про мое скалирование писал :)
Но только одно уведомление, и да, в спаме :)
ответить
avatar
morontt
avatar
Про это скалирование - запись была неделю неделю назад, вот я и интересовался, актуален ли будет мой ответ или нет? Стоит ли ковыряться?
ответить
avatar
aterentiev
avatar
Скажем так, я еще не нашел решения для IE, в других движках по слухам оно работает... Если навскидку найдется - буду признателен, если нет - буду искать альтернативу и пока жить без сетки, не смертельно.
ответить
avatar
morontt
avatar
А какова задача в целом? Зачем вообще кому-то может понадобиться масштабировать страницу браузером и почему сетка рисуется именно посредством фона через CSS? И каков смысл этой сетки? Может быть проще найти обходной путь, а не пробивать в лоб?

Одни вопросы, короче говоря...
ответить
avatar
aterentiev
avatar
Ну по очереди:
1. "Зачем вообще кому-то может понадобиться масштабировать страницу браузером" - я не могу это запретить. Сам работаю в IE в 125%, т.к. матрица на буке мелкая.
2. "почему сетка рисуется именно посредством фона через CSS" - Можно сетку и по-другому нарисовать, мне все равно. Главное, чтобы показывало шаг и отрабатывало скалирование
3. "каков смысл этой сетки?" - Я потом на этом элементе буду расставлять другие (должно получаться что-то типа блоксхемы), сетка должна показывать опорные точки, куда можно бросить новый элемент
Как доделаю что-то работоспособное - покажу (под NDA :))
ответить
avatar
morontt
avatar
А если сразу рисовать на пиксельном холсте? Через canvas в HTML5. Элементы, которые туда добавлять будешь, и сетку, собственно. Тогда они будут параллельно масштабироваться, т.е. синхронно.
ответить
avatar
aterentiev
avatar
там еще меньше поддержки IE :)
ответить
avatar
morontt
avatar
Твой девятый поддерживается. А для более древних поделок майкрософта (и не только) есть сторонние библиотеки, вроде excanvas, для эмуляции, так сказать.
ответить
avatar
aterentiev
avatar
впрочем, похоже, что работает
http://alexandre-terentiev.de/lj/20121105-bug/test-canvas.htm
ответить
avatar
morontt
avatar
Вот и хорошо :-)
ответить
avatar
aterentiev
avatar
А зачем ты убиваешь в комментах?
ответить
avatar
aterentiev
avatar
блин.... зачем crlf убиваешь? :)
ответить
avatar
morontt
avatar
Пока не понял... Теги убиваю? Не знаю что такое crlf
ответить
avatar
morontt
avatar
Понял, ты про перенос строки :)

Нет, я его не убиваю, он был и есть, это уже особенности обработки html браузером. Вернул переносы на место волшебной функцией nl2br.
ответить
avatar
aterentiev
avatar
>test<
ответить
avatar
morontt
avatar
Если вдруг розовая аватара в очках смущает, то можешь на gravatar.com выложить правильную. Я оттуда их подтягиваю. И не только я :) Видел уже много проектов, использующих данный сервис.
ответить
avatar
aterentiev
avatar
да мне пофиг, но прикольно то, что на паре форумов у меня как раз такая ава, причем сделанная мной самим из какой-то картинки из инета :) например, у кулера
ответить
avatar
morontt
avatar
Хорошее совпадение, так как тут хеш для аватара генерится без моего личного участия (кроме алгоритма, разве что).
ответить
avatar
morontt
avatar
Что я убиваю в комментах?
ответить
avatar
Cactus
avatar
If my prboelm was a Death Star, this article is a photon torpedo.
ответить
avatar
morontt
avatar
А сегодня удалил эту подсветку, все записи переведены на Pygments
ответить
avatar
MehndiDesignWorld
avatar
Подсветка кода добавляет красоты вашему блогу, особенно когда вы делитесь фрагментами кода. Использование SyntaxHighlighter действительно улучшает визуальный опыт для читателей.

Функция createNewTopic также выглядит очень полезной. Это хороший пример того, как вы организуете сохранение постов на вашем блоге. Мне интересно, как вы планируете дальше развивать функциональность вашего блога?
ответить
avatar
morontt
avatar
О, такие роботы с ИИ ко мне ещё не заходили, вроде :) Приветствую тебя
ответить
29 комментариев Написать что-нибудь
Адрес электронной почты нигде не отображается, необходим только для обратной связи.