QCubed 2.0.1 Development Release (released June 30, 2010)

Controls:

  • Added all jQuery UI widgets as QCubed controls (#584)
  • Added jQuery Resizable implementation (#520)
  • QDialogBox
    • Modal property + hidden by default (#553)
    • Width property (#544)
  • Date/Time controls:
    • DateTime setter for QDateTimeTextBox (#562)
    • dateFormat for QCalendar (#567)
    • Improved QCalendar - new properties (#539)
  • Define the CSS class of control wrappers (#585)
  • Fixed error in panel validation (#539)
  • QCheckbox/QRadiobutton submission issue (#551)
  • Investigate making QControls work without javascript (not implemented yet; started in #37)

Data adapters:

  • New, EXPERIMENTAL database adapters:
    • Oracle adapter (#29)
    • Postgre-PDO adapter (#427)
    • SqLite3-P DO adapter (#547)
    • Informix-PDO adapter (#549, #550)

Javascript / Client Side:

  • Remove unused event.js (#453)
  • Force extra semicolon at end of script (#490)
  • Make example's index.php work without javascript (#528)
  • QRegisterClickPositionAction should use jQuery (#533)
  • EventName refactoring for all events (#577)

Other:

  • Fixed Plugin Manager (#572)
  • Wrong require statement in Config Checker (#571)
  • Includes all fixes from QCubed 2.0.0 and 1.1.2

QCubed 1.1.2 Stable Release (released June 30, 2010)

Code Generator:

  • Many-to-many GUI: using a multiple selection listbox by default (#294)
  • Improve PHPDoc comments for generated metacontrols (#332) and form drafts (#333)
  • FormBase - codegen templates need to include parent::Form_Create (#386)
  • Fixed generated MetaAddEditLinkColumn when dealing with existing query parameters (#472)
  • Cancel button now works in drafts (#469)

QQuery:

  • Supporting aliases for self-joins (#321)
  • QQLimitInfo now has a get method (#380)

Controls:

  • QDataGrid:
    • New column type - QCheckBoxColumn (#364) and AcceptChanges? functionality for it (#582)
    • Cleanup for Filters in Meta Data Grids (#431)
    • Support for restoring custom filters (#478)
    • Access to filter controls (#564)
    • Better control over the reset button in QDataGrid (#566)

Data adapters:

  • SQL Server 2005/2008 adapter improvements (#405)
  • Postgre Adapter: Problem with pg_query (#543)

JavaScript / Client side:

  • Ability to add External JavaScript files (#362)
  • Bug with rendering a double call of qc.pA (#408)

Examples / Documentation:

  • Fixed php short tags in examples header (#435)
  • "View Source" in examples not working on some Windows installs (#541)

Other:

  • Complete rewrite of the localization code - now completely extensible (#359)
  • Improved installation validator:
    • better logic for magic quotes verification (#429)
    • skipping non-existing database connections (#430)
    • formbase_classes_generated is now checked if it's writable (#491)
    • VIRTUAL_DIRECTORY is now honored in config checker and examples (#546)
  • QDateTime:
    • Add full timezone display support (#441)
    • Ability to convert QDateTime's timezone (#442)
  • Removed unneeded globals in QFormBase (#421)
  • Includes all fixes from QCubed 1.1.1 and 1.0.3

QCubed 1.0.3 Legacy Maintenance Release (released June 30, 2010)

Fixing crashes and high-priority blocking issues:

  • Fixed the elusive fatal error on Firefox on a Mac (#134)
  • QType::Cast can't cast some floats to string (#375)
  • QI18n crashes on corrupt cache (#555)
  • QSoapService compatibility with PHP 5.3 (#316)
  • Ajax error messages don't appear in IE / other browsers (#432)

Functionality issues:

  • Move Handle: Specifying which controls to move does not work in chrome (#233)
  • "Nesting level too deep" in the error dump utility (#287)
  • GenerateQueryString doesn't account for arrays in $_GET (#389)
  • Fix PDF MimeType (#471)
  • !QControlProxy example broken in IE (#474)
  • IsRemoteAdminSession not compatible with ipv6 (#475)
  • QButton: support HtmlBefore and HtmlAfter (#554)
  • QEmailServer:
    • real quoted printable support (#558, #575)
    • Strange characters appear when inserting special characters in an email subject (#220)
    • Add blank line support (#439)

Other:

  • Includes all fixes from QCubed 1.0.2

QCubed 2.0.0 Development Release (released March 25, 2010)

New Features

  • Complete rewrite of the AJAX infrastructure on top of jQuery (#434, #444, #447, #532)
    • Remove logger.js (#455)
    • jQuery runs in compatibility mode (#477)
    • Event bindings in .ready (#482)
    • Initial QApplication::ExecuteJavascript? inside .ready (#522)
    • Bring back hidden form elements (#531)

Controls

  • Control rewrites to use jQuery:
    • QCalendarPopup(#448)
    • QDialogBox (#451), and introduce javascript-based open/close (#479)
    • QControlProxy (#473, #481)
    • QImageRollover + new example for it (#461)
    • QTextBoxBase::Select (#458)
    • QControlBase::Focus (#496)
    • Replace listbox javascript with the one from jQuery (#454)
    • Replace QCodo custom JS drag-and-drop with jQuery drag-and-drop (#452), bring back AddControlToMove

(#511)

  • Eliminate QRadioButton::GetJavaScriptAction? (#459)
  • QCheckBoxColumn: fix select all (#467)
  • Datagrid sorting doesn't work (#476)
  • QFileAsset:
    • issues in QPanels (#221)
    • issues with jQuery-based QDialog (#480)

Documentation

  • Fixed scrolling example (#340)

Other

  • New action type: QCssAction (#495)
  • Keypress event handling (#499)
  • Error dialog does not pop up in IE (#322)
  • Includes all fixes from QCubed 1.1.1 release

QCubed 1.1.1 Stable Release (released January 21, 2010)

New Features

  • Global QTimer class for lightweight performance measurement (#390)

Database adapters/Codegen/ORM

  • SqlServer2005/8 Adapter: Support for column comments (#405)
  • Use of database column comments for code-generated ORM class properties (#415)

Controls

  • QDataGrid:
    • QDataGrid::SetFilters() failing for TextFilters (#399)
    • QDataGrid filter doesn't render on reverse QQReverseReferenceNode (#416)
  • Supporting images on QButtons through HTML <button> tag (#403)

Plugin Ecosystem

  • Issues during plugin installations with nested folders (#407)
  • Plugins - Make examples/ and includes/ components optional (#397)
  • Update QArchive to access plugin archive extraction errors (#411)

Documentation

  • PHPDoc-style documentation for all QControls for better code completion (#207)

Design

  • QCubed logo not shown in the start_page.php footer (#396)
  • Slight visual improvements for plugin manager (#409)
  • Save/Cancel buttons don't look good on form drafts (#410)

Other

  • Upgrade to latest jQuery (1.4) and latest jQuery UI (#428)
  • PHP 5.3 Compat:
    • function set_magic_quotes_runtime() deprecated (#376)
    • Unit testing framework (Simpletest) throws warnings (#385)
  • Minor typo in QType (#374)
  • QSoapService produces an invalid output because there's an extra tab output somewhere (#370)
  • QCache::SaveData() directory creation code to be replaced with recursive mkdir (#387)
  • Includes all fixes from QCubed 1.1 and 1.0.2 releases

QCubed 1.0.2 Legacy Maintenance Release (released January 21, 2010)

Codegen/ORM/Database adapters

  • Many-to-many references were broken (#365)
  • QMySqliDatabaseField broken for custom queries (#420)

Controls

  • Paginated controls: Validate Page number in QPaginator (#117)
  • Delete button translation broken (#418)
  • Wrong Rich Text Format mime type in QMimeType (#426)

Other

  • PHP 5.3 compatibility:
    • QSoapService (#316)
    • SQL Server database adapters - PHP 5.3 / NotEqual? Fix (#401)
    • toString() bug in QDataGridBase (#369)
    • QDateTime:
      • Better backward compatibility with QCodo and earlier releases: QDateTime toString() workaround (#384

and #290)

  • Add() and setTime() are incompatible with base class (#401)
  • QDateTime legacy did not have a qFormat() method (#400)
  • QType::Cast can't cast some floats to string (#375)
  • Respecting the setting for level of error reporting (#383)
  • Includes all fixes from QCubed 1.0.1 release

QCubed 1.1.0 Development Release (released November 10, 2009)

Project-wide Infrastructure:

  • Integrate SimpleTest unit test framework (#94)
  • Light integration of jQuery: easy to include jQuery, but not mandatory for your QForms (#183, #297)
  • New directory structure that ensures security and provides for ease of future upgrades (#230, #262, #275,

#281)

  • Plugin manager: support for installing and uninstalling QCubed extensions (#272, #274, #291, #292, #305)
  • Configuration checker: a tool that runs when you first install QCubed and verifies the prerequisites, also

helping you configure QCubed settings (#296)

Codegen and DB Adapters:

  • Support for PHP-based codegen templates (#6)
  • Support for multiple type table suffixes (#255)
  • New JSON extension for codegen templates (#284)
  • Time columns used to display as dates by default (#158)
  • ORM object initialization with default values as specified in the DB fields (#317)
  • MySQL Adapter: using database field comments as code comment annotations (#238)
  • SQL Server DB Adapter
    • New adapter for SQL Server 2005/2008 (#327)
    • Possibility to use a different date format (#288)
  • MetaControls check for unique constraints on save (#319)
  • Codegen: small additions to QTable - GetColumnByName, HasColumn, LookupColumnPropertyName (#348)
  • Codegen: modularization of code generated file permissions (#324)

QForms Infrastructure:

  • Form Base is back and it works with MetaControls (#33)
  • Attributes of the <form> tag can be overridden (#7)
  • Use spl_autoload_register instead of autoload (#36)
  • Natively supporting servers with Magic Quotes turned on (#240)
  • AutoRenderWithNameChildren property for QPanel (#286)

Controls:

  • Paginated controls:
    • Integrated QFilteredDatagrid (#34)
    • Add WaitIcon suppport to QPaginators (#23)
    • Supporting row actions for QDataGrid (#101) and an example for it (#210)
    • Allow conditions and clauses in MetaDataGrid (#169)
    • Display bools in datagrids correctly (#295)
  • QFileAsset:
    • New $strRandomFileName (#248)
    • New optional limits on upload file size (#304)
  • New control: dynamic QTreeNav (#30)
  • Integrated jQuery visual effects (#183)
  • Per-control support for custom CSS stylesheets (#256)
  • Fire QChangeEvent on QDateTimeTextBox for Qcalendar date change (#329)
  • Allowing JavaScript actions on QHtml controls (#252)

Documentation:

  • New Example for QueryArrayCached (#132)
  • Documentation for qcodo_query_classes.tpl (#189)
  • QListControl, QListBoxBase, QListBox, QListItem documentation (#188, #193, #194, #196, #197)
  • QControl documentation (#195)
  • Examples missing tpl files (#289)
  • Don't allow the encrypt example to crash when no encryption libraries are installed (#298)

Misc:

  • Support translations to languages other than the default (#325)
  • QCache:
    • Add deletion support to QCache (#143)
    • QCache: support for hierarchy of namespaces (#201)
  • QType bug when casting to double or integer (#159)
  • Integrate QEmailStringAttachment into core (#264)
  • File Form State Handler: paths hard-coded in core distro files (#347)
  • Removed indexes that are not used in innodb example db (#165)
  • QCodo references in the code/folders should be replaced by QCubed (#63)
  • Includes all fixes from QCubed 1.0.1 release

QCubed 1.0.1 Stable (released October 19, 2009)

Codegen:

  • QuerySingle throws error instead of null on empty result set (#261)
  • QuerySingle sometimes returned first resultset record, sometimes - last (#234)
  • Form draft generator - translation support for edit links (#329)
  • Appropriately supporting time field in MySQL (#282)

Controls:

  • QDialogBox does not show correctly in IE8 Beta2 and Opera 9.22 (#131)

Documentation:

  • New QControlBase documentation (#207)
  • Typo on datagrid sorting example (#279)

Security:

  • Default index.php page should use CheckRemoteAdmin (#241)
  • Security: HTML escaping of ToolTip (#302)

Misc:

  • Includes all fixes from QCubed 1.0.0 release
  • Full compatibility with PHP 5.3 (#290)
  • QDateTimeSpan without GPL licence (#266)
  • QEmailServer, invalid Content-Length (#277)

QCubed 1.0 Stable (released April 21, 2009)

Controls:

  • QImageControl: cache did not work at all (#181)
  • QDialog box does not show up correctly in IE8 and Opera 9 (#131)
  • QFileAsset:
    • GetWebURL broken on Windows (#176)
    • Invalid caching of uploaded files (#216)
  • QFileAssetDialog: does not work inside a QForm (#182)
  • QDateTimePicker:
    • ability to translate month names (#177)
    • actual translation into Spanish (#178)
    • increasing default MaximumYear for QDateTimePicker (#180) and QCalendar/QCalendarPopup (#184)
  • Modal dialog box positioning is incorrect when rendered in an absolutely positioned QPanel
  • Drag-and-drop JavaScript errors (#218)

Codegen

  • QueryArrayCached does not work (#200)
  • Load and LoadBy generated functions now accept $objOptionalClauses param (#167)
  • Meta controls: syntax error in many-to-many generated controls around $strGlue (#198)
  • Dashes in column names are now explicitly disallowed (#175)
  • Codegen settings XML file: supporting both "qcodo" and "qcubed" as the format string (#219)

Examples / Documentation

  • Examples table relationship diagram (ERD) is outdated (#133)
  • Purged obsolete "migrating from Beta 2" example (#214)

Other

  • QEmailServer: Character encoding for plain-text messages (#217)
  • Correctly exiting after errors (#174)
  • Includes all fixes from QCubed 1.0 RC2

QCubed 1.0 RC2 (released February 16, 2009)

Examples / Documentation

  • New examples for QQuery:
    • subqueries with SubSql (#108)
    • conditional joins (#130)
    • multi-level ExpandAsArray (#164)
  • New example: persistent controls (#109)
  • New example: QRegex and QLexer (#110)
  • Update example on _type tables to explain support for more than 2 columns (#95)
  • Fixing explanation error in Reverse Relationship example (#163)

Database adapters, ORM, and QQuery

  • QQuery:
    • Multiple ExpandAsArray clauses cause duplicates (#151)
    • Validation for the number of parameters for LoadAll (#153)
  • Postgre database adapter: better handling of timestamps (#171)
  • Roundtripping "large" floats (doubles) and BigInts (#25)
  • Codegen for date/time fields:
    • labels were code-generated incorrectly on meta controls (#15)
    • "QDateTime to string conversion" error (#22)

QControls

  • QListBox: deselecting items through SelectedIndex=-1 did not work (#82)
  • QFileAsset: upload-delete-upload again is broken (#88)
  • QDialogBox:
    • QFileAsset does not work inside QDialogBox (#99)
    • QCalendar positioning is wrong inside a QDialogBox (#125)
    • QDialogBox does not show correctly in IE8 Beta2 and Opera 9.22 (#131)
    • Incorrect CSS style used for hiding dialog boxes (#135)
  • Paginated controls:
    • QDatagrid error when using base <html> tag (#124)
    • PHP Strict compliance for GetColumnAlias() declaration (#136)
    • QPaginator: validating page numbers (#117)
  • QPanel: fixed drag-and-drop for major browsers + "moveable" on-hover handles (#74)
  • Packed Javascript file _qc_packed.js was corrupt (#24)
  • Updated browser detection logic (#60)

Security

  • Cross-site scripting: Calendar (#62)
  • Cross-site scripting: Error page (#65)
  • PHP version headers were always sent (#66)
  • Cross-site scripting in QTextBoxBase was cast incorrectly (#104)

QEmailServer

  • Sending emails to addresses that contain allowed special characters (#27)
  • TestMode does not work (#87)

Other

  • Includes all fixes from QCubed 1.0 RC1

QCubed 1.0 RC1 (released November 2008)

QControls

  • QDataGrid:
    • Adding $_OWNER to datagrid column HTML parsing (#46)
    • Allowing other controls to cause the QForm to be rendered (specifically useful for Download as CSV links

in QDataGrids) (#46)

  • QIntegerTextBox: Supplying friendly errors for when text is entered (#46)
  • QCalendarPopup returns incorect dates (#48)
  • QImageRollover should not have direct calls to htmlentities (#53)
  • QTreeNav:
    • add WaitIcon support (#57)
    • allowing for separate Hover and Select CSS classes (#46)
  • Javascript: wrong use of Array's as associative arrays (#50)

Database adapters, ORM, and QQuery

  • MySQL adapter: Prevent crashes if columns are unusual lengths (#46)
  • MS SQL adapter:
    • Allow large column types (#46)
    • Replaced @@IDENTITY with SCOPE_IDENTITY() (#56)
  • Codegen:
    • many-to-many reference template typo (#51 and #70)
    • supporting new reserved words in PHP 5.3 (#52)
    • QDateTimePicker meta label generation is incorrect (#49)
    • GetColumnAlias() issue with PHP versions before 5.2 (#58)

Security

  • Preventing PathInfo injection attacks (#54)

QI18n (internationalization)

  • Supporting empty translation strings (#47)

If you're interested in a complete list of bugs that were considered for each of the releases, take a look

this Trac Report.