Чтение RSS каналов

Журнал изменений

Фильтр и поиск

Всего: 500 Доступных коммитов | Отфильтровано: 500 Коммиты | Страница: 17 / 50
16.04.2026
Refactor: admin — toggle-API, blocks-refactor, admcol-default
Автор: Eduard Laas | Дата: 12:52 16.04.2026

Перевести admin-модули на новый data-sl-toggle-control API, рефакторить blocks.php (сортировка модулей, переименование переменных) и обновить default admcol с 5 до 6.

Core changes:

  1. Admin toggle (admin/index.php, admins.php, security.php, account/admin/index.php):

  2. CloseOpen / sl_close_X → data-sl-toggle-control + семантичные ID
  3. sl_close_1/2 → sl_panel_admin / sl_panel_site
  4. sl_close_9 → sl_form_admin_mail / sl_form_account_mail
  5. cookie-зависимость убрана; is_checked = false по умолчанию
  6. Blocks refactor (admin/modules/blocks.php):
  7. getBlockModules() → прямой обход $conf['modules'] с фильтром type=1 и sort() для алфавитного порядка

  8. $viewItems → $items; $blockwhere → $bwhere
  9. $blocktext → $btext; $html_b/$html_e → $htmlb/$htmle
  10. Config (admin/modules/config.php, config/global.php):
  11. admcol default: 5 → 6 (6 колонок в admin dashboard)
  12. config/local.php: обновлён base_fingerprint

Benefits: - Единый toggle-API без зависимости от cookie-имён - Блоки модулей отображаются в алфавитном порядке - Переменные в blocks.php соответствуют naming-конвенции

Technical notes: - is_checked теперь hardcode false — состояние управляется JS - getBlockModules() удалён из вызовов (inline-логика)

Refactor: toggle-system — CloseOpen → data-sl-toggle декларативный API
Автор: Eduard Laas | Дата: 12:52 16.04.2026

Заменить устаревший глобальный CloseOpen на декларативный data-атрибут API (data-sl-toggle / data-sl-toggle-control). Блоки и кнопки описываются через HTML-атрибуты без inline JS.

Core changes:

  1. Toggle engine (slaed.js):
  2. Новые функции: getToggleControls, setToggleControls, setToggleBlockState, toggleBlock, bindToggleControl

  3. initCloseOpenBlocks переведён на [data-sl-toggle-control] и [data-sl-toggle]; поддержка checkbox, aria-expanded, cookie-состояния (path/global scope)

  4. window.CloseOpen удалён из публичного API
  5. Admin-шаблоны (dashboard-panel, div-collapse, sidebar-block):
  6. OnClick="CloseOpen(...)" → data-sl-toggle-control="<id>"
  7. div id + data-sl-toggle="<id>"
  8. sl_close_X → семантические ID: sl_panel_, sl_block_
  9. Frontend-шаблоны (block-left, categories, navi, new/navi) для default/lite/simple:

  10. OnClick/CloseOpen → data-sl-toggle-control
  11. sl_close_1 → sl_nav_cats (data-sl-toggle-scope="path")

Benefits: - Inline JS полностью удалён из шаблонов - Единый toggle-механизм для admin и frontend - Accessibility: aria-expanded, role="button", tabindex, keyboard

Technical notes: - window.CloseOpen удалён без замены — все вызовы переведены - data-all (старый формат) заменён на data-sl-toggle - ID переименованы: sl_close_X → sl_block_X / sl_panel_ / sl_nav_

15.04.2026
Style: templates — обновить new.css: макет формы и иконка info/warn блока
Автор: Eduard Laas | Дата: 15:24 15.04.2026

Обновление стилей для поддержки новых фрагментов и скорректированного макета form-row с двоеточием через CSS.

Core changes:

  1. new.css (default, lite, simple):
  2. Добавить .sl_info:before, .sl_warn:before — иконка из sprite.png для блоков предупреждений
  3. Скорректировать .sl-form-label: убрать font-weight:bold, увеличить width до 160px
  4. Добавить .sl-form-label::after { content: ":" } — двоеточие через CSS вместо hardcoded в PHP
  5. Добавить .sl-form-row .sl-field { flex: 1; min-width: 0 } — корректный flex layout
  6. new.css (admin):
  7. Добавить те же правила: sl_info/sl_warn иконка, sl-form-* layout, sl-form-label::after

Benefits: - Двоеточие после label управляется CSS — PHP передаёт чистый текст - Все 4 темы синхронизированы по базовым form-row стилям

