ng.site.content ng.site.content README.txt Новое в ng.site.content

Старое описание и черновики документации

Степан Ломов  2007-11-03 00:00

NeuralSite - это экспериментальный продукт, представляющий собой "коробочный" контент-сайт. На нем предполагается поднять несколько контент-сайтов, в том числе сайт Dream Bot и Eagle Nest.

Главная цель продукта - отладить и описать некоторые технологии организации контент-сайтов, в первую очередь рубрикацию, кеширование, автоматическое конвертирование и разметку текста.

Содержание:
  1. Что надо сделать в контент-сервере
  2. Краткое описание контент сервера
  3. Список задействованных в контент сервере продуктов
  4. Функциональная спецификация

Описание продукта NeuralSite :

Это, в перспективе, коробочное решение, ориентированное на быстрое создание контент-сайтов. Продукт включает в себя ng.app.rubricator и ng.app.convertor, построен с использованием библиотеки контент-типов ng.content.article.

Что надо сделать в контент-сервере

Что нужно сделать с контент-сайтом:

  1. Создание объекта Rubricator подразумевает обязательный выбор именованных утилит, как альтернативу может быть стоило бы оставить возможность отказа от выбора, так, что бы испоьзовались все утилиты с данным интерфейсом;
  2. Тоже про newsrefbackreference;
  3. Рубрикатор - надо как и в случае каталога, адаптировать объекты к единому интерфейсу;
  4. Сделать нормальный логгинг и диагностику;
  5. (сделано) Надо прикрутить к рубрикатору настройку нормальных новостей;
  6. -(seminar: накопитель ссылок на объекты) В скине на главной странице довольно левым способом собирается колонка новостей;
  7. (seminar) RemoteContainer - надо придумать как устанавливать соответствие вкладывваемых контенттипов майм-типам исходных файлов;
  8. (seminar) RemoteContainer - надо придумать как сделать ограничение запрашиваемых файлов регулярными выражениями по имени и (или) майм-типу. Возможно, стоит добавить ограничение по глубине рекурсии или объему;
  9. Надо что-то сделать с длительной транзакцией обновления - видимо, выполнять ее фоновым потоком и фиксить транзакцию регулярно. Возможно, вписывать текущее состояние транзакции в коннектор (пример: сайт видео);
  10. (сделано) Зачистить кеш от возможности вложения левых объектов (фактически переписать под нормальную схему вложенности);
  11. (сделано) Переделать схему наследования в конверторах (так чбы IConvertorREST (IConvertor) );
  12. Сделать адаптер вместо повсеместной адаптации к PropertySheet;
  13. В конструктор MapperAttributeItem добавить принудительную дачу ID;
  14. (сделано) В абстракте статей не сохраняется логотип и ваще, надо пересмотреть абстракт и логотип в сторону соответствия KS;
  15. (сделан пробный вариант) Не отдизайнены виды для объекта-ссылки в рубрикаторе;
  16. (сделано) Сделать для RemoteObject кнопку "обновить сейчас", тоже для RemoteContainer;
  17. Сделать специальный поисковый интерфейс и адаптеры под него (иначе поиск фактически не работает);
  18. (сделано) Поиск должен давать возможность отдельно искать по полю имя (в смысл __name__) и ключевые слова, в качестве источника ключевых слов пока можно использовать DC, и то и другое будет использоваться в вики (т.е добавляем разметку <слово>, [reference:<слово>]);
  19. (сделано) Пересмотреть список интерфейсов под большее соответствие Нашим Новым Идеям;
  20. Использовать IAnyTitle в прокрутке
  21. (сделано) Настроить права по всем видам, что бы в принципе все управлялось корректно: четыре роли, аноним, юзер, редактор, манагер и по ним раскидать виды и адаптеры.
  22. Разобраться как делать форму отправки писем (с подпиской).
  23. -(через меню URL'ов, seminar) Сделать строку ссылок внизу
  24. -(seminar) Сделать более вразумительную строку баннеров (можно с кодированием объекта на семинаре);
  25. (сделали) Сделать так, что бы объекты не появлялись вне разрешенных мест.
  26. (сделано) Починить составление оглавления
  27. Приделать к smartimage вид по умолчанию
  28. (сделано) Приделать к експешенам вывод трассы
  29. (сделано) Сделать для ексепшенов нормальную кнопку "перейти на главную страницу"
  30. -(seminar) Сделать специальный объект для Main (должен иметь список URL и прочей мелкой настроечной фигни для сайта);
  31. (сделано) Посмотреть права на контейнеры;
  32. -(seminar) Сделать адаптер "найти контейнер" отрабатывает на любом файле
  33. -(seminar) Создать адаптер "IAnyTitle"
  34. Сделать возможность выбирать "главный" объект в RemoteContainer (он будет работать как body)
  35. -(seminar) Сделать адаптер к INextPrev, основанный на стеке траверса.
  36. inbody и REmoteContent нуждаются в доработке. Самое неприятное - там нужен некоторого сорта рекурсивный спуск, что бы получить нужный материал. Одной приблудой под названием ob/@@body там не обойтись - нужен полноценный вид, учитывающий разные варианты развития событий. В том числе и тот, что единственный объект не является контентом вообще.
  37. (сделано) Установить специальные индексы для keyword и name и починить сразу ISearchAdapter
  38. Написать адаптеры возвращающие разные списки материалов
  39. Придумать как переключать вид редактора при переключении страницы
  40. Придумть как сделать заполнение (начальное) добавленного объекта
  41. Разобраться с xmllib
  42. Разобраться с ftp
  43. Подумать как втащить к себе pd.cfg и надо ли оно мне
  44. Подумать над пейджингом
  45. Подумать и реализовать кеширование пейджинга
  46. Попробовать самому собрать форму.
  47. Попробовать самому же собрать реестр.

Грубые ошибки:

  1. При нажатии на кнопку update и не до конца введенных данных коннектора возникают некрасивые исключения.

2, Починили ... Кнопка hidden не работает, фактически.

  1. Форма добавления ведет на полный список, что очень неудобно.
  2. Облом обращения по remotefs приводит к "Системной Ошибке", надо выводить что-то более дружелюбное.
  3. Починили ... Сделать поиск ключевых слов регистронезависимым.
  4. Починили ... Права на FuzzyTraverser
  5. Принудительно навесить на ResultSet интерфейс IResultSet, что бы нормально вызывать адаптеры.
  6. Починили ... Сделать в вики страницы, которые отображаются если нет прав на добавление.

РЫ1:

7,8 - в принципе, уже сделано. Надо к ремотеконнектру прикрутить интерфейс выбора маймтипа и т.п.

Краткое описание контент сервера

$Id: contentserver-description.txt 12503 2007-10-27 13:53:50Z cray $

Краткое описание продукта "Простой Контент-Сервер":

Введение:

Продукт "Простой Контент-Сервер" (далее - контент-сервер) написан для Zope3 и может использовать postgresql для решения некоторых задач. Контент-сервер устанавливается при помощи простой процедуры инсталляции и сразу же готов к работе: имеет готовый (хотя и простой) скин и позволяет осуществлять управление контентом.

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

Типовой (тестовый) проект:

Сервер документации для сообществ Zope3 и Open-Source разработчиков, корпоративный сайт компании "Ключевые решения", альтернативная реализация сайта Zope3.Ru, информационно-справочный сервер по нейросетевым проектам.

Список возможностей:

Простая установка "в один клик" (см. installtool);

Автоматическое преобразование форматов публикуемых документов для отображения на сайте (cachedconvertor);

Организация вики-подобных служб;

Наличие готового презентационного и административного скина (предполагается, что презентационный скин допускает легкую настройку);

Автоматический рубрикатор, позволяющий легко классифицировать поступающие материалы по нескольким категориям (rubricator);

Наличие готового "строительного материала" - библиотеки контент-объектов, позволяющих размещать материалы на сайте.

Формы обратной связи
легко настраиваются редакторами сайта, что бы получить отзыв по его материалам;

Наличие RSS-лент;

Возможность прозрачного использования материалов из внешних хранилищ, в том числе SVN, HTTP, FTP (remotefs);

Поиск по материалам сайта;

Ссылки между материалами сайта.

Список смежных продуктов:

Смежные продукты не входят в основную поставку контент-сайта, но могут быть использованы вместе с ним при необходимости.

Интернет-магазин (не написан вообще);

Служба рассылки новостей (готова, но нет подписки);

Видео-сервер (готов);

Регистрация на сайте и поддержка профилей (относительно готова);

Чатсервер (относительно готово);

Баннерная служба (относительно готово);

Комментирования статей (готово, требует использования postgresql);

Ведение форумов и блогов (относительно готово, требует использования postgresql).

Заключение:

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

Список задействованных в контент сервере продуктов

$Id: contentserver-productlist.txt 12503 2007-10-27 13:53:50Z cray $

Список продуктов используемых в контент сервере :

Список дан по состоянию на сегодня, для сервера neural.ru.

cachedconvertor

contentobject
статья, раздел, удаленная статья;
interfaceswitcher
переключатель режимов отображения статьи;

smarttools --

neuralsite
собственно настройки сайта;
neuralskin
нейро-скин;
reference
референс инжайн;
remotefs
таскалка объектов remotefs;
rubricator
рубрикатор (собственно);
zcmljunction
сводный адаптер;

Функциональная спецификация

Функциональная спецификация контент-сервера :

Карта сайта:

Главная страница :

Содержит две колонки с новостями и прочей фигней.

  1. О компании (текстовые документы);

    Может содержать "формы обратной связи";

  2. Описание проекта (текстовые документы);
  3. Новости (текстовые документы);
  4. Рубрики (рубрикатор);
  5. Статьи (текстовые документы и удаленные документы);
  6. Зеркала (удаленные разделы);

Специальные страницы:

Поиск, может быть вызвана в любом месте ищет в подразделах сайта;

Объекты:

Подвал (-) "Root/" :

Содержит настроечные скрипты и прочую лабуду. В спорте обладает интерфейсом IRootSite, который пустой (П.1) .

Также содержит реестр.

Корень сайта (-) "Root/Main/" :

Собственно начала сайта. Выделяется в связи со упрощенными ограничениями на вхождение объектов и неоходимостью размещения страницы специального дизайна. (П.1)

В случае сайта спорт содержит специальные настроечные параметры, которые дублируют функции реестра.

Реестр (-) "Root/++etc++site/registry" :

Содержит параметры сайта. Есть прототип в спорте, который себя хорошо зарекомендовал, но в контент-сайте это должен быть некий расширенный объект, примерно с такой функциональностью:

  1. Нужно иметь возможность хранить все параметры на диске,
  2. Параметры в перзистент-реестре перекрывают параметры на диске,
  3. Список параметров может "легко и непринужденно" искуственно изменятся (например, как расширяемая форма с параметрами),
  4. Существует специальное АПИ обращения к реестру (IRegistry.getParam()), включающее в себя указание дефолтного значения для отсутствующего параметра.
  5. Условно, можно считать все параметры реестра текстовыми.
  6. Нужна возможность наследовать реестры друг от друга.

Поисковый каталог (+) "Root/++etc++site/catalog" :

Обычная приблуда для поиска и индексации. Нужно разобраться с интерфейсами поиска(П.2).

Сейчас используется SearchAbstract и пара других, служебных интерфейсов, которые позволяют сгенерировать нужные для нескольких служб индексы. В общем, можно считать что серьезного поиска сейчас нет.

Стандартные баннеры (-) "Root/++etc++site/banner" :

Специальный объект для вывода строки баннеров на сайте, это не баннеры баннерной службы, а именно стандартный слот баннеров. Как вариант -- можно сделать пару интерфейсов типа код, изображение, ссылки -- которые навесить на подходящий объект.

Лексикон (?) "Root/++etc++site/lexicon.txt" :

Специальный объект, посредством которого можно выбрать слова для случайного отображения в поиске.

В настоящее время просто текстовый объект, можно сделать спец.продукт (П.3), который, например, будет черпать слова из каталога.

Разделы сайта (+) "Root/Main/*", About, Mirror, News, Article, Rubricator.

Сейчас используется Neural/Division, со спец. дизайном, интерфейсом и т.п.

News используется демонстрационный и эту ситуацию надо быстро изменить. Ну, например завтра.

В mirror создаются контейнеры, содержимое которых может потом копироваться в другие папки.

Примечания:

  1. Подвал и корень сайта могут строится из обычных объектов и выделяться только через InterfaceSwitcher.
  2. Можно делать на zcml-junction, особенно пока речь идет о простом поиске. Есть какой-то недоделанный проект с определениями форм поиска в рамках спорта - типа объявляешь интерфейс и все остальное делается само.
  3. Надо посмотреть как для него реализованы виды/адаптеры и т.п.

Вложено:

Дизайн нашего скина 2007-11-21 08:05 Степан Ломов 

В документе приведены три варианта дизайна, для трех наших сайтов. На самом деле, вариантов значительно больше, это просто те, которые я выбрал. Предварительно.

ЗЫ: В репозитории валяется XCF кому надо со слоями - может качать оттуда.

Эпицентр Zope3 Учат тут Нейросети Репозиторий Статистика Редакторам Проекты
Подписаться на RSS Feed Официальный сайт Zope3 Московская группа изучения реактивного движения The Dream Bot Site noooxml