логин: 
<< предыдущая заметкаследующая заметка >>
11 сентября 2011
Краткие новости и доделки

Немного истории

Движок начинался три года назад как самостоятельная штука с некой системы контент-менеджера. К ней позже подсоединились части блога, которые начал делать еще Созидатель, а я потом многократно переписывал. Движок сайта и движок блога — это были два разных проекта, и поначалу их объединение мыслилось как ноу-хау. Система контент-менеджера называлась site.php, её редактор находился по адресу /adminsite, а ответная часть в корне /ajax_site.php. Эта система руководила MYSQL-таблицей с лаконичным именем `site`, в которой хранилось всё богатство: хоть готовые страницы сайта в html, хоть куски страниц для динамической вставки. Вставка одноименного куска из таблицы `site` выглядела так: {_ljpost_template_} — без двоеточия. Двоеточие появилось уже потом, когда стало понятно, что можно вставлять не только заготовленные куски текста, а результаты работы каких-то модулей. Система правки опечаток, появившаяся в то же время, тоже оказалась необычайно сложна именно потому, что в ее обязанности входило по неким скрытым меткам искать на готовой странице выставленные куски, чтобы если правки относятся к ним, то найти и исправить их в таблице `site`.

Таблица `site` имела не совсем простую структуру: зачем-то в ней указывалась дата создания текстового кусочка, его тип (например «загружаемая страница», «элемент дизайна», «фото») и уровень доступа для посторонних (ведь эти текстовые переменные движок готов был показывать как готовую страницу). Не то, чтоб в таблице `site` хранились сами фото, но там хранились названия фоток и их адреса в папке /photo (фотки должны были храниться там, причем одной кучей). Так был организован в движке первый фотоальбом foto.php, который я лишь недавно с удивлением обнаружил и с негодованием удалил.

Время показало, что вся эта технология абсолютно бестолкова и в ней нет будущего — все более-менее интересные куски кода уже через месяц плавно переехали в движок блога, и site.php сперва сократился до килобайта, а затем исчез вовсе — его функции взял на себя движок. Потом возник в движке фотоальбом, который со временем стал развиваться вообще в файл-менеджер.

Таблица с громким названием `site` захирела. Редактор /adminsite стал использоваться лишь для редких настроек — например, хранить темплейт для загрузки заметки в ЖЖ, витрину книжек и прочую ерунду. По-моему, использовал я его вообще один.

А вчера я обнаружил, что /adminsite перестал работать. Посмотрел в его код, ужаснулся, и переписал все заново. Теперь таблица `site` имеет самый простой формат `name`=`text`, а редактируется аяксами из админки (которая по кнопке пробел) как «редактор переменных».

Разумеется, сам формат вставки {_ljpost_template_} сохранился в движке, его по-прежнему можно использовать.

Но если вы, скажем, открыли некую страницу /page123/text.html, имея в виду попросить движок выдать переменную с именем page123/text.html из таблицы `site`, то этот формат отныне отключен. Ей богу, это бред — это даже я уже три года не использую, проще создать любую страницу в самом движке.


2. Фотоальбом

Фотоальбом, сделанный на аяксах с брожением по дереву папок, довольно скоро перестал быть фотоальбомом, а начал уметь не только показывать фотки, переворачивать их и вставлять в заметку, но и удалять файлы или редактировать текст. Что оказалось очень удобно — например, я как админ могу править код прямо с веба.

Ну а сегодня я доделал еще несколько функций, которых так недоставало, чтобы стать полноценным файл-менеджером: приделал к фотоальбому кнопочку «обновить» (перечитать содержимое последней открытой папки), «создать» (текстовый файл или папку), «копировать» и «перенести» (выделенные файлы — в последнюю открывавшуюся папку).

Теперь все шикарно. В очень далеком будущем сделаю еще более умный редактор фоток — обрезку или яркость/контраст.

3. Редирект

Оказалось, в движке не хватает функции редиректа. Например, кто-то перенес сайт с Вордпресса в движок и хочет сохранить старую переадресацию со страниц типа http://wordpress-site.ru/?p=123 Вордпресс и прочие системы, опасающиеся, что у пользователя на хостинге может быть не установлен mod_rewrite, часто создают именно такую адресацию страниц, а вот в движке страницу с именем, начинающийся с вопросительного знака, создать нельзя. Как быть? Создаем в таблице `site` переменную 'redirect' и пишем туда алиясы переадресации через пробел:

?p=376 2011/05/17.html
?p=380 2011/05/19.html
?p=383 2011/05/25.html
/^\?redirect=1.*?$/si /
jopa123 new_pages/old-site/about_jopa123.htm

Движок, обнаружив, что вызывается корень с каким-то параметром (либо — что не существует ни файла ни записи с именем jopa123), полезет в переменную redirect, найдет там правило переадресации, и отправит пользовательский браузер, куда указали.

UPD: Для переадресации в корень используйте одиночный слэш /. Если хотите написать более сложный разбор — пишите прямо regexp между двумя косыми слэшами типа /^\?redirect=1.*?$/si

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий
Windows IE
1
0
D.iK.iJ
Впечатляет!
Есть подозрения, что этот текст тоже написал движок сайта, обретший искуственный интеллект :)
И теперь в ИЕ почему-то есть тень у рамочек.
<< предыдущая заметка следующая заметка >>