Инструменты пользователя

Инструменты сайта


tmp_teh_zadanie

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
tmp_teh_zadanie [2026/07/23 10:38] – создано VladPolskiytmp_teh_zadanie [2026/07/23 11:14] (текущий) VladPolskiy
Строка 1: Строка 1:
 +<code>
 +/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
 +</code>
 +
   * 1. мини cms по созданию и редактированию html страниц книги   * 1. мини cms по созданию и редактированию html страниц книги
   * 1.1 ориентируемся на принцип работы и анализ кода dokuwiki   * 1.1 ориентируемся на принцип работы и анализ кода dokuwiki
Строка 11: Строка 27:
   * новой страницы/удаления/редактирования) этот файл .txt пересобирается   * новой страницы/удаления/редактирования) этот файл .txt пересобирается
   * 6.1. Главы в оглавлении генерируются автоматически и являются ссылками на страницы   * 6.1. Главы в оглавлении генерируются автоматически и являются ссылками на страницы
 +(Запись во временный файл → Атомарная замена.)
   * 6.9 отдельная папка-каталог с папками - книгами (по названию книги) для контента (страница и файлы)   * 6.9 отдельная папка-каталог с папками - книгами (по названию книги) для контента (страница и файлы)
   * 7. страницы имеют свои папки с контентом (картинки/файлы)   * 7. страницы имеют свои папки с контентом (картинки/файлы)
   * 8. страницы хранятся в txt файлах (1 страница - 1 отдельный файл)   * 8. страницы хранятся в txt файлах (1 страница - 1 отдельный файл)
-  * 8.0.1 Количество слов на 1 странице равно среднее число в стандартной книге 250–300 слов. +  * 8.0.1 Количество слов на 1 странице рекомендованно равно среднее число в стандартной книге 250–300 слов. 
-  * 8.1 метаданные формата JSON хранятся в отдельном файле .json файла между тегами например <meta_data> и  </meta_data>+  * 8.1 метаданные формата JSON хранятся в отдельном файле .json и записываются через <input type="text">
   * т.е. это (имя книги, имя страница, имя автора, времы создания/редактирования) и это выводится в браузере   * т.е. это (имя книги, имя страница, имя автора, времы создания/редактирования) и это выводится в браузере
   * , а в редакторе в отдельных окнах ввода (пишется в начале между собственными тегами в столбик)   * , а в редакторе в отдельных окнах ввода (пишется в начале между собственными тегами в столбик)
Строка 23: Строка 40:
   * 12. обязательные поля:    * 12. обязательные поля: 
   * 12.1 поле выбора книги для редактирования/написания новой/удаления   * 12.1 поле выбора книги для редактирования/написания новой/удаления
-  * 12.2 поле ввода номера главы индивидуальное / вводиться автоматически следующее от меньшего / либо автором +  * 12.2 поле ввода номера главы индивидуальное / вводиться автоматически следующее от меньшего / либо автором  если оно свободное 
-  если оно свободное +  * 12.3 поле редактирования текста Markdown работает в объеме 1 «1 логический подраздел / подглава» из общего текста (у нас только 1 автор - сам сибе плохо не сделает п. 5.1)
-  * 12.3 поле редактирования текста Markdown работает в объеме 1 обзаца из общего текста+
   * 12.3 движок-парсер пишем сами   * 12.3 движок-парсер пишем сами
   * 12.4 блок кнопок внизу: предпросмотр/сохранить/отменить   * 12.4 блок кнопок внизу: предпросмотр/сохранить/отменить
Строка 32: Строка 48:
   * 13.1 блок кнопок: вырезать/копировать/вставить   * 13.1 блок кнопок: вырезать/копировать/вставить
   * 13.2 блок кнопок: отменить/повтор   * 13.2 блок кнопок: отменить/повтор
-  * 13.2.1 работает методом логирования действий в памяти JS-скрипта (создается при начале редактирования. храним файла лога,+  * 13.2.1 работает методом логирования действий в памяти JS-скрипта (создается при начале редактирования. храним файлов лога,  
 +  * 13.2.2 автосохранение 1 файла-черновика на сервер каждую 3 мин. и при нажатии просмотр
   * постоянно создавая новый 3 и удаляя 1, после сохранения страницы логи удаляем)   * постоянно создавая новый 3 и удаляя 1, после сохранения страницы логи удаляем)
   * 13.3 блок кнопок: найти (только поиск слова/части слова)   * 13.3 блок кнопок: найти (только поиск слова/части слова)
Строка 50: Строка 67:
   *    * 
   * 16.0 Разделите логику: Сначала напишите PHP-ядро (создание папок книг, чтение/запись файлов, авторизация). Только потом переходите к интерфейсу редактора.   * 16.0 Разделите логику: Сначала напишите PHP-ядро (создание папок книг, чтение/запись файлов, авторизация). Только потом переходите к интерфейсу редактора.
-  * 17.0 Контроль объема (8.0.1): Добавьте внизу <textarea> простой JS-счетчик слов. Сделайте визуальный индикатор (зеленый цвет, если в пределах 250–300 слов, красный — если превышен лимит стандартной страницы).+  * 17.0 Контроль объема (8.0.1): Добавьте внизу <textarea> простой JS-счетчик слов. Сделайте визуальный индикатор (зеленый цвет, если в пределах 250–300 слов, красный — если превышен лимит стандартной страницы) рекомендательным, а не блокирующим..
   * 18.0 Генерация HTML: Не парсите Markdown на лету в PHP при каждом открытии страницы. Парсите его один раз в момент сохранения и кладите рядом готовый page.html для мгновенного отображения пользователю (чтения оглавления).   * 18.0 Генерация HTML: Не парсите Markdown на лету в PHP при каждом открытии страницы. Парсите его один раз в момент сохранения и кладите рядом готовый page.html для мгновенного отображения пользователю (чтения оглавления).
tmp_teh_zadanie.1784792335.txt.gz · Последнее изменение: VladPolskiy

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki