История изменений Albireo CMS
2025.05.03
- Новый модуль PageViews предназначенный для подсчета количества прочтений страницы. Его можно использовать как более простая альтернатива статистики Stat. Stat хранит данные по каждом посещении страницы, а PageViews хранит только количество прочтений, поэтому размер базы очень скромный.
- Можно использовать поле
comments.page: адрес
для которого следует выводить комментарии. Это позволяет выводить комментарии со связанных страниц. При этом сохранение страниц всё также привязано к реальному адресу slug. Его можно изменить при редактировании комментария в админ-панели.
2025.04.30
- Начал тестирование новой возможности Berry CSS - поддержка dark-темы. Это не только css-код, но и js-код, который обслуживает эту возможность.
- Новая функция strRemoveLF() для простого сжатия css/js-кода. Функция удаляет ведущие и замыкающие пробелы строки, а также все переносы строк.
2025.04.25
- Новая возможность загружать изображения прямо с компьютера в текстовый редактор. Достаточно просто перетащить файл или файлы мышкой в окно редактора. Система спросит какой должна быть ширина и качество итогового изображения и после этого самостоятельно загрузит файл на сервер, преобразует его в webp и добавит ТextSimple/MarkDown код изображения в позицию курсора.
- Новый код для вставки js-содержимого в секцию HEAD:
js.fscript[]: my.js
.
2025.04.18
- Добавил сообщение на странице редактирования файла: если изменения не сохранены, то при попытке уйти со страницы, будет выдаваться предупреждение о несохранении данных.
- Добавил
zip.php
который делает zip-архив текущего сайта для создания бэкапа. В скрипте можно указать параметры доступа, каталоги для копирования, а также исключенные файлы и каталоги. - Немного подкорректировал вывод записей в блоке «Other pages» так, чтобы не выводилась текущая запись.
- Чуток переделал страницу всех рубрик
category
. Теперь для каждой рубрики будет выводиться последние 11 записей. Это более информативный вывод, чем просто ссылки на рубрику.
2025.04.07
- Сделал возможность редактирования config-файлов в виде отдельный полей в админке (новая страница). Происходит парсинг php-файла, потом он собирается отдельно. Поэтому на входе и на выходе обычный php-файл. Это новая библиотека
optionsLib
. С ней ещё будет работа, но пока в таком виде. - Выделил из основного
config.php
секциюdefaultPageData
в отдельный файлpage-data.php
. Так будет проще управлять сайтом. - Изменил файл
my.js
наalbireo.js
. Это более логичное название. - В
albireo.js
добавил функциюalbireoForm()
которая может использоваться для post-отправки формы с использованеим Alpine.JS. Она умеет принимать ответ не только в виде html-кода, но и понимает http-ответ, а также сможет обрабатывать SCRIPT. Это позволяет формировать сложные ответы сервера, где нужно сделать динамическую реакцию, например перезагрузка страницы через 1 секунду. - Новая функция
arrayReplaceKeys()
для замены ключей в многомерном массиве. - В качестве handler ajax-формы теперь может выступать не только файл, но и функция.
- Перегруппировал файлы ядра в отдельные смысловые подкаталоги. Просто для удобства.
- Переиграл код лицензии.
- Добавил функцию
sessionUnsetCSRF()
для сброса CSRF токена. Можно использовать после успешной отправки формы, чтобы блокировать повторную отправку. - Новая функция
sessionOld()
с помощью которой можно хранить и получать данные форм (да и не только). - Решил все-таки использовать сжатие phar-файлов ядра системы. Размер одного 89Кб, второго — 64Кб. Также существенно сократил размер файла лицензии (примерно 500 байт).
- Подкорректировал loader (загрузчик системы), так чтобы он игнорировал файлы и каталоги, начинающиеся с символа «_».
2025.03.27
Небольшая доработка, направленная на увеличение скорости создания «карты файлов». Теперь можно через конфигурацию задать каталоги относительно pages, которые будут как бы «заморожены» — у них не будет проверяться время модификации. Если на сайте много файлов, то такая опция позволяет отключить старые каталоги, которые редко меняются. В итоге построение карты может ускориться примерно в 2 раза (чем больше исключений, тем больше ускорение).
2025.03.25
- Переделка системы под «умный кэш». См. Albireo CMS и много-много страниц. Очень большие изменения в системе.
- Получение страниц теперь происходит через обращение к базе sqlite. Сделал
getPages()
для упрощения кода. Получилось даже меньше, чем старый вариант, поскольку функция сразу обсчитывает пагинацию. - Доработал функцию и алгоритм валидации данных через
arrayValidate()
. См. Работа с формами в Albireo CMS. - Немного изменил работу поля
file-page-data
. Теперь он проверяет файл в каталоге сайта, а если его нет, то смотрит каталог system. Таким образом я вынес часть файлов в общую конфигурацию, поскольку они единый для всех сайтов. - Страница админки (specific/admin) немного переделал под новую возможность
file-page-data
— вынес часть полей в отдельные файлы. - Немного переделал работу контактной формы.
- Сделал новую шапку header12. Она меняет поведение для главной (большой размер) и остальных страниц (уменьшенный размер).
- Новая функция
arrayNatSort()
которая может сортировать многомерный массив по алгоритму натуральной сортировки с сохранением ключей. В PHP до сих пор нет такой возможности... - Переделал страницу записей в админ-панелей. Теперь списки DETAILS учитывают вложенность каталогов. Стало удобнее и более информативно, чем было.
- Новая функция
sessionOld()
которая позволяет запоминать и воспроизводить введенные данные для форм (и не только). - Новая функция
sessionUnsetCSRF()
которая сбрасывает текущий токен юзера. Это позволяет создать новый и отправка формы со старым токеном будет заблокирована. - Функция
getSnapshot()
теперь работает немного по другому алгоритму. Это позволило увеличить скорость создания «отпечатка» примерно в 2-3 раза. - Новая тема оформления
gray1.css
— всё в серых тонах.
2025.02.27
Добавил возможность менять конфиг-файл виджетов для любой страницы с помощью поля widgets-config
. Это на случай, если для какой-то страницы нужен свой уникально настроенный сайдбар.
Добавил возможность указывать у рубрики собственный адрес (ключ my-url
), например вместо category/astro
, можно указать astro
. Тогда при переходе на эту рубрику, будет переход на указанный адрес. Естественно, такая страница должна существовать, иначе будет 404-страница.
2025.02.21
Добавил в textSimple возможность указывать атрибуты ссылок. Используется в лайтбоксах.
!{data-fslightbox} !{class="glightbox"} !{data-fslightbox} !{data-fslightbox} !{target="_blank"} !{}
Добавил каталог service/my
, с помощью которого можно расширять действие default-шаблона, не меняя его.
Доработал update в PDOSQL.
Перенес шрифты в ресурсы. Теперь их подключать стало проще: use.font[gabliela]: +
Перенес Berry CSS в ресурсы. Теперь подключение стандартное: use.berry: +
Сделал разные цветовые дизайны/темы - всего 17 цветовых палитр. css.theme[]: red.css
Еще один лайтбокс use.fslightbox: +
.
Добавил новые демо-данные для сайта. Теперь это астрономия, буддизм, динозавры, кулинария, автомобили и животные. Сделал для каждой рубрики свой файл вывода типа сайт/astro
.
Новая функция findFile() возвращает файл из списка указанных каталогов.
Конфигурация для getDB() теперь подключается рекурсивно: вначале из system, потом объединяется с из website.
2025.02.12
Добавил систему голосования.
2025.01.31
Немного упростил возможность размещать каталоги на уровень выше. Например так можно перенести каталог templates в корень сайта:
website/base-constants.php define('TEMPLATES_DIR', LEVEL_UP_DIR . 'templates' . DIRECTORY_SEPARATOR); define('TEMPLATES_URL', LEVEL_UP_URL . 'templates/');
Это пригодится для мультисайтинга, когда несколько сайтов используют один и тот же шаблон. Его можно вынести на уровень выше и он будет общим для всех.
2025.01.27
- В админ-панели появился чекбокс для автосохранения файла. По умолчанию раз в 30 секунд. Настраивается в конфигурации.
- В админ-панели поменял поведение меню. Теперь оно повторяет привычное поведение windows-меню: клик, открытие, hover и т.п.
- Доработал функцию
getConfigFile()
— новый параметрrecursive
— он позволяет загружать конфиг-файл как дополнительный к системному. То есть можно менять только те параметры, которые отличаются от дефолтных системных. - Конфиг-файл
admin.php
теперь можно менять не весь, а только те параметры, которые нужно изменить. Такое же поведение уже есть уconfig.php
. - В админ-панели в текстовом редакторе, после того, как выполняется вставка через меню, теперь (наконец-то!!!) работает клавиши отмены (Ctrl+Z).
- Проверил работу Albireo CMS на новом PHP 8.4.3 — работает без ошибок.
- Проверил работу Albireo CMS на новой Sqlite 3.48 — работает без ошибок.
- Мелкие правки по шаблонам и Berry CSS 5.
- Вынес новые настройки админ-панели в конфигурацию: высота предпросмотра, дополнительные классы и style текстового редактора.
Теперь можно настроить текстовый редактор любым способом, например так (баловство, конечно, но важен сам факт такой возможности):
2025.01.23
Вынес php-код вывода главной отдельно в файлы модулей шаблона: modules/home
. Для управления выводом можно использовать опции homeOutputModule
, homeLimitPagination1
, homeLimitPagination2
. То есть теперь не нужно менять home.php
, можно поменять вывод через конфигурацию.
2025.01.16
Улучшение работы внутреннего хранилища. Это позволило уменьшить потребление php-памяти примерно 5-6 раз (примерно до 1Мб), правда за счёт небольшого уменьшения скорости работы системы (примерно до 0,2 sec).
2024.12.11
В TextSimple добавлен ```(класс) код ```
, который преобразуется в :
<pre class="класс"> htmlspecialchars(код) </pre>
В TextSimple добавлен код TODO-списка:
- [x] Придумать идею - [ ] Воплотить её в жизнь
<div><input type="checkbox" disabled checked class="task-list-item-checkbox"> Придумать идею</div> <div><input type="checkbox" disabled class="task-list-item-checkbox"> Воплотить её в жизнь</div>
22-02-2023
Начало работ по созданию Albireo CMS.