Это старая редакция страницы Разработки / Движок за 01/05/2010 19:00.
Движок openSpace: разработка и доработка
Пожелания и предложения по развитию программной платформы openSpace следует публиковать в параграф Идеи (если она будет принята в план разработки, то её перенесут в параграф Сделать).
Убедительная просьба вносить сообщения обо всех обнаруженных ошибках в работе сайта, багах и недоработках непосредственно в текст страницы (параграф Исправить), но не в комментарии документа!
Основой платформы сайта служит движок openSpace, представляющий собой сильно модифицированную wiki-систему WackoWiki. Выбор пал на нее из-за простоты устройства, модульности, позволяющей легко изменять систему и подгонять под специфические нужды, наконец, субъективная характеристика — код написан на PHP, и для хранения данных используется БД, а не файловая система.
Поскольку сайт не является wiki в обычном смысле, движок подлежит ряду доработок. В частности, от поддержки ВикиИмен оказалось больше вреда, чем блага, поскольку большинство страниц раскиданы по кластерам, а не размещены в корне сайта, и экранировать все встречающиеся слова со смешанным регистром не слишком удобно. Есть и другие изменения, внесенные в оригинальный движок: основные из них перечислены ниже.
Сделать
-
Форма ввода новостей -
Страница вывода новостей -
RSS-канал новостей -
Новая система опросов/голосований (компонент администрирования, компонент ввода опросов, компонент вывода архивных опросов) -
Отображение опросов в канале новостей -
Аскетичное оформление -
Опция: сравнение редакций документа по исходному тексту страниц (без исполнения WackoFormatter) -
Email-уведомление пользователя при передаче ему прав владения документом -
Функция массовой чистки комментариев страницы -
Функция удаления всех страниц кластера -
Возможность быстрого возврата на прокомментированную страницу после удаления комментария -
Контроль стойкости пароля при регистрации и изменении пароля -
Контроль длины текста сохраняемых страниц (предотвращение потери части очень длинного текста) -
Функция массового удаления прикрепленных к странице файлов -
Специальный синтаксис для размещения картинок-ссылок -
Система рейтинговых оценок страниц -
Компонент вывода списка страниц с самым высоким / самым низким рейтингом -
Реализация "Песочницы" для практикования в использовании wiki-разметки -
Расширение пользовательских параметров и полей профиля -
Введение опциональной поддержки BBCode для форматирования текста -
Восстановление новостной рассылки и ее автоматизация -
Конвертор базы данных из phpBB в Wacko -
В метаданных страницы сделать отдельное поле "Название" -
Перенос форума на платформу wiki, унификация сайта -
RSS-канал форума -
Листание страниц комментариев, предпросмотр комментария перед сохранением, правка и удаление, распечатка комментариев вместе со страницей -
Вывод комментариев и изменений, сделанных с последнего посещения пользователя (плюс выделение разделов форума/тем с новыми комментариями) -
Доработка каталога сайта и других каталогов страниц: переход к произвольной странице, алфавитный указатель -
Внутренняя система резервного копирования (стандартные средства не подходят вследствие объемов базы данных) -
Полностью переписать компонент tree (оптимизация по скорости и работе с новой структурой базы данных) -
Полностью переписать подсистему аутентификации и обработки сессий, дабы сделать невозможным перехват и повторное использование истекших куков -
Учет и отображение пользовательской статистики в заголовках комментариев -
Возможность для гостей подписывать комментарии и правки страниц -
Компоненты вывода списка разделов форума, тем в разделе, модерации сообщений и тем -
Единый административный журнал событий (системный лог) -
Установка на сайт SSL-защиты(наконец!)
-
Доработка страницы пользователей: просмотр профилей, списки страниц и пр. -
Компонент внутренней приватной связи между пользователями сайта -
Интеграция GnuPG в движок сайта -
Сделать возможность просмотра опросов, стоящих в премодерации, всеми посетителями сайта -
Кэширование результатов ?тяжелых? SQL-запросов -
Изменить структуру списков ACL, добавить правило 'create', определяющее права на создание подстраниц (и, возможно, 'upload' для загрузки файлов) -
Список недавно удалённых документов -
Элементы страницы для работы с серверами ключей -
Сводная страница новых комментариев и новых редакций -
Обновленный тест Тьюринга -
Поддержка html-кода на постраничной (индивидуальной) основе -
Расширение возможностей модерации комментариев за пределы форума на регулярные страницы сайта (также возможность выноса комментариев из форума в иные кластеры) -
Единый рубрикатор на основе ключевых слов документа. Иерархии рубрик. Упрощенный поиск по рубрикам/ключевым словам -
Реализовать предложения по упрощению работы Гостей -
Возможность загрузки в профиль открытого ключа PGP, используемого в дальнейшем для шифрования забытого пароля и сообщений приватной связи.Реализовано. - Элементы страницы для работы с сетью доверия
- Компонент динамического управления рабочими группами
- Компонент администрирования пользовательских профилей
- Дополнительный флаг для прав доступа: изменение свойств и правка документа должны быть подтверждены подписью PGP
- Усиление защиты аккаунтов:
- привязка (salt) в пользовательских паролях (защиты от тривиальных и идентичных паролей, rainbow-атак)
- хранить в базе данных H(H(pwd)), в cookie — H(pwd) (защита при компрометации БД), снимаю шляпу перед Стивом Мёрдоком
-
Явный список внешних ссылок документа в хэндлере print
Переход к бета-стадии (v0.9b)
- Инсталлятор
- Права доступа на участие в опросах (и просмотр определённых опросов?).
Также указывать ID опросов для упрощения ссылок на них.Возможность комментирования опросов. (Перенести опросы в адресное поле документов, но использовать специфический хэндлер?) - Соответствие XHTML 1.0 Transitional
- Универсальная (многоязычная) адресация страниц. Требуется: 1) заглавная страница для каждого языка, 2) уникальный ключ на поля { lang, tag(?), supertag }.
- Вывод страниц в кодировке UTF-8
-
Автоматическое формирование списка авторов для документа. - Полный рефакторинг кода:
- хэндлеры, действия и административные модули переписать в классы вместо inline-php
- вынести lang-strings действий и хэндлеров в самостоятельные динамически подгружаемые lang-файлы
Исправить
-
При создании страницы наследование прав доступа должно происходить от родительского документа кластера, вместо использования дефолтных -
В некоторых случаях не создаётся список прав доступа при создании новой страницы в кластере -
XML-код каналов не отвечает спецификациям RSS -
Отсутствует pubDate для элементов канала новостей -
Не отображается список последних комментариев -
Контекстный поиск производится по полному пути к текущему документу вместо только имени документа -
Параметр datetime во внутренних ссылках не имеет смысла. Можно удалить (одновременно исправит проблему с якорями на страницах с datetime в url) -
Действия {{orphaned}} и {{wanted}} не работают для любых вложенных страниц кластера -
Функция импорта XML не отслеживает ссылки внутри импортируемых документов -
Переименование (перенос) страницы не обрабатывает контекстные (относительные) ссылки -
Есть ли смысл в ВикиИменах, если они практически не используются с учетом структуры сайта? Отключить -
Некорректное сохранение файлов на определенных страницах (определенные литеры в именах, нюанс хостинга) -
RSS новостей генерирует не верные ссылки (например для новости "Новое название и обновление платформы проекта" дан URL, по которому новость не доступна). Ну и хотелось бы, чтобы по RSS новостей была доступна не только ссылка на новость, но и текст новости. -
При открытии http://www.pgpru.com/ происходит явная переадресация на страницу /Главная -
Переименование (перенос) страницы не затрагивает прикрепленные к ней файлы -
При удалении страницы прикрепленные файлы остаются в файловой системе и БД -
Повторное несоответствие RSS-каналов спецификациям RSS (non-ASCII в строках URL) -
Новости в RSS – заголовки новостей, создаваемые из wiki-имени, не имеют пробелов -
Поисковая система неуклюже работает с комментариями страниц: каждый комментарий может быть открыт как страница, в результатах поиска непонятно, какая страница была прокоментирована, и т.д. -
Ошибка в хэндлере rate: не учитывается нулевой балл при оценке страницы -
Панель управления доступом к документу: список пользователей для передачи прав владения нерационален (в дальнейшем от регистрации новых участников может стать чрезвычано длинным). Следует заменить на поисковую форму. -
Некорректная работа подсистемы закладок: закладки устанавливаются, но не удаляются (не действует виртуальная отрисовка ссылок) -
При простом листании (перезагрузке) страниц обновляется код CAPTCHA в комментариях (особенно в форуме) и впустую расходуются попытки. Альтернатива: обновлять можно сколько угодно, а попытки тратить только при вводе и валидации кода, но само число попыток снизить до 5-10. -
Слишком большой поток уведомлений о новых комментариях. Следует сообщать только один раз, а затем молчать, пока пользователь не просмотрит страницу. -
Оптимизировать SQL-запрос для поиска отсутствующих страниц (нынешний не успевает исполниться до таймаута) -
Устранен ряд некритических уязвимостей класса XSS и SQL Injection (поисковик, модули опросов и рейтинга страниц) -
Улучшен поисковик в плане вида выдачи результатов -
Прямые ссылки на комментарии выдают неверную страницу комментариев (первую или последнюю) -
Невозможна передача имени страницы в кодировке, отличной от CP1251: отображается пустой документ -
При указании внутренней ссылки на комментарий документа, отследить обратную связь становится невозможно. В таких случаях в таблице ссылок следует устанавливать ссылку на базовый документ. -
Ликвидировать рабочую группу Files. Дать возможность каждому владельцу страницы загружать на неё файлы. -
Критическая ошибка в функциях определения административных и модераторских полномочий с потенциальной возможностью получения полномочий незарегистрированными гостями -
Переместить все hardcoded-ссылки в вызовы метода href() -
Скорректировать функции экспорта/импорта XML-документов согласно новой структуре БД -
Процедура очистки устаревших данных (лог, редакции и т.д.): неверный расчет даты приводит к удалению всех элементов старше 1 дня -
Ошибка в функции определения прав доступа HasAccess(), способная в определённых ситуациях привести к раскрытию данных (в частности, при рассылке уведомлений на изменения документа с ограниченным доступом) -
Во избежание семантических атак, следует отключить параметр nomark для директив include и randomphrase (здесь добавить рамку) в PGP-подписанных текстах -
Автоматически блокировать отображение раздела в новостных сообщениях -
При переименовании темы форума через модераторский интерфейс не трогать заголовок, если сообщение электронно подписано -
При разделении темы форума из первого комментария не создаётся новый документ (tag), и следующие комментарии отделяются в никуда (comment_on) -
Отработка процедуры замены надстрочных кавычек на кавычки-лапки в классе типографики в некоторых случаях выдаёт пустую строку (очевидно, некий артефакт в регулярных выражениях). В данный момент исправление не представляется возможным, типографический корректор отключен.-
Форматтеры переработаны, проблема исправлена, корректор включен. - Поправка: более детальное тестирование показало, что в определённых случаях проблема сохранилась. Однако, стало возможным отключение части функций типографики (в частности, обработки кавычек) без ущерба для остальной функциональности. Окончательное решение пока не найдено.
-
-
Критическая уязвимость в панели модерации (недостаточная проверка параметров функции), позволяющая в определённых ситуациях удалить все страницы сайта - Несколько подряд вызываемых редакций одного и того же комментария имеют один и тот же урл, что приводит к невозможности редактировать несколько раз подряд один и тот же комментарий в браузерах с активным использованием хэша (links, elinks и другие).
- Примечание: в связи с технической сложностью и нехваткой времени решение этой проблемы отложено на будущее.
- При использовании BBCode-разметки если использовать цитирование в списке, сообщение выводится некорректно (большая часть не выводится вообще), не говоря уже о корректном форматировании.
- Обход: использовать только wiki-разметку в указанном случае.
-
В файле structure.sql из папки files\backup\20071020_000000 нет указания кодровки таблиц (ENGINE=MyISAM DEFAULT CHARSET=cp1251;). После восстановлении из бэкапа система не функционирует.(Исправлено в 0.8.24a) -
ссыылки вида google:несколько+слов не работают.(Исправлено в 0.8.24a) -
Нет связи с главным ключём при подписывании материалов, т.е. при смене подключа для подписи выдаёт: "неопределенная ЭЦП ключом 0x12345678, не зарегистрированным на сайте".Чтобы избежать такой ошибки, нужно либо вручную обновить ключ на сайте (удалить и загрузить по-новой), либо отправить на сервер ключей и дождаться, пока сайт в плановом порядке обновит его сам. - В броузере Opera не отображается панель Wiki разметки, что делает неудобным оформление постов. Прошу обязательно исправить.
- Код панели разметки несовместим с Оперой. Он целиком заимствован из WackoWiki. Если разработчики решат его исправить, исправление будет принято и в oS. Либо исправьте сами и пришлите патч.
- Вставляется дополнительный пробел после точки: X.X, например, становится X. X. Если мотивации этому нет, то следует починить.
Идеи
- Возможность загрузить в профиль электронную визитку (vCard ver. 3.0) и её подпись.
- Автоматическое получение метки времени на каждую редакцию документа.
- Замена RSS 2.0 на Atom 1.0 (RFC 4287), как на свободный и более современный формат.
- Добавить тэг [offtopic] (можно сокращённо [off]), чтоб по умолчанию (без клика) показывал бы только одну строку, в начале которой он стоит, а по клику веcь блок до закрывающего тега [/off]. Или даже сделать тег [subtopic имя_подтемы], при клике на котором будут раскрыты все субтопики с этой подтемой.
- Было бы не плохо сделать древовидными комментарии: ответ на комментарий дается под конкретным постом, а не просто в общей ветви. Так же полезно добавить возможность отображения комментариев как с первой записи, так и с последней (новые записи в начало)