Technical notes: - sl-form-label::after соответствует удалению ':' из getTplViewFieldRows в helpers.php - Существующие классы sl_* не переименовывались

Fix: templates — добавить op=add в action формы form-add.html
Автор: Eduard Laas | Дата: 15:24 15.04.2026

URL формы не содержал op=add — после отправки адресная строка показывала index.php?name=news без оператора.

Core changes:

  1. form-add.html (default, lite, simple):
  2. Изменить action с index.php?name={{ name }} на index.php?name={{ name }}&amp;op=add * getVar('req','op',...) проверяет POST перед GET * скрытое поле op=send продолжает корректно маршрутизировать отправку * URL при отображении формы и preview теперь показывает op=add

Benefits: - Адресная строка отражает реальный контекст страницы - Нет регрессий в маршрутизации: hidden op=send имеет приоритет через POST

Technical notes: - Admin не использует form-add.html — изменение только для frontend тем

Feature: templates — добавить new/ фрагменты: view-field, voting-*, span
Автор: Eduard Laas | Дата: 15:24 15.04.2026

Новые фрагменты в new/ namespace для всех тем (default, lite, simple, admin). Обеспечивают инфраструктуру для getVotingView и getTplViewFieldRows.

Core changes:

  1. view-field.html (default, lite, simple, admin):
  2. Строка отображения custom field: label + value
  3. Использует sl-form-row / sl-form-label / sl-form-value классы
  4. voting-widget.html (default, lite, simple):
  5. Оболочка для всего voting-блока
  6. Условный <form> через has_form; принимает items_html, admin_html, post_html, polls_html, votes_html, comm_html
  7. voting-post.html (default, lite, simple):
  8. Один вариант голосования для ввода (radio/checkbox + label)
  9. voting-view.html (default, lite, simple):
  10. Один вариант с результатом: прогресс-бар + процент + количество голосов
  11. span.html (default, lite, simple):
  12. Универсальный <span class="{{ class }}">{{ text }}</span>

Benefits: - HTML вынесен из PHP в шаблоны - Все темы синхронизированы — один набор фрагментов на все

Technical notes: - Admin тема получает только view-field.html (voting не нужен в admin) - Root-level voting-post.html и voting-view.html остаются без изменений

Fix: bbcode driver — декодировать HTML entities перед рендером виджета
Автор: Eduard Laas | Дата: 15:24 15.04.2026

При загрузке значения из БД htmlspecialchars-кодирование уже применено. Без decode шаблон применял его повторно — двойное кодирование при редактировании.

Core changes:

  1. EditorBbcode::getWidget (plugins/editors/bbcode/driver.php):
  2. Добавить html_entity_decode($value, ENT_QUOTES|ENT_HTML5, 'UTF-8') перед getTplBbEditor * DB хранит htmlspecialchars-encoded текст * getTplBbEditor передаёт value в шаблон через {{ value_text }} — снова кодирует * decode разрывает двойное кодирование

Benefits: - Сохранённый текст отображается корректно в редакторе при повторном открытии - Нет искажения специальных символов (&amp; → & → &amp;amp; и т.д.)

Technical notes: - CKEditor не требует этого исправления: использует json_encode + ed.setData() - Только BBcode-редактор передаёт значение через HTML-атрибут textarea

Refactor: system — перевести getVotingView на new/ фрагменты
Автор: Eduard Laas | Дата: 15:23 15.04.2026

Весь inline HTML в getVotingView заменён на вызовы $tpl->getHtmlFrag() через new/ namespace. HTML больше не собирается строками в PHP.

Core changes:

  1. getVotingView (core/system.php):
  2. Убрать inline <form>, <h4>, <ul>, </ul>, </form> из PHP
  3. Заменить getHtmlFrag('voting-post',...) на getHtmlFrag('new/voting-post',...)
  4. Заменить getHtmlFrag('voting-view',...) на getHtmlFrag('new/voting-view',...)
  5. Переименовать $cont (loop accumulator) в $items для ясности
  6. Заменить inline <span class="sl_votes">...</span> на getHtmlFrag('new/span',...)
  7. Финальный $cont собирается через getHtmlFrag('new/voting-widget',...) * has_form, form_id, title, items_html, admin_html, post_html, polls_html, votes_html, comm_html

Benefits: - HTML полностью вынесен в шаблоны - Структура voting-widget изменяется только в .html файлах - Соответствует архитектурному принципу: данные в PHP, разметка в templates

