@quickapps quickapps released this May 27, 2015 · 294 commits to 2.0 since this release

Assets 3

Here is it, the second beta preview of QuickAppsCMS. Although this release is mainly focused in polishing UI look and bug fixes, it includes some new and exciting features. Below a list of changes introduced in this release.

New Backend Theme

A new and gorgeous backend theme has been introduced based on AdminLTE 2. Fully responsive and multiple colors schema available.

Introducing AOP (Aspect-Oriented Programming) API

The GO! AOP framework has been introduced as part of QuickAppsCMS's core, this brings customization to a whole new level. The old fashion alter() events are no longer supported in favor of AOP method interception.

What is AOP?

Aspect Oriented Programming (AOP) is a methodology meant to implement new aspects in software component using external components, but without altering the code that implements the core functionality.

  • Manuel Lemos

Check GO! AOP documentation for further details: http://go.aopphp.com/docs/introduction/

Content Types Permissions

Now is possible to restrict who can edit, create, translate, delete or publish contents of certain types. These permissions are assigned per Role basis; this allows you to create complex organizations where for instance, you may have a process in place where editors produce content, but only the leader editor can decide if and when it is published.

Customized Content Extension

In QuickAppsCMS every content has its own URL that follows the pattern {content-type-slug}/{content-slug}.html (e.g. /article/my-first-article.html. Now is possible to change the default .html extension used when generating such URLs. You must simply define the CONTENT_EXTENSION PHP constant in your site's bootstrap (/config/bootstrap.php). For example, changing extension from ".html" to "/":

define('CONTENT_EXTENSION', '/');

Now every content's URL will look as: /article/my-first-article/

New CAPTCHA plugin

A new plugin has been introduced for manage CAPTCHA workflows (validation, form inputs, etc). This plugin provides its own API for handle what we call "Captcha Adapters", developers can extends this API by creating reusable Captcha adapters.

New Media Manager plugin

The Media Manager plugin allows you to upload, manage, and display files from your server directories. The built-in Wysiwyg editor relies on this new plugin for handling attachments and linking to content stored in you server file system structure.

Improved Block API

Block API has been reviewed, it do no longer relies on the Event System for handling blocks lifecycle. We have introduced Widget objects, creating new blocks is just as easy as creating a class extending Block\Widget base class. Read the documentation for more details.

Improved Field API

Similar to Block API the Field API has been reviewed as well, it do no longer uses the Event System for controlling Fields lifecycle. Field Handlers are now simple classes extending the Field\Handler base class, creating new Fields has never been easier. Check the documentation for further details.

In the other hand, both EAV and Field API has been optimized for reducing the number SQl queries required to render each Field ("virtual columns" for EAV).

Core Plugins as Packages

QuickAppsCMS's core plugins has been splitted into independent GitHub repositories, this allows developers to use some of the QuickAppsCMS features into their projects out of the scope of the CMS itself. All plugins has been reviewed and refactored in order to reduce dependencies so they can be used by their own. These plugin can be found at official plugins account: https://github.com/quickapps-plugins

@quickapps quickapps released this Apr 20, 2015 · 596 commits to 2.0 since this release

Assets 3

The QuickApps core team is excited to announce the release of QuickAppsCMS
2.0.0-beta1. QuickAppsCMS has been entirely rebuilt from scratch based on
CakePHP v3.0. This major release causes QuickAppsCMS to be incompatible with any
previous version, however we are introducing several exciting new features, all
aimed to facilitate developers to extend this platform.

Below is the list of new features and changes introduced in this major version. For
more specific details take a look to the new QuickBook.

CakePHP 3.0

QuickAppsCMS has been rebuilt from scratch based on the brand new CakePHP v3.0. We
have taken advantage of the new CakePHP features such as ORM, Event System, etc. to
incorporate them into QuickAppsCMS.

The new version of QuickAppsCMS has been designed to work as a standalone
application that can be installed using Composer. However you can "extend" its
functionalities by creating and installing new plugins or themes. QuickAppsCMS
introduces almost zero conventions in addition to CakePHP's, so creating new plugins
for both platforms is exactly the same.

Composer Compliant

QuickAppCMS 2.0 is fully compliant with Composer's packages and CakePHP's community
plugins. Plugins can be installed using an interactive Web UI. Although package
dependencies are fully supported, QuickAppsCMS will not install those dependencies
as Composer does.

Plugins & Themes

As introduced in CakePHP 3.0, plugins and themes are now the same. Nonetheless, in
QuickAppsCMS any plugin suffixed with the Theme word will be automatically
considered a QuickAppsCMS Theme.

The old <PluginName>.yaml configuration file has been replaced by composer.json.
Now building plugins/themes either for QuickAppsCMS or CakePHP is exactly the same.

Check Composer installation instructions available at this link.

jQuery & Bootstrap

Twitter Bootstrap & jQuery libraries are now included, by default, on every
QuickAppsCMS installation. Furthermore, all the templates or any HTML code generated
automatically by QuickAppsCMS will follow Bootstrap conventions (CSS class names,
Grid system, etc). Likewise, every JS script automatically generated by QuickAppsCMS
is created with jQuery in mind.

Two new plugins have been included (Bootstrap & jQuery) for dealing with such
libraries, providing a few generic helpers to assist you.

New Hook System

A more flexible and consistent Hook System has been built on CakePHP's Events
System. Triggering or creating events has never been easier. Attach the new
HookAwareTrait trait to your classes and your are ready to go:

$this->trigger('MyEventName', $arg1, $arg2, ..., $argn);

This trait is by default attached to Controller, Helper and View classes. Check the documentation for more details.


Shortcodes system has been rebuilt as well, changing the way they work and how they look:

{my_shortcode color=red} Content of my hook tag {/my_shortcode}

Shortcodes are now globally parsed before content is presented to users, this allows you to use shortcodes absolutely anywhere you wish; in yout contents, in your template files, etc.

Check the Shortcode API.

EAV & Field APIs

QuickAppsCMS's flexibility comes mainly from its Field API (a.k.a. Drupal's CCK),
which allows to create and define virtually any content type. Although this API
worked just fine in early version of QuickAppsCMS, its complexity was its major
weakness; creating new Fields was a complex task.

