Выпуск версии 0.9.3 beta

23.03.2014

Список изменений:

- исправлено - Designer Tree Store не может импортировать поля;

- доработан Designer - обновлен список событий для Grid, добавлены события ячеек;

- исправлено Designer - не отображается Store Filter в расширенных компонентах;

- доработан класс Db_Object - добавлен магический метод __isset, ранее конструкции вида empty($object->property_name) выводили неверный результат;

 - исправлено Model::_queryAddQuery - фильтр поиска по тексту перекрывал условия фильтрации по полям (Store_Filter);

- добавлена новая опция основного файла конфигурации template_check_mtime (по умолчанию включена). Кэш шаблона теперь зависим от даты модификации файла, теперь нет необходимости сбрасывать кэш при каждом обновлении шаблона, опция замедляет работу приложения, но облегчает процесс обновления. Для большей производительности, если вы не изменяете шаблоны установите опцию в false.

- доработан модуль управления страницами - добавлены кнопки сворачивания/ разворачивания дерева страниц;

- исправлен редактор меню, теперь при импорте меню из структуры сайта в качестве заголовков берутся названия из поля «Заголовок Меню»;

- добавлен новый тип роутинга «config» (роутинг на основе конфигурации модулей публичной части), указывается в config/main.php ‘frontend_router_type’ => ‘config’. Если первая часть запроса url соответствует code (коду модуля), запускается соответствующий контроллер. Данный тип роутинга отличается от роутинга с типом «path», тем что разрешает доступ только к указанным в настройке контроллерам (подробнее в разделе «Роутинг в DVelum»).

- добавлен интерфейс редактирования локализаций. На данный момент функционал ограничен редактированием словарей локализаций, позже будет добавлена возможность управления локализациями объектов ORM.

- обновлено - Db_Object::factory теперь может принимать в качестве аргумента список идентификаторов (в этом случае вернет список существующих объектов). Этот метод позволит повысить производительность пакетного получения объектов, объединив извлечение данных в один запрос.

- добавлен JS-объект для динамического определения прав пользователя:

 
var ps = Ext.create('app.PermissionsStorage');
    ps.on('dataLoaded',function(s){
       console.log(s.canView('Cache'));
       console.log(s.canEdit('Modules'));
       console.log(s.canPublish('Page'));
       console.log(s.canDelete('Other'));
     });

- исправлен компонент SearchField, теперь он принудительно сбрасывает пагинацию хранилища при новом поиске;

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

- обновлен валидатор ORM, теперь необходимо самостоятельно выбирать будет ли установлено значение по умолчанию для поля. Ранее для всех текстовых полей, у которых не установлен флаг «обязательное», выставлялось значение по умолчанию равное пустой строке.

Внимание, теперь валидатор более строго относится к значениям по умолчанию, возможны ситуации, когда ваш интерфейс перестанет сохранять данные, ссылаясь на отсутствие значения по умолчанию. Для устранения проблемы необходимо выставить значение по умолчанию для свойств ваших объектов, где они требуются, но не были установлены. Изменение принципов механизма валидации связано с добавлением внешних подключений, теперь подразумевается совместная работа с другими приложениями, что требует более строгой валидации на уровне БД. Особенно будьте внимательны со ссылками на объект. Для поддержания обратной совместимости необязательные ссылки на словарь теперь могут быть как null, так и пустой строкой.

Создан механизм исправления файлов конфигурации, который запускается при сохранении настроек объекта.

После обновления системы необходимо запустить механизм исправления файлов конфигурации старых объектов: http://[yoursite]/[adminpath]/orm/fixconfigs.

- обновлен компонент app.objectLink.Field, теперь селектор объекта автоматически закрывает окно списка после выбора нужного;

- исправлена ошибка дизайнера интерфейсов (окно редактирования колонок, основная таблица) - если начать редактирование заголовка и кликнуть на другой строке таблицы, то введенное название копируется в другую колонку;

- доработан дизайнер интерфейсов - добавлены кнопки сворачивания/разворачивания дерева объектов;

