tmp_teh_zadanie
/server/ # Портативное окружение Apache / PHP
/run.cmd # Скрипт запуска локального сервера в 1 клик
/content/ # Корневой каталог контента книги
└─ [book_name]/ # Папка конкретной книги (название транслитом/ID)
├─ book.json # Общие метаданные книги
├─ toc.json # Структура оглавления и порядок глав
└─ chapters/ # Папка с контентом глав
├─ [chapter_id].txt # Сырой Markdown-текст (1 абзац на файл/секцию)
├─ [chapter_id].json # Метаданные конкретной главы
├─ [chapter_id].html # Скомпилированный кэш для быстрого чтения
└─ media/ # Картинки и файлы, привязанные к главе
└─ [chapter_id]/ # Папка с картинками для конкретной главы
└─ image.png
- 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 для мгновенного отображения пользователю (чтения оглавления).
Только авторизованные участники могут оставлять комментарии.
tmp_teh_zadanie.txt · Последнее изменение: — VladPolskiy
