Fork me on GitHub

QuickApps CMS v1.1 - Final

published by admin on Nov 19, 2012 00:03 | 2 comments

The QuickApps CMS development team is happy to announce the release of QuickApps CMS 1.1-FINAL. This release contains some really interesting new features and improvements. Check the migration guide if you're upgrading your QA installation. A quick list of changes in 1.1-FINAL:


  • New modules/themes directory. Powered by GitHub.
    Allow users to easy search, download and install modules or themes!.
  • Reorganizing Modules & Themes GITHUB repos:
  • Minor bug fixes
  • New method FormHelper::helpBlock()
  • New option for Form inputs `helpBlock`, allows to insert help blocks right after input. e.g.: $this->Form->input('', array(..., 'helpBlock' => 'Insert your name here'))
  • New CCK Search API allows you do conditionals find() using CCK fields as part of your conditions. info
  • Breadcrumb system reviewed
  • New API methods for display-modes handling. Allow to register new modes, remove or overwrite existing ones:
    • QuickApps::displayModes()
    • QuickApps::registerDisplayMode()
    • QuickApps::removeDisplayMode()
  • LayoutHelper::meta() now accepts custom html meta-tags.
  • LayoutHelper::meta(), automatically adds `charset` meta
  • Deprecated methods:
    • LayoutHelper::userAvatar(), use UserHelper::avatar() instead
    • LayoutHelper::menuNodeChildren(), use MenuHelper::menuNodeChildren() instead
    • LayoutHelper::menu(), use MenuHelper::render() instead
    • LayoutHelper::toolbar(), use MenuHelper::toolbar() instead
    • LayoutHelper::blockPush(), use BlockHelper::push() instead
    • LayoutHelper::emptyRegion(), use BlockHelper::regionCount() instead
    • LayoutHelper::blocksInRegion(), use BlockHelper::regionCount() instead
    • LayoutHelper::blocks(), use BlockHelper::region() instead
    • LayoutHelper::block(), use BlockHelper::render() instead
    • LayoutHelper::getNodeType(), use NodeHelper::getAttr("node_type_id") instead
    • LayoutHelper::nodeField(), use NodeHelper::getAttr() instead
    • LayoutHelper::renderNode(), use NodeHelper::render() instead
    • LayoutHelper::renderField(), use NodeHelper::renderField() instead
    • TableHelper::create(), use TableHelper::render() instead
  • New method InstallerComponent::rmkdir(), recursive make dir.
  • New CCK Field `FieldImage`
  • Core themes `Default` & `Admin` are now fully responsive. `Admin` theme was completely redesigned using Twitter Bootstrap

1.1 RC2

  • Adding more info related to current language in JS variable `QuickApps.settings.locale`
  • Permissions yaml entries are now translatable.
  • Several security fixes and improvements againts CSRF/XSS.
  • New C-hook callback added `black_hole_handler`, allow modules to implement custom logic when request get black-holed
  • New expressions added to the search engine:
  • `created`: Allow to filter nodes by date range, e.g.: created: [* TO now]
  • `modified`: Same as created. e.g.: modified: [1 January 2012 TO 31 December 2012]
  • `author`: Filter content by author email/id, multiple values allowed. e.g.: user:1,
  • FieldFile max upload limit, allow customized number of files.
  • Better handling of error messages during un/installation.
  • New method InstallerComponent::error()
  • New method InstallerComponent::logError()
  • New feaure `Maintenance IP`: IP addresses allowed to access the Front Office even if the site is disabled.

1.1 RC1

  • CakePHP core upgrated to 2.2 final
  • Time Picker support for FieldDate
  • Block API reviewed:
  • Ability to theme individual content type per view mode 
  • New utility method LayoutHelper::elementExists()
  • Added a "Permissions" shortcut link for each module in the modules administrator section.
  • Field API reviewed, simpler conventions and code rafactoring.
  • Search engine improvements. Support for RSS, AJAX and XML feeds. 
  • Deprecated `language:any`, use `language:*` instead.
  • view variable $Layout['viewMode'] is now $Layout['display'] (may affect some themes)