- доработан установщик, теперь возможна установка в директорию с alias, но это должен быть не localhost и не ip, т.е обращение должно быть к реальному server name вида myserver.com/dvelum_alias/, иначе будут проблемы с mod_rewrite;

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

- доработан Db_Object - добавлены методы для работы с версионностью:

  • publish - опубликовать изменения;
  • unpublish - снять объект с публикации;
  • getVersion - узнать версию объекта;
  • loadVersion - загрузить данные версии в объект;
  • rejectChanges - отменить несохраненные изменения;
  • saveVersion - сохранить новую версию объекта.

- доработаны модели - теперь метод getList может принимать Db_Select_Filter в качестве фильтра, что делает фильтрацию более гибкой:


$filters = array(
 new Db_Select_Filter('id' , array(1,2,3,4),Db_Select_Filter::NOT_IN),
 new Db_Select_Filter('id' , 10 , Db_Select_Filter::LT),
);
$data = Model::factory('User')->getList(false , $filters);

По просьбам сообщества в дизайнер интерфейсов была внедрена поддержка Grid Filters Feature:

Базовые контроллеры (Backend_Controller_Crud / Backend_Controller_Crud_Vc) в методах listAction теперь поддерживают подобную фильтрацию без дополнительных доработок.

Добавлена поддержка и примеры фоновых заданий запускаемых по расписанию. Задачи могут блокировать одновременный запуск, выполняться в нескольких потоках, работать полностью в фоновом режиме, поддерживать отправку команд и просмотр состояний в модуле управления фоновыми процессами (подробнее в разделе «Как запускать задачи в cron»).

Добавлен компонент filestorage, позволяющий централизовано работать с загружаемыми файлами без использования медиатеки.


$r = Registry::get('main','config');
$config = Config::factory(Config::File_Array, $r->get('configs').'/filestorage.php');

$storage = Filestorage::factory('Orm', $config);
$data = $storage->add('../data/testfile.txt');
$id = $data[0]['id'];

$storage->remove($id);

Доработан компонент интерфейса импорта данных importPanel.

Пример запуска интерфейса находится в Backend_Import_Controller, интерфейс позволяет осуществлять предварительную настройку импорта из файла с данными (например xls, csv), указать, в какой колонке, какие данные находятся, с какой строки начинать импорт, какие поля обязательные. Компонент легко расширяется, может принимать дополнительные поля для ввода. Более подробное описание работы чуть позже появится в разделе документации.

Добавлена экспериментальная поддержка распределения прав доступа к объектам ORM (опция подключается в настройке объекта ORM), добавлен раздел редактирования привилегий:

Обращаем внимание, что ACL работает только на уровне Db_Object.

Доработан интерфейс просмотра логов ORM, теперь можно переключаться между различными лог файлами:

- доработан редактор страниц - добавлены кнопки свернуть/развернуть дерево;

- исправлено - в некоторых случаях при импорте таблицы в ORM выставляется неверный префикс для новой таблицы;

- исправлено - дизайнер интерфейсов, в некоторых случаях не удавалось сохранить изменения в коде событий через интерфейс списка событий;

- обновлено - в состав дистрибутива включены классы Zend_Mail;

- доработаны базовые контроллеры административной панели и кодогенератор, теперь для доступа к данным объектов через методы linkedlistAction и otitleAction используется жесткий список разрешенных объектов, объявленный в свойстве Backend_Controller_Crud::$_canViewObjects.

- расширен список событий Db_Object_Event_Manager.

Исправлено большое количество мелких ошибок и недочетов.

code.google.com отключил возможность публикации закачек. Начиная с этого релиза файлы версий будут доступны в репозитории sourceforge: https://sourceforge.net/projects/dvelum/files/

Старые версии системы по прежнему доступны по адресу: https://code.google.com/p/dvelum/downloads/list?can=1

Добавлены документы:

Как запускать Unit-тесты;

Как запускать задачи в cron;

Роутинг в DVelum.

 

Скачать  DVelum 0.9.3b