0
Другие записи за это число:
2010/01/13 - Фарш невозможно провернуть назад?
<< предыдущая заметкаследующая заметка >>
13 января 2010
планы движка и размышления о дивных возможностях всплывающих окон

Движок движется к релизу. Осталось уже немного:

1) Перевести на систему шаблона. Это сделать несложно, но необходимо. Если вкратце: сейчас есть движок, у которого есть свой набор процедур. Например: взять и обработать текст заметки, вставить блок комментариев, сформировать календарик, приветствие посетителю, ссылки "предыдущая-следующая", блок "другие записи за это число" и т.п. Он их все отрабатывает, чтобы в итоге получившиеся результаты распихать в указанные места шаблона страницы. Это неверная стратегия для движка. Нужно идеологически обратное: чтобы шаблон диктовал движку, что именно надо сделать (какие процедуры запустить). Образно говоря, если в шаблоне посреди html-верстки есть что-то типа {module:calendar}, значит, движку следует разыскать в своих модулях модуль calendar, запустить его, чтобы получился календарик, и полученный результат вставить на это место в шаблоне страницы. Или обновляющийся блок новостей. Или чат. Да что угодно - был бы модуль с указанным названием в папке модулей. Вот это будет идеальная стратегия. Да и проблемы с дизайном у разных пользователей навсегда исчезнут, потому что сам движок обновляться не будет (по большому счету, движка как такового вообще не будет - короткая функция, запускающая модули, которые продиктует шаблон дизайна). Будут добавляться только модули в папке. Сделано.

2) Соорудить систему обновления кода движка (кнопочку "обновить движок" в админке). Ну потому что у меня уже этих движков штук пять стоит на разных сайтах - и моем lleo.aha.ru уже штуки три, у заказчика одного, на hultura.ru/blog с копией ЖЖ Шестакова, и так далее. И доступ всюду обычно только по ftp (и никаких CVS нету, разумеется), а перезаливать всюду каждый раз новую версию - забодаешься, потому что или лить все заново или морщить лоб, какие файлы менял. А есть еще и вовсе проблемный хостинг у Наташки на naber.ru, куда я не могу по ftp залить движок, потому что mc при коннекте периодически виснет. Поэтому нужна в админке кнопка "обновить движок" (и "откатить обратно", разумеется), которая свяжется с базовым сервером (моим), передаст ему даты всех системных файлов имеющегося движка, а сервер сообщит, какие надо обновить, после чего старые переименуются в .old, а новые скачаются. А по кнопке "откатиться" найдет все .old и переменует обратно. Кроме того, надо подумать, как добавлять новые дефолтные переменные в config.php, если того требуют новые части кода.

3) Ну и последнее - полностью отказаться от модуля редактирования editor.php, а все делать всплывающими окнами без перезагрузки страницы. Захотел отредактировать текст заметки? Нажал что-то (ссылку или клавиатурное сокращение) - всплыло большое окно с редактором. Понадобились панели инструментов - нажал ссылку и панель кнопочек подгрузилась. Захотел выбрать для вставки фотографию - распахнулось новое окно с фотоальбомом, полазил, выбрал.

Самое забавное, что последний пункт как раз проще всего реализуется - в нынешнем движке любое новое всплывающее окно (со своей кнопкой закрытия) порождается одной JS командой: helps('имя окна','html-тест содержимого'). Причем, эту команду может (и должен в большинстве случаев!) прислать по аяксу сам сервер (файл.php) в ответ на запрос majax('файл.php',{переменная1: значение, переменная2:значение ...}). Поясню на пример, что именно меня так умиляет в открывшихся возможностях.

Допустим, нам надо получить с сервера окно с чем-нибудь - статистика, редактор страницы, альбом фотографий, форма ввода пароля - не суть важно. Давайте, к примеру, получим от сервера случайное число. Для этого достаточно вызвать в скрипте страницы простую команду (например, ссылкой с onclick=...):

majax('rand.php',{min: '0', max: '100'})

Обратите внимание, я передаю серверу любые параметры: в данном случае min и max. Это на странице клиента. На сервере же размещаем в папке /ajax файлик rand.php:


<?php
include "../config.php"; // конфиг движка
include $include_sys."_autorize.php"; // авторизация посетителя, ну и библиотека аякс:
require_once $include_sys."JsHttpRequest.php"; $JsHttpRequest =& new JsHttpRequest("windows-1251");

otprav("helps('random','Случайное число: <b>".rand($_REQUEST["min"],$_REQUEST["max"])."</b>, вот!');");
?>

Все готово. Пример: прислать случайное число

Что в этом сложного?! Какие нахуй jQuery? Это три строчки кода плюс микроскопический код в теле страницы, без всякого лишнего говна! В каком браузере это не сработает, кроме IE6? Ну ладно я - я-то чайник. Окошко мне нарисовал мудрый Миша Валенцев, дивную команду eval() сообщили неделю назад мудрецы в комментах, а библиотекой аякса научил пользоваться Созидатель года три назад. Но блять, профессиональные программисты сидят на жопах в офисах и пишут сайты! Почему же все сайты (за редким исключением) такие убогие, и любое действие пользователя требует многократных перезагрузок страницы?! Это же часы ожидания и тонны мегабайт говна! Не пойму. Отныне у меня всё на сайтах (кроме навигации по ссылкам, разумеется) будет работать исключительно с выпадающими окнами.

Это реально проще даже по трудозатратам, чем городить обмен с сервером традиционными способами! Простой пример: пользователь заполняет некую форму, но не указал емайл. Ты на сервере видишь, что пришло пустое поле емайла - так ты не закрываешь ему всплывающее окно, а просто высылаешь команду вывести в этом же окошке предупреждение "а еще введите емайл!". И пусть продолжает вводить. А традиционным способом? Ты обнаружил, что пользователь не заполнил одну графу, и у тебя новая головная боль: тебе надо снова сформировать ему ту же страницу со всеми графами для ввода, да еще желательно расставить в графах уже введенные значения, чтоб не вводить заново (многие сайты и этого не делают!).

В общем, я пару лет назад испытал невероятное облегчение, когда перевел админскую обработку комментариев на аякс и из редактора страницы выкинулся огромный кусок говна. Теперь же - сама форма написания комментариев стала на аяксе, и из кода движка выкинулся гигантский кусок говна (я конечно сделаю форму комментариев для тех, у кого не включен JS, но уж очень спартанскую). Следующим шагом выкину сам редактор заметок - и еще сократится код. Все, что не требует перехода на другой url, должно делаться без перезагрузки страницы! Кто этого не понимает - тех надо убивать.

PS: Единственное, чего я пока не научился делать - это их перетаскивать по экрану. Мне посоветовали код, но он почему-то работает только в тестовой модельке. Когда доходит до дела, начинается беда:

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий


Include not found: `/home/www/lleo.me/blog/template/_reklamnaya_lirica.htm`