Четко выделить и сделать понятными для пользователей зоны рабочих групп, личного пространства (блоги) и общих сервисов (репозиторий, библиографии). Первые две реализуются с помощью шкур (особое оформление и доступ к необходимым функциям из веб-интерфейса), (всплывают вопросы usability и дизайна, которые мне не потянуть! – Vtqveant), сервисы реализуются с помощью модулей. Сколько-нибудь значительного переписывания движка хотелось бы пока избежать.
Развитие модульной структуры: Функциональные модули + стандартизованный API.
(Зависят от выполнения других пунктов, возрастания сложности и вырисовывания видения)
1. Капча – защита от спама и предотвращения попадания в список вредоносных сайтов done WITH PROBLEMS всплыли проблемы (болтается PHPNPJID в $_GET) – см. п. 3
2. AJAX done прикрутил Xajax
пример , но может быть лучше будет использовать другую библиотеку, в зависимости от сторонних примочек, если они будут использоваться – см. п. 4
3. Разобраться со старым косяком с потерей $_POST/$_SESSION – см. done Косяк был в другом! ADODB, в отл. от ADODBLite при вызове ADOConnection::Quote() на неопределенном аргументе выдает в строку запроса NULL, в результате чего запрос для добавления постов, документов и комментариев пытался скормить кучу NULL'ов в поля NOT NULL, после чего вызывал ./core/classes/DBAL_adodb::DBAL_Error_Silent(), а редирект в конце /handlers/record/edit.php радиректил хер знает куда. Т.о. в _save_record.php
здесь, вроде уже решен, но всплывает снова при прикручивании ADODB и вообще какой-то хитрой работе с сессиями.
$query.= $f."=".$db->Quote( $data[$f] ); было поправлено на $query.= $f."=".(($data[$f])?$db->Quote( $data[$f] ):"''"); Аналогично для комментариев (в handlers/comments/_save.php): $sql.= $db->Quote( $this->data[$field] ); заменил на $sql.= ($this->data[$field]?$db->Quote( $this->data[$field] ):"''"); (Это в цикле foreach( $fields as $field ) ... ).
//И еще один косячок выплыл:
Почему-то передача подтверждения удаления через <input type="hidden" value="record_delete_granted"> работает некорректно (само это поле заполняется в State Set?::Pack() ), поэтому теперь я отправляю его через GET, для чего в Confirm Form?::Handle() вызов $this->rh->state->Set() закомменчен, а редирект исправлен на
$this->rh->Redirect( $this->rh->Href($this->rh->url, 0) . $this->handler.($this->success?"_granted":"_denied") ); Хотя это, конечно, workaround. По-хорошему надо бы переписать Request Handler::Href() и понять, что не так с State Set?::Pack//
Таки еще один косячок. Сабмит формы из /manage сломался. TODO
4. Upload как модуль (можно посмотреть на
Relay: Ajax directory manager для примера – через AJAX, но, кажется, у них другая библиотека для аякса) – работает «из коробки» вот здесь (Собственно, работает ок только в FF, в IE и Опере косячит что-то крепко...):
http://npj.mathlingvo.ru/lib/relay/index.php – тестовый аккаунт test/test начато
5. Админка как модуль начато
здесь
6. ADODB в качестве штатного DBAL (вместо ADODBLite) начато
7. Отложено На удивление, на хостинге все скомпилилось (даже phpize отработал), но, конечно, не поставилось. Все развлечения на localhost... Можно вернуться к этому вопросу при dedicated/collocation
Adodb-ext-504.zip – расширение к ADODB, заменяющее часть его кода на С (до 100% увеличения быстродействия).
8. Сбор статистики по БД средствами ADODB (вывод в админке). Готово в той мере, в какой это сейчас возможно, см.
http://mathlingvo.ru/administrator – основная проблема на сайчас в корректном подключении ADODB – см. п. 3; кроме того, есть ограничения на доступ к БД (не все функции из ADODB performance monitoring сейчас работают – может решаться путем перехода на Dedicated/Collocation, когда они, собственно, и станут по-настоящему нужны. – см. п. 14)
9. Оптимизация кривых скриптов, кэширование, индексация таблиц.
10. Умеренный рефакторинг и улучшение структуры движка (особенно в части форм-процессора)
11. Исправить скрипты для работы под PHP5. Что может повлечь за собой необходимость замены или апдейта нескольких сторонних библиотек.
12. 2 новых шкуры: для рабочей группы и для блога (вторая – на основе Simplifica) – можно закладывать AJAX начато
пример шкуры и
минимальная документация Проблемы: подогнать формы под новые шкуры, особенно если они хитрые – нетривиальная задача. Видимо, надо крепко рефакторить форм-процессор.
13. Модули: файловый репозиторий (будет использовать модуль upload или объединен с ним), библиографический сервер.
(14.) Extra: Dedicated/Collocation + спонсоры. Внедрение потребует больших гигабайт (load по числу запросов, скорее всего, останется небольшим, но трафик может быть значительным), так что можно поднять вопрос о Collocation и спонсорах/грантах.
NB: Внимательно читать багтрекер!!! –
http://www.npj.ru/in/npjdev/by/bugs/view_all_bug_page.php
Еще:
Еще, если следовать линии – чем меньше «кустомных» частей, тем легче привлечь других людей к разработке – то можно подумать о замене родного TE на Smarty
Написать английскую документацию (в процессе), сделать релиз NPJ – Mathlingvo Edition, выложить на SourceForge.net
I've started using so many third-party GNU GPL, BSD and Creative Commons?-licenced goodies, it's getting hard to remember all of them. Just for that reason I put this record here even though it will be some time until release. So anyways, you guys make my life so much easier.
Оригинал доступен по адресу: vtqveant@ahe:npjplans