Три недели назад я анонсировал старт разработки обновленной версии модуля modSociety (модуля для блого-социальных проектов на базе фреймворка MODX Revolution).
Сейчас можно сказать, что разработка идет полным ходом, и уже сейчас заложена обновленная основа под диалоговые ветки, топики и комментарии, и даже есть простейшая форма добавления комментария :-)
?
Под катом я расскажу некоторые новости, а так же поделюсь некоторыми нашими планами.
Планы
Раскрою некоторые ключевые задачи, которые были поставлены при разработке нового modSociety:
1. Никаких кастомных классов пользователей на базе modUser. Не смотря на то, что само собой базового пользователя будет не достаточно, класс modUser расширяться не будет. Будет создан новый класс SocietyUserProfile, который будет как бы дополнительным профилем пользователя, только содержать необходимые данные для блого-социального движка. Получить его можно будет просто: $modx->user->getOne('SocietyProfile');
Главная причина делать именно так — это чтобы не было конфликта классов с другими компонентами. Дело в том, что у пользователя может быть только одна основная запись, и соответственно, у него может быть только один основной класс. Крайне не хочу того, чтобы когда-нибудь пришлось выбирать или или.
2. Комментировать можно все и вся. Учитывая, что в xPDO используется мощная классовая модель, я решил оттолкнуться именно от этого, чтобы не ограничивать комментарии типа «комментарии только для топиков», или «Комментарии только для пользователей». Теперь при желании можно будет даже комментировать контексты и прочие сущности (чисто гипотетически). Это полезно тогда, когда у вас, к примеру, товары заводятся не как кастомные документы, а именно на основе отдельных классов и данные их хранятся вообще в отдельной таблице. Или у вас там какие-нибудь турнирные данные. И ведь надо же комментарии к чему-то привязывать. Вот здесь это можно будет делать запросто, и даже не надо ни таблицы править, ничего. Обойтись можно будет чисто параметрами на уровне шаблонизации.
3. Пригодность как для блогов, так и для форумов. При разработке данного модуля учитываются сразу два формфактора — блоги и форумы. При чем в плане блога ставится задача минимум — это обеспечить полноценную альтернативу livestreet-у. modxclub.ru будет первым MODX-сайтом, который мигрирует с livestreet-а на 100%-ые MODX технологии :-)
4. Производительность. Модуль должен будет не просто работать, а работать достаточно быстро, чтобы его практически не замечать.
Новости
С подачи Сергея proxyfabio мы взяли на вооружение сервис http://www.lucidchart.com, и теперь все основные логические узлы будем обязательно и как можно подробней описывать в схемах. Я думаю, что это будет полезно и нам (так как легче проектировать предполагаемую логику), так и конечным разработчикам, так как когда придется столкнуться с задачей модификации этого на своем конечном проекте, по схемам гораздо легче понять что куда идет и где что надо будет поправить.
Вот, к примеру, основной плагин модуля: www.lucidchart.com/documents/view/4dbd-2c68-52728aa0-95ef-66e70a009e12
А вот эта схема описывает механизм добавления нового комментария: www.lucidchart.com/documents/view/44b7-4710-52726a42-bf3d-2fe30a009e11
Конечно же это еще очень сырой вариант, и логика будет значительно расширена и усложнена, и как раз именно по этому мы считаем, что подобные схемы будут невероятно полезны. Ссылки постоянные, и графики будут меняться по мере редактирования.
Весь проект для просмотра доступен вот по этому ссылке (потребуется регистрация): www.lucidchart.com/invitations/accept/5272993a-2cf8-4745-a314-425b0a009754
P.S. Позже таким же образом будет документирован и ShopModxBox. Это тем более будет полезно, что эти два проекта и в отдельности-то весьма не простые, а когда мы modSociety интегрируем в ShopModxBox, то там без документации вообще нечего будет делать :-)
P.P.S. наши разработки распространяются бесплатно. Ваши донейты приветствуются ;-)
UPD:
1. Пересмотрел часть логики с комментариями. В частности считаю, что любое действие над комментарием — это и обязательное действие над диалоговой веткой. То есть добавляем мы комментарий, или обновляем имеющийся — это и проверка доступов к диалоговой ветке, и выполнение update над ней (фикс последнего изменения и т.п.). В итоге, create-процессор комментария — это расширение update-процессора диалоговой ветки.
2. Добавил автоматический пересчет количества дочерних комментариев в самих комментариях и общего кол-ва комментариев в диалоговой ветке в целом при сохранении объекта нового комментария и удалении существующего. То есть даже если вручную в любом месте через xPDO создать или удалить объект комментария, пересчет автоматически будет выполнен. Это обязательно позволит существенно снизить нагрузку на сервер, так как всегда можно будет легко узнать сколько комментариев в диалоге вообще, и сколько дочерних комментариев в любом отдельном комментарии (это необходимо при построении дерева комментариев при разбивке на постраничность).
Надо вот еще будет серьезно подумать над тем, как лучше получать список комментариев.
Еще обновление :-)
Реализован механизм голосований. Голосовать можно за любой объект, будь то документ, пользователь, комментарий или типа того. Логическая реализация будет максимально приближена к хабравскому. Вот общая логическая схема: www.lucidchart.com/documents/view/4028-6bb4-527ae1f1-8dc2-293e0a00c87a
Встретились сегодня с Fi1osof . Задонейтил на развитие модуля. Так что вскоре увидим новый вкусный релиз)
Роман? спасибо!
Не буду говорить сколько внес Роман, но вклад действительно очень серьезный, и скоро будет релиз с еще дополнительными плюшками.