Albireo CMS 2025.05.03

История изменений 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 возможность указывать атрибуты ссылок. Используется в лайтбоксах.

!![My image](//image.webp width="200"){data-fslightbox}
!![My image](//image.webp width="200"){class="glightbox"}
!![My image](//image.webp){data-fslightbox}
!![](//image.webp){data-fslightbox}
!![](//image.webp){target="_blank"}
!![](//image.webp){}

Добавил каталог 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.