1.1 BETA

  • CakePHP core v2.2-beta [3]
  • Blocks-cache improvement, which reduces considerably the amount of SQL queries per request.
  • Better control over user's avatar and Gravatar.
  • Logins attempts feature for added security. Block visitors after certain amount of failed login attempts.
  • Multilingual Installation.
    • Since v1.1 all language packages will be included by default.
    • The old languages repo does not exists anymore.
  • New search URL pattern (old pattern deprecated), added the `search` word to URL. e.g.: `/search/text to search`.
  • Some visual changes on Default theme.
  • Several improvements in Translatable entries system.
    • Adding the concept of fuzzy entries. Each time the function __t() is used and no translation is found for the given string, it gets marked as fuzzy. This allows you to know every string in your site that has not been translated yet. In this way fuzzy antries may be considered as `suggested entries`.
    • You can export a list of all fuzzy entries as .pot to be translated/imported later.
    • Ability to import/export translatable entries.
  • Theming Nodes by Content Type.
    • Allow to use different render elements per Content Type.
    • Allow to use different layouts per Content Type. info
  • Fields now can be locked, so users cannot edit them. DB schema update required
  • Fields may define `entity_types` on their .yaml file. An array of entity types that can hold instances of this field.  If empty or not specified, the field can have instances in any entity type.
  • New `QuickApps::field_info()` which replaces the old `field_info` behavior-hook.
  • Detector method `is()` now supports multiple parameters.  e.g.: QuickApps::is('group.detector', 'param 1', 'param 2', ...)
  • New Menu helper class. More simple and easy to work with.
  • FieldFile now allows to implement custom display formats using special hook callbacks.
  • hookDefined() now supports Plugin-dot-syntax, if you need to check if an specific module has defined a certain method.
  • LayoutHelper::userRoles() removed, use QuickApps::userRoles() instead.
  • Various coding style fixes


Migration from v1.0 to v1.1,
  1. Replace the entire `QuickApps` directoy.
  2. Clear all your cache files in `tmp/cache`, `tmp/persistent`, `tmp/models`
  3. Update of `webroot/.htaccess` required
  4. Update of `Locale/*` required
  5. Update you database schema, with the scripts below (examples using `qa_` as table prefix):
    1. ALTER TABLE `qa_fields` ADD `locked` TINYINT( 4 ) NOT NULL DEFAULT '0' AFTER `settings`
    2. CREATE TABLE IF NOT EXISTS `qa_search_data` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `foreignKey` bigint(20) NOT NULL COMMENT 'entity ID. e.g. node_id for Nodes',
      `field_name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'field''s name from the `fields` table, NULL means `all fields` which holds the information of every field',
      `entity` varchar(30) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Type of item. e.g. Node, User, Comment, etc',
      `data` text COLLATE utf8_unicode_ci NOT NULL COMMENT 'List of space-separated words from the item.',
      PRIMARY KEY (`id`)
    3. INSERT INTO qa_search_data(foreignKey, entity, data) SELECT node_id, 'Node', data FROM qa_nodes_searches;
    4. DROP TABLE `qa_nodes_searches`;
  6. Upgrade all you modules.
  7. Making your old v1.0 theme v1.1 compliant:
    1. Usage of deprecated method, Such as `$this->Layout->blocks('region-name')` is now `$this->Block->region('region-name')`. Or `if (!$this->Layout->emptyRegion('region-name')) { ... }` is now `if ($this->Block->regiounCount('region-name')) { ... }`
    2. Usage of deprecated variables, such as $Layout['viewMode'] is now $Layout['display']
    3. Meta-tags. Now `LayoutHelper::meta()`, automatically adds `charset` meta
  8. Recommended to update old URLs patterns:
    1. /s/something to search is now /search/something to search
    2. /d/node-slug.html is now /node-type-id/node-slug.html
  9. Login as admin and visit the following URLs:
  10. Go to Users/Permissions, and grant access as you wish for `Field: Image/Preview uploaded images`



« »


said on Dec 17, 2013 17:04

Bonjour nous vous remercions de votre jolie travail.
j'ai une erreur en installant votre template

Notice (8): Undefined index: slider_theme [ROOT\Themes\Themed\QuickappsCms\app\ThemeQuickappsCms\View\Elements\slider_block.ctp, line 2]

Dans l'attente d'une suite favorable nous vous remercions infiniment.

Lourenzo Ferreira

said on Dec 06, 2012 09:07

Great Work!
I'm a big fan of both Drupal and CakePHP, and is very good to see both concepts together in a single CMF, and getting more and more reliable.

« »

Add new comment