1. мини cms по созданию и редактированию html страниц книги
1.1 ориентируемся на принцип работы и анализ кода dokuwiki
2. все файлы коды в разных файлах с понятными именами
3. код в каждом блоке с подробным комментарием
4. server/ ←- Портативное окружение (Apache / PHP)
5. run.cmd ←- Скрипт запуска локального сервера в 1 клик
5.1 сесии с регистрацией и авторизацией с отключением регистрации (существует только 1 автор)
5.2 используем <textarea>
6. Первая видимая страница пользователя - оглавление
6.0.1. если страница есть - текст голубой /если страница не существует текст красный ( после создания
новой страницы/удаления/редактирования) этот файл .txt пересобирается
6.1. Главы в оглавлении генерируются автоматически и являются ссылками на страницы
6.9 отдельная папка-каталог с папками - книгами (по названию книги) для контента (страница и файлы)
7. страницы имеют свои папки с контентом (картинки/файлы)
8. страницы хранятся в txt файлах (1 страница - 1 отдельный файл)
8.0.1 Количество слов на 1 странице рекомендованно равно среднее число в стандартной книге 250–300 слов.
8.1 метаданные формата JSON хранятся в отдельном файле .json и записываются через <input type=«text»>
т.е. это (имя книги, имя страница, имя автора, времы создания/редактирования) и это выводится в браузере
, а в редакторе в отдельных окнах ввода (пишется в начале между собственными тегами в столбик)
10. главная рабочая страница «редактор»
11. редактор создает/правит/удаляет страницу
12. редактор имеет поля ввода и кнопки
12. обязательные поля:
12.1 поле выбора книги для редактирования/написания новой/удаления
12.2 поле ввода номера главы индивидуальное / вводиться автоматически следующее от меньшего / либо автором если оно свободное
12.3 поле редактирования текста Markdown работает в объеме 1 «1 логический подраздел / подглава» из общего текста (у нас только 1 автор - сам сибе плохо не сделает п. 5.1)
12.3 движок-парсер пишем сами
12.4 блок кнопок внизу: предпросмотр/сохранить/отменить
12.9 панель с блоками кнопок вверху
13. блок кнопок: новая страница/открыть страницу/сохранить/удалить
13.1 блок кнопок: вырезать/копировать/вставить
13.2 блок кнопок: отменить/повтор
13.2.1 работает методом логирования действий в памяти JS-скрипта (создается при начале редактирования. храним 5 файлов лога,
13.2.2 автосохранение 1 файла-черновика на сервер каждую 3 мин. и при нажатии просмотр
постоянно создавая новый 3 и удаляя 1, после сохранения страницы логи удаляем)
13.3 блок кнопок: найти (только поиск слова/части слова)
13.4 блок кнопок: выбор шрифта/размер шрифта/размер
13.5 блок кнопок: шрифт наклонный/подчеркнутый/жирный/текст кода/зачёркнутый шрифт
13.6 блок кнопок: абзац (с красной строкою)/ список/ нумерованный список / разделитель
13.7 блок кнопок: заголовок (раскрывающийся 5 уровней)/ внутренняя ссылка/ внешняя ссылка
13.8 блок кнопок: добавление иллюстраций и файлов / смайлы / спец картинки
13.8.1 пишем скрипт-обработчик на PHP, который принимает файл из формы, проверяет его расширение/размер и складывает в content/book_name/chapter_id/
13.9 блок кнопок: вставка якоря/вставка тэга
14.0 блок кнопок: вставка сносок примечаний в низ станицы/ вставка блоков внимание
14.1 блок внимание: прямоугольник голубого/красного/зеленого цвета
14.4 блок кнопок вставки блока php/js/css кода
14.5 блок кнопок вставки шаблонов абзацев/текста
15.1 внизу 2 кнопки-списки вперед/назад с выбором установки ссылок на страница
16.0 Разделите логику: Сначала напишите PHP-ядро (создание папок книг, чтение/запись файлов, авторизация). Только потом переходите к интерфейсу редактора.
17.0 Контроль объема (8.0.1): Добавьте внизу <textarea> простой JS-счетчик слов. Сделайте визуальный индикатор (зеленый цвет, если в пределах 250–300 слов, красный — если превышен лимит стандартной страницы) рекомендательным, а не блокирующим..
18.0 Генерация
HTML: Не парсите Markdown на лету в PHP при каждом открытии страницы. Парсите его один раз в момент сохранения и кладите рядом готовый page.html для мгновенного отображения пользователю (чтения оглавления).