In v2.0 a new EAV API has been introduced, which provides a generic implementation
for EAV data model. The Field API has been rebuilt on top of this new API in
combination with the new Hook System. Furthermore, several utility classes has been
introduced to assist you when creating new Fields.

Check the Field API documentation for further details.

User Notification API

A new Notification API has been introduced in QuickAppsCMS 2.0 to better deal with
mailing users. This API provides a very simple mechanism for defining and sending
email messages to any registered user in the system, for example:

$user = $this->Users->get($id);
$result = NotificationManager::welcome($user)->send();

Check Notification API documentation.

Search API

The new Search API allows entities to be search-able through an auto-generated index
of words. It also provides searching methods for filtering Entities using human-
readble criteria, for instance:

$criteria = '"this phrase" OR -"not this one" AND this';
$nodes = $this->Nodes->search($criteria);

Search Operators

An Operator is a search-criteria command which allows you to perform very specific
filter conditions in your SQL queries. An operator is composed of two parts: a name
and its argument, both parts must be separated using the : symbol, e.g.:

// operator name is: "created"
// operator argument is: "2013..2016"

And it can be used as follow:

$criteria = 'created:2013..2016 AND "has this title"';
$nodes = $this->Nodes->search($criteria);

Check the Search API documentation

Block & Region APIs

The Block API has been rebuilt. It is now more flexible and robust, allowing to
create Widget blocks in a simple way. Also, the way blocks are rendered in your
themes has changed:

echo $this->region('left-sidebar');

The new Region API allows to do nifty things such as combine two or more regions, or
limiting the number of blocks it can hold:

echo $this->region('left-sidebar')

Checks the designer guide for further information.

What's Next

This beta release will be the first of two Beta releases, meaning there will be one
more Beta version and at least one RC version before releasing the final and stable
version of QuickAppsCMS v2.0. Although most of the initially planned features have
already been implemented in this release, the feedback received will help us
determine if more features will be included in the future.

Future releases will focus on:

  • API stabilization
  • Bug fixes
  • Creating new test cases
  • Keep working on the QuickBook

P.S.: We are also looking for translators as the only currently available language is English (Your help translating would be well received).