Technical notes: - Новые фрагменты: new/voting-widget, new/voting-post, new/voting-view, new/span - Фрагменты нужны во всех frontend темах: default, lite, simple - Root-level voting-post.html и voting-view.html остаются без изменений

Fix: helpers — исправить getTplFieldsIn и getTplViewFieldRows
Автор: Eduard Laas | Дата: 15:23 15.04.2026

Два независимых исправления в core/helpers.php для корректной работы custom fields в display и preview путях.

Core changes:

  1. getTplFieldsIn (core/helpers.php):
  2. Заменить getVar('post','field','raw','') на getVar('post','field[]','raw',[]) * filter_input(INPUT_POST,'field') возвращает null/false для массивов * [] суффикс активирует $allarr=true в getVar — читает $_POST['field'] напрямую

  3. Заменить filterFields() + explode на array_values(array_map('strval',$posted)) * posted массив используется напрямую без лишней фильтрации в display-пути

  4. getTplViewFieldRows (core/helpers.php):
  5. Заменить фрагмент 'view-field' на 'new/view-field' * фрагмент перенесён в new/ namespace

  6. Убрать hardcoded ':' из label_text * двоеточие теперь добавляется через CSS ::after в new.css

Benefits: - Custom fields корректно отображаются в preview - Custom fields сохраняют введённые значения после отправки формы - label_text чистый — без hardcoded пунктуации в PHP

Technical notes: - Фрагмент new/view-field.html должен существовать во всех темах - Обратная совместимость: fallback через explode('|') если POST пустой

Fix: news — исправить add() preview, field[], getStopText
Автор: Eduard Laas | Дата: 15:23 15.04.2026

В add()-функции frontend и admin модуля news устранены три независимые ошибки, из-за которых preview не работал корректно при повторных отправках.

Core changes:

  1. Frontend add() (modules/news/index.php):
  2. Заменить тип 'text' на 'raw' для hometext/bodytext в display-пути * filterHtml + {{ value_text }} вместе давали двойное кодирование за каждый round-trip * 'raw' разрывает цикл; 'text' остаётся только в send() для записи в БД

  3. Заменить getVar('post','field','field') на field[] паттерн с implode * filter_input возвращает null для массивов — field[] через getVar корректен

  4. Заменить $stop напрямую на getStopText((array)$stop) * шаблон new/alert ожидает строку; PHP-массив давал пустой блок

  5. Вызывать getTplPreviewContent() напрямую вместо preview()-обёртки
  6. Admin add() POST-ветка (modules/news/admin/index.php):
  7. Те же исправления: 'raw', field[] паттерн, implode

Benefits: - Текст больше не ломается при повторных preview-отправках - Custom fields сохраняют значения в форме после preview - Блок предупреждений отображается корректно

Technical notes: - send() и admin save() сохраняют 'text' для БД — без изменений - Admin DB-ветка (загрузка из БД) — без изменений; decode на уровне драйвера

Refactor: replace misnamed files-add-*-row with new/form-field-row composition
Автор: Eduard Laas | Дата: 13:46 15.04.2026

Remove the module-specific files-add-input-row and files-add-upload-row fragments (wrong naming, wrong abstraction level). Replace them with proper composition of the existing new/form-field-row + new/input / new/file-input fragments. Add new/file-input.html to all 4 themes.

Core changes:

  1. modules/files/index.php — extra fields rewritten:
  2. files-add-upload-row → new/form-field-row + new/file-input
  3. files-add-input-row (×3) → new/form-field-row + new/input with correct variable names: name_attr, value_attr, itype, maxlength_num, placeholder_text

  4. templates/*/fragments/new/file-input.html (all 4 themes) — new:
  5. <input type="file" name="{{ name_attr }}" class="sl-field">
  6. templates/*/fragments/new/files-add-input-row.html (all 4 themes) — deleted
  7. templates/*/fragments/new/files-add-upload-row.html (all 4 themes) — deleted

Benefits: - No module-specific fragments in new/ namespace - File input reusable via new/file-input across any module - Consistent composition pattern: new/form-field-row wraps any input type

Technical notes: - new/form-field-row and new/input already existed — no new patterns introduced

Всего: 500 на 50 страницах по 10 на каждой странице

Хотите опробовать SLAED CMS в действии?

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

  • D-49179, Deutschland
    Ostercappeln, Im Siek 6
  • +49 176 61966679

  • https://slaed.net
Идеи и предложения
Обратная связь