Главная » Новости » Версия 0.7.43

Версия 0.7.43 

Ядро

  • добавлены недостающие права доступа
  • добавлена проверка на существование требуемого шаблона в текущей теме. Если шаблон не существует, то используется шаблон с именем 'default'
  • добавлен контроль флуда:
    • в файле конфигурации добавлена константа ANTIFLOOD_DELAY, задающая минимальное время в секундах, которое должно пройти между последовательными отправками сообщений от одного пользователя. Дефолтовое значение - 60 секунд.
    • в базовом классе модулей добавлены два метода: mark_antiflood() и check_antiflood(). Первый ставит метку, второй возвращает оставшееся время в секундах.

      Внимание! Ядро не принимает никакого участия в контроле за антифлудом - весь механизм должен быть реализован внутри модулей.
  • добавлена константа URL_RES_CSS, хранящая URL до папки с глобальными стилями

Базовый класс модулей

  • - добавлен метод clear_option(), позволяющий удалять отдельные опции.

Объект page

  • изменено поведение метода генерации содержимого секции head (метод _get_full_metas(...)). Теперь для стилевых файлов и ява-скриптов используется следующий алгоритм обработки:
    • в генерируемый код вставляются только те записи, которые указывают на реально существующие файлы
    • поиск требуемых файлов происходит в двух разных местах: папке модуля темы и папке модуля сайта.

      Т.е. если модуль blog хочет добавить к странице свой стилевой файл, находящийся в папке tpl, то он вызывает метод
      page::add_style(URL_MODULES.'/'.$this->get_name().'/'.tpl/mystyle.css').
      В качестве параметра передается полный URL к файлу стилей (так было всегда). Соответственно путь будет выглядеть примерно так: http://site.com/modules/blog/tpl/mystyle.css

      При генерации кода секции head, система проверит сперва папку соответствующего модуля текущей темы (для приведенного примера это будет .../themes/имя_темы/modules/blog/tpl/mystyle.css). Если требуемый файл будет обнаружен в этой папке, то в код будет вставлен путь именно к этому файлу (http://site.com/themes/имя_темы/modules/blog/tpl/mystyle.css).

      Если же файл не найден, то проверяется изначально переданное расположение (начальному адресу http://site.com/modules/blog/tpl/mystyle.css соответствует файл .../modules/blog/tpl/mystyle.css). Если файл найден, его URL вставляется в код секции head, если не найден - файл пропускается.

      Таким образом решаются две проблемы:
      • вырезание ссылок на заведомо ложные стилевые и js-файлы
      • возможность в темах менять стили контента, генерируемого модулями 

Smarty

  • добавлен метод view::template_exists($tpl), проверяющий доступность шаблона. Позволяет обойти (перехватить) системные ошибки, выдаваемые Smarty, при отсутствии требуемого шаблона. Поиск ведется как в текущем каталоге модулей (заданном через view::push_template_dir(...), так и в общем каталоге модулей).
  • Добавлен еще один небольшой патч ядра смарти. Дело в том, что TinyMCE часто преобразует двойные кавычки в HTML-сущность (какое противное слово) ". Например, если попытаться создать ссылку и в качестве адреса воткнуть смарти-тэг {my_tag action="get_url"}, то эта строка будет преобразована в {my_tag action="get_url"} и в результате смарти споткнется и, в лучшем случае, выдаст сообщение, что экшен "get_url" не найден. В худшем же он вызовет дефолтовый экшен tag_index() и будет долго ржать с разработчика, который никак не может понять в чем же глюк.

    Патч исправляет эту ситуацию  - удаляет в значениях всех параметров ведущие и завершающие " при этом только если они присутствуют оба. Все ", обнаруженные внутри значений параметров, остаются без изменений.
  • исправлена ошибка, когда для общих шаблонов дизайна, при отсутствии шаблона выдавалась просто пустая страница. Теперь смарти выдает стандартное сообщение об отсутствующем шаблоне.

Модуль blog

  • смарти-тэг {blog action="list"...} теперь имеет дополнительный атрибут - template (по-умолчанию = 'default'), который определяет шаблон, используемый для построения списка статей. Значение фактически представляет собой имя файла (без расширения) из папки /modules/tpl/lists/. Если указанный шаблон не найден, будет использован шаблон default.

    Внимание: при генерации списка статей блог теперь автоматически подключает к странице стилевой файл, расположенный в папке сайта /modules/blog/tpl/lists/ и имеющий имя используемого файла-шаблона с расширением '.css'.

    Пример: в смарти-тэге параметр template равен 'my_list'. Если файл my_list.tpl найден (в папке сайта /modules/blog/tpl/lists/ или в одноименной папке движка) , то он будет использован в качестве шаблона для генерации списка статей и к странице будет подключен стилевой файл /modules/blog/tpl/lists/my_list.css. Если же шаблон не найден, то будет использован файл default.tpl и стилевой файл default.css, расположенные в тех же папках.
  • Таблица модуля lists теперь имеет дополнительное поле template, позволяющее задать шаблон для построения списка статей.
  • В редакторе контента страниц со списками статей добавлен выпадающий список для выбора шаблона для генерации списка.
  • Теперь при отправке комментариев работает защита от флуда.

Модуль redirector

  • Добавлен смарти-тэг {redirector action="encode_url" url='http://yandex.ru/?ref_id=abcdef345'}, который генерирует полноценный URL для вызова экшенса _redirector/go/... и выполнения редиректа на переданный адрес. Целевой адрес шифруется, для скрытия реального адреса перехода.

    Внимание! Значение параметра url желательно заключать в АПОСТРОФЫ, т.к., при использовании двойных кавычек, смарти тупит и воспринимает внутренние знаки "равно" как разделители параметров. Такое же поведение наблюдается и в случае, когда параметр не заключен в кавычки вообще.

  • для обслуживания вышеуказанного смарти-тэга в модуль введен новый экшенс - go, который расшифровывает, переданный в строке адреса URL и выполняет немедленный редирект на него.

Модуль админки

  • мелкие исправления, связанные с переносом jquery-ui в область, доступную другим модулям (не только админке)
  • исправлена ошибка - в редакторе страниц в списке выбора шаблона страницы отображались только шаблоны дефолтовой темы сайта. Теперь отображаются шаблоны темы текущего пользователя.

    Внимание! Тут есть косяк. В идеале наборы шаблонов во всех используемых на сайте темах должны совпадать, вне зависимости от используемой пользователем темы. Над этим еще нужно думать.

Модуль menu

  • теперь ссылки активных пунктов (вся иерархия) получают атрибут class="active"

Модуль statist

  • список масок исключаемых страниц теперь хранится в конфиге сайта (БД). Раньше хранился в файлах.

Модуль капчи

  • добавлена принудительная перезагрузка картинок, т.к. в аякс-окнах они не перезагружались (по крайней мере в Опере).

Модуль mail_form

  • добавлен модуль, позволяющий пользователям отправлять е-мэйлы авторам комментариев и статей (да и вообще кому угодно) прямо из специальных форм сайта.

Теги: cms, изменения

Просто совет
Два месяца бесплатного использования VPS-сервера с 20Гб SSD на борту. Интересует?
Тогда жми сюда.
Твиттер-лента
Follow TanitaCMS in Twitter