Roadmap

0.9.11

100%

7 closed (100%)   0 open (0%)

Release Notes for ZenMagick 0.9.11

ZenMagick 0.9.11 marks another milestone in the development of the new admin UI. The integration of the original zencart admin allows to manage your store from a single application.

A big change in system requirements is that ZenMagick now requires PHP5.3. There has been some internal discussion about this, but seeing the reluctance of users to upgrade and the failry widepsread availability of PHP5.3, this seemed like the right time to do.

Another major new feature is support for theme variations. This means ZenMagick now supports a hierarchy of up to three themes: default, active theme (same as zencart template) and an optional variation. Variations are full themes, although the typically would be mostly CSS and images (for example seasonal changes).

The generic MVC code now supports a new concept named blocks. Blocks are something like mini templates that can have custom properties. There will be some more detailed documentation soon. All sideboxes and banners are now implemented using blocks. Unfortunately the admin UI hasn't made it into this release, so for now the traditional zencart sidebox page will have to do.

An important new patch that was added in ZenMagick 0.9.11 is the one named "Adjust admin folder name for ZenMagick admin". The reason for this new patch is the change in zen-cart to force people to rename the admin folder. Since ZenMagick needs to read at least the admin configure.php file, it really needs to know that folder name. So, the result is a patch that patches a ZenMagick file! This is the only ZenMagick installation step you have to do in addition to the normal zencart installation when using the full installer. The ZenMagick Installation page is found in the zencart admin under Tools -> ZenMagick Installation.

As usual, this document does not list details for all changes. To get a complete list check please the CHANGELOG or git history.

New Features

  • admin: email preview for all email templates; supports custom email templates too (there is a new event to allow to provide your own model dummy data to make templates work)
  • added ZMPaymentTypes service that replaces ZMPayments - this means display of checkout_payments is now fully handled by ZenMagick (processing the payments form is not complete yet, though)
  • admin: allow to install/uninstall/upgrade multiple plugins at the same time
  • admin: add manage themes page - this allows to configure the active theme and also an optional variation
  • templates now can use $this->find() to find templates across all available template folder and filter using regular expressions
  • new file patch to allow to adjust the admin folder name for the ZenMagick admin UI

Plugins

  • General changes
    • add method to declare dependencies to other plugins
    • add new method to allow to create menu groups - useful for plugins that contain multiple admin pages
    • change the default loader policy to look for a lib folder in the plugin directory. That folder will then be loaded recursively
    • drop the plugin group folder - all plugins are now directly under zenmagick/plugins - this will eventually allow multiple plugin locations
    • enable plugins to use the normal get/set method to manage dynamic properties
  • Google Analytics
    • remove deprecated urchin code
  • Auto Login
    • Add support to accept the token via url (GET) parameter
  • Hoverbox3
    • change signature of hover3_product_image_link(), add $view as first parameter
  • Wordpress
    • simplify code
    • get rid of annoying undeclared property warning when rewriting urls
    • make things a bit faster
    • fix comments url
    • use current $view to resolve view templates
  • TinyMCE
    • add support for multiple instances per page
  • xinha
    • add support for multiple instances per page
  • Page cache
    • convert settings to plugin options
    • change event name that is fired after the contents of a cache hit has been returned
  • methodController
    • new plugin to illustrate some MVC concepts for plugins
  • unitTests
    • add option to hide error/exception messages
  • toggleZMThemes
    • renamed to toggleThemes and added to plugin release script, so it will be officially released for the first time

Storefront

  • display payment type in order history, checkout confirmation and other appropriate places
  • add CSS 'price' class to all price <p> elements in sideboxes
  • limit manufacturers sidebox to 1 to make it a drop down rather than a list
  • improved fixed the general form validation code
  • improved redirect code after login/logoff (return to the same page the login/logoff was done from)
  • make the new ZMShippingProviders service the default - that means shipping is now completely handled by ZenMagick code and also means the Ajax shipping estimator should now work correctly
  • add support for custom settings in theme.yaml - this means there is no need for a theme local.php if all you want to do is create some settings
  • display shipping provider errors rather than hiding them
  • display icons if available
  • fix: guest checkout address checks
  • add support for more error messages passed via url GET parameters (payment_error/error)
  • fix order confirmation email templates when no payment is available
  • add support for downloads to checkout_success and account_history_info

Other changes

  • New site to manage development: http://dev.zenmagick.org/
  • Improved build process
    • Automatic apidocs generation
    • Rebuild all included (packed) libraries
  • more code cleanup and flagging of code as deprecated
  • re-factor the email generation code - now the new email code is used in all places
  • add support for the HTTP HEAD method in ZMController
  • lots of cleanup in shopping cart related classes to streamline method names
  • fix: regression in generation in payment form validation JS
  • load url and sacs mappings earlier to allow custom code to properly modify default mappings
  • added new event APP_INIT_DONE that is fired after the initial load of core/mvc/app code and app configs
  • ZMPdoDatabase is now the default for both storefront and admin
  • simplified ZMFormData to make adding support for custom form fields simpler
  • preserver sort for for ZMProducts::getNewProducts()
  • removed setting 'isEnableThemeDefaults' - that means theme inheritance is always on
  • add locale specific folder to the template search path - that means the file with the most specific locale will be used
  • add theme admin
  • add sfYaml as alternative to spyc
  • added ZMTaxClass class and code to find a tax class (ZMTaxRates::getTaxClassForId())
  • admin: upgraded jquery to 1.4.3 and jquery UI to 1.8.6
  • allow to inject custom bean definitions via the setting 'zenmagick.core.beans.definitions.NAME' (with NAME being the name of the original bean)
  • add support for product status to search criteria
  • fix: use ZenMagick templates for all emails
  • improve ZMCategories service class
  • use DateTime class for all date/time properties in model classes and in/out of the database; deprecate UI_DATE_FORMAT and UI_DATE_FORMAT_SAMPLE
  • date format and format sample are now taken from the new locale code
  • renamed l10n.yaml to locale.yaml in all themes
  • simplify init overrides for admin - for upgrades this means that you need to manually delete admin/includes/init_includes/overrides/init_languages.php

