Осталось написать парсер тинимсишного хтмлся в какой-нибудь формат в котором будет это дело в базе храниться (ну в BBCode буду делать, по моему это оптимальный вариант). Сегодня этим и займусь. В остальном системка для наполнения базы книгами готов.
Потом надо будет сделать еще сам сайт... Ну или модуль в рамках кабзы...
Как сделаю парсер - потестю его, ну и передам интерфейсик управления базкой...
... ... ...
Сразу - парсеров HTML в BBCode - пруд пруди, даже в пхп есть готовый пакет такого парсинга туда и обратно...
Все эти парсеры принципиально не подходят в силу спицифеки тегов, которые будут добавлены в тинимси и их содержательной части...
По этому парсер придется сделать... С другой стороны в этом нет ничего сложного... На этапе парсинга из HTML в BBCode можно воспользоваться парсером XML, что упростит работу, но на этапе парсинга из BBCode в HTML, FB2, PSD такая фишка уже не прокатит, так что парсер писать все равно придется, его и можно сразу сделать единым (однообразным) для всего... Для запуска проект понадобится хотя бы 1 парсер - HTML -> BBCode -> HTML, под другие форматы можно будет дописывать позже парсеры...
В целом получается:
1. Берем книгу ВП СССР,
2. Создаем в базе публикацию и главы к ней,
3. Из .doc файла книги ВП СССР копируем текст в базу (некоторым специальным образом оформляя сноски),
4. ПХП приводит это дело в формат хранения,
5. Назначаем книге псевдоним, например для Мертвой Воды - DW,
6. Таким образом получаем возможность ссылаться на публикацию следующими образама:
- DW - на книгу,
- DW.5 - на пятую главу книги,
- DW.5.3 - на третий подраздел пятой главы книги,
- DW.5.3.27 - на двадцать седьмой абзац третьего подраздела пятой главы книги,
- ну и так далее (хотя далее некуда)...
Я так понимаю, что это и есть начальная задумка.
Следует заметить, что некоторые Текущие Моменты, или же просто статьи могут не содержать оглавления, по этому сущностями, способными содержать материал являются и главы, и подразделы глава и сами публикации... Маски для таких материалов такие же как и для всего остального, только лишь за отсутствием в масках отсутствующих в материале секций, например TM(5).12 = Текущий момент 5, параграф 12...
Всего у нас существует 4 сущности:
- Рубрикатор
- Категория
- Публикация
- Глава
Рубрикатор и категории не могут содержать текстового материала и служат лишь для организации логического хранения материалов, при этом узел рубрикатора всегда только 1, он является коренным узлом дерева материалов (см. управление деревьями Nested Sets). Категорий может быть сколько угодно, но сами они могут быть только 3 уровней.
Публикации и главы могут содержать текстовый материал, при чем книга может содержать или не содержать главы. Структура глав у книги (публикации) может быть как простой (плоской), так и сложной - то есть у глав могут быть подглавы, а у них подподглавы - так же как и у категорий - до 3 уровней вложенности.
Благодаря чему база является приспособленной для хранения и организации поиска как по отдельным статьям, так и по сложным и очень сложным публикациям со структурированной системой глав.
Таким образом поиск по базе может осуществляться:
- По маске-указателю DW.5.3.27 (GGI.2.4.11 - Garden grows itself, chapter 2, subsection 4, paragraph 11), кстати, если надо просто сослаться на главу целиком, то следует написать просто DW.5.3 - и на выходе будет третья подглава пятой главы книги. То есть понятно - каждая секция маски является степенью детализации (хотя чо я админам объясняю что это такое?)...
- По тегам. К каждой сущности "публикация" может быть привязано до 5 тегов.
- По авторам. К каждой сущности "публикация" может быть привязан 1 автор.
- По категориям (фактически - объединениям).
- По периодам (датам выхода в свет).
- По принципу объединения поисковых запросов: период + категория + автор + теги (этот вариант исключает возможность искать еще и по маске, так как такое объединение лишено смысла и на выдаче всегда будет нулевой результат за исключением случаев, когда указаны абсолютно точные данные для одной единственной публикации, но зная эти точные данные такой поиск лишен всякого смысла вообще, так как эту публикацию проще тогда найти тупо по маске).
О принципиальной разнице поиска по тегам и категориям, зачем это надо?
Категория, это сущность в дереве, хранящем базу данных. В одной категории может находиться несколько публикаций. Но один тег может быть привязан так же к нескольким публикациям! Разница в том, что одна отдельная книга может быть связана не с одним тегом, а с несколькими. Таким образом чтобы хранить ее в древовидной структуре, в которую включена сущность "тег", эту книгу придется продублировать столько раз, сколько у нее тегов - то есть не гут. В то же время книга может принадлежать исключительно одной публикации, которая формально является уникальным тегом этой книги:
Структура:
Рубрикатор (корень дерева)
..Политология (категория)
..История (категория)
....По вере вашей (
публикация -
не содержательная часть) + тег Религия + тег Альтернативная история
......1 (глава 1 -
содержательная часть)
......2 (глава 2 -
содержательная часть)
......3 (глава 3 -
содержательная часть)
..Материалы (категория)
....Красота и здоровье (категория)
......ЗОЖ (категория)
........Тайная власть бухла (
публикация -
содержательная часть) + тег Генофонд нации
... ... ... ... ...
Вот это то, систему управления чем я сейчас делаю...
Если что-то не так или не соответствует замыслу - уточните сразу сейчас, чтобы потом не переделывать
!!!
А, ну делаю тут
http://agro-time.ru - если кому интересно, следите...
login : test
password : alpha.tester
...
С системой авторизации и правами не заморачивался, делаю как быстрее, так что каждый юзер может при желании все сломать (а сломать можно только структуру дерева). С проверками ввода тоже особо не заморачиваюсь...
Не пытайтесь если что добавить публикацию, добавление сущностей "публикация" и "глава" - отключено, вчера вскрылся какой-то конфликт между jQuery, jQuery-UI, jQuery-Tools и jQuery-TinyMCE (ну ясно - я его точно еще не локализовал

, если не пойму в чем дело - сделаю "иначе"

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