Beta release 0.9.3b

March 23, 2014

#fixed - Designer Tree Store now can import fields.

#Designer - Grid event list has been updated, cell events have been added.

#fixed Designer - Store Filter is now shown in extended components.

#Db_Object class improved - magic method_isset has been added, constructions like 'empty($object->property_name)' returned wrong result in previous versions.

#fixed Model::_queryAddQuery - Text search filter now doesn’t override field filters (Store_Filter).

#new configuration file option has been added - template_check_mtime (enabled by default). Now template cache depends on file modification date, there’s no need to clear cache every time you modify the template. This option slows application performance but facilitates updates. To increase performance set this option to false if you don’t modify templates.

#Page management module updated - collapse/expand buttons for page tree have been added.

#fixed menu editor - when menu is imported from site structure, field “Menu Title” is taken as the page header.

# New routing type “config” has been introduced (public module configuration based routing). It is defined in config/main.php - ‘frontend_router_type’ => ‘config’. If the first part of request url matches code (module code), relevant controller is started. This type of routing allows access only to controllers listed in config, as opposed to “path” type routing (more in "Routing in DVelum").

#Localization editor interface has been made.At the moment, this functionality is limited to localization dictionary editing, ORM object localization management will be added later.

#updated - Db_Object::factory now can take the list of identifiers as argument (in this case the list of existing objects will be returned). This method greatly increases performance during object batch processing, as it makes only one query to obtain data.

#new JS-object for dynamic user access rights resolution has been added.


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'));
     });

#fixed SearchField component - now this component flushes store pagination with each new search query.

#filtering interface components functionality has been improved. Now filters load the first page of filtered results (you should clear cache in js/syscache directory for proper update of existing components).

#ORM validator has been updated. Now it should be chosen whether or not to set default value. In previous versions all text fields which are not required had empty string as their default value.

Important! Validator now is much stricter to default values. It may happen that your interface is unable to save data due to undefined default values. To solve this problem, define object default values where they haven’t been set properly. This change was caused by external connections deployment , current application can communicate with other applications, so stricter database level validation is implied. Pay special attention to object links. To provide backward compatibility optional links to the dictionary now may be null as well as an empty string.

Configuration file repair tool has been created. It is being launched during object settings saving procedure.

After system upgrade, configuration file repair tool should be launched to mend configuration files of objects created in previous versions: http://[yoursite]/[adminpath]/orm/fixconfigs.

#component app.objectLink.Field has been updated. Now object selector automatically closes list window after item is selected.

#fixed interface designer bug (grid column settings window, main table) - Copying of editing value to other cells when clicked is fixed.

#interface designer - collapse/expand buttons have been added for object tree.

#installer improved - system can be installed in aliased directories. Note that real server names (like myserver.com/dvelum_alias/) should be used in request, otherwise it will cause mod_rewrite error. “localhost” or IP-address should not be used.

#update - System objects localization has been separated from user ones. Localization of objects created manually won’t be lost during platform upgrade. On initial save action localization is stored in a separate file, new localizations are attached automatically.

#Db_Object improved - version control methods have been added:

  • publish - to publish changes;
  • unpublish - to cancel object publication;
  • getVersion - to get object version;
  • loadVersion - to load version data into the object;
  • rejectChanges - to reject unsaved changes;
  • saveVersion - to save new version of the object.

#models improved - getList method can take Db_Select_Filter object as filter. Filtering becomes more flexible.


$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);

#by demand of community interface designer now supports Grid Filters Feature:

Base controllers (Backend_Controller_Crud / Backend_Controller_Crud_Vc) also support such filtering in list actions by default.

Scheduled background task support is added, as well as task examples. Task can block concurrent launch, run in multiple threads, be totally background, support sending commands. Background task module allows to keep an eye on task state (more in "Background Task Launching").

Apart from media library, new filestorage component provides centralized file upload management.


$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, an interface component for importing tabular data, has been improved.

Interface initialization example can be found in Backend_Import_Controller. The component imports data from a file containing tabular data (xls, csv), helps associate expected types of data with rows and columns, indicate what values are required etc. It is rather scalable and can be easily extended. A detailed description will be provided later.

Experimental ORM object access rights management has been added. This option is enabled in ORM object settings. Privilege editing section is also supplied.

Pay attention that ACL functions on Db_Object level.

ORM logging interface has been improved. It’s now possible to switch between several log files:

#page editor has been improved - collapse/expand tree buttons have been added.

#fixed - problem with wrong prefix for a new table while importing table to ORM.

#fixed - event source code in event list interface now saves properly.

#updated - Zend_Mail classes are now part of installation package.

#Admin panel base controllers and code generator have been improved. There is now the exact list of allowed objects which can be accessed with linkedlistAction and otitleAction methods. The list is defined in Backend_Controller_Crud::$_canViewObjects property.

#Db_Object_Event_Manager event list has been extended.

Also a lot of minor bugs and faults have been fixed.

Code.google.com disabled publishing of updates. From this release on, version files can be found in sourceforge repository: https://sourceforge.net/projects/dvelum/files/

Previous versions are still available at: https://code.google.com/p/dvelum/downloads/list?can=1

The following documentation chapters added:

Background Task Launching;

Running unit tests;

Routing in DVelum.

Download DVelum 0.9.3.b