0.9.12

100%

83 closed (100%)   0 open (0%)

Release Notes for 0.9.12

ZenMagick sees a lot of framework changes (and, again, more to come). The integration of symfony2 marks the beginning of deprecating a lot of proprietary code in ZenMagick in favour of using a well used and tested 3rd party library.

As with using doctrine as the preferred database layer, this will allow us to concentrate on things that matter more.

The biggest change, however, stems from retiring the ZMLoader class. It's still there for compatibility and migration, but the main code now uses the new ClassLoader. This brings some more changes, because dropping ZMLoader means also dropping the "'ZM' prefix" overloading of classes in ZenMagick.

This convenient, but rather limited, system is now replaced by using the Dependency Injection container in order to customize and replace core classes.

New Features

  • The core.php system of packaging all core files into a single file has been replaced by a system that compresses the main packages into .phar archives.
  • Improved event dispatcher, based on the symfony2 EventDispatcher
  • Refactored logging that now allows to register multiple log handler at the same time to log into different systems
  • rtl support
  • configurable session timeout for both storefront and admin
  • Full user/group based authorization in the new admin, incl. a UI for all aspects
  • Ability to intercept and cancel redirects (both ZenMagick and zencart redirects)
  • New admin dashboard widgets
  • Support for external JS and CSS resources (cdn)
  • and more

For a full list of bug fixes, features and additions please check the issue tracker for ZenMagick 0.9.12.

For upgrades please check out the Upgrade notes for ZenMagick 0.9.12.

0.9.13

100%

86 closed (100%)   0 open (0%)

Release Notes for ZenMagick 0.9.13

ZenMagick 0.9.13 continues the refactoring of code and integration of even more Symfony2 components. In addition there have been some great changes to streamline how things work. One good example is certainly changing theme.yaml, plugin.yaml and global.yaml to a single consistent format.

ZenMagick now uses swiftmailer to send emails rather than the outdated zencart code. However, emails send from zencart code itself still use the legacy code.

Most, if not all, available services are now available via the dependency injection container using symbolic names. This will make moving code around a lot easier as it won't break things again.

For a (almost) full list of changes please check the list of bugs/features and tasks associated with this release.

0.9.13.1

100%

1 closed (100%)   0 open (0%)

Release Notes for ZenMagick 0.9.13.1

This is a bug fix release with a fix for a single, critical bug. The PhPassAuthenticationProvider class will report any given password as valid and therefor allow to login with any given password. Please note that this does not compromise existing or new passwords. It is strongly recommended to upgrade from 0.9.13 to this version.

0.9.14

89%

62 closed (89%)   8 open (11%)

0.9.15

8%

3 closed (7%)   38 open (93%)

1.0

3%

2 closed (3%)   68 open (97%)

Doctrine Integration

Steps to integrate the Doctrine ORM into ZenMagick

20%

2 closed (20%)   8 open (80%)

Doctrine

Notes to integrate into future documentation

Timestampable listener

This extension allows us to add timestampable properties to objects managed by the entity manager via the doctrine event system.

http://www.gediminasm.org/article/timestampable-behavior-extension-for-doctrine-2

Open Issues

  • character sets/collation?
  • entity location? we could use the current models as entities if we had the proper annotations
  • where we will initialize doctrine?
  • what methods will be exposed from Runtime? continue using getDatabase() ?
  • configuration format (read the inline comments)
  • caching options need to use array in development and testing modes and memcache/apc/xcache in production

Config Format

the simplest format that supports all the options needed:

doctrine:
  dbal:
    logging: true
    logger_class: Doctrine\DBAL\Logging\DebugStack
    connections:
      default:
        dbname: zenmagick # default could be zenmagick_production, zm_production
        host: localhost
        port: null
        user: root
        password: null
        prefix: zen_
        driver:  pdo_mysql
        charset: UTF-8
        unix_socket: null
        initQuery: null # init_query?
  orm:
    auto_generate_proxy_classes: true
    proxy_dir: proxies # inside cache dir, how should we specify that here?
    proxy_namespace: zenmagick\apps\store\proxies
    metadata_cache_driver: Doctrine\Common\Cache\ArrayCache
    query_cache_driver: Doctrine\Common\Cache\ArrayCache
    result_cache_driver: Doctrine\Common\Cache\ArrayCache
    #cache: # could/should be the cache drivers like above
    #  enabled: false
    #autoMap: #wrong place
    #  enabled: true
    mappings:
      zenmagick:
        type: php #it's almost like php, could convert all current dbmappings to doctrine php style
        dir: config/db_mappings.txt # not really a directory :)
        #file: config/db_mappings.txt  # could use file instead?
      doctrine:
        type: annotation
        dir: shared/store/zenmagick/apps/store/entities/
    entity_managers:
      default:
        connection: default

Initial Migration Strategies

  • convert service classes to use repositories internally

Nice Stuff

  • Gedmo Timestampable behaviors for fields with created/added/modified/

ZC Admin Integration

Integrate ZenCart style admin pages into ZenMagick admin

80%

4 closed (80%)   1 open (20%)

ZC Storefront Integration

support ZenCart pages within a ZenMagick wrapper (similar to the wordpress integration) or standalone

88%

3 closed (60%)   2 open (40%)