QCubed 2.1.0 Stable Release (released March 24, 2011)
There are more than 70 bug fixes.
The following are the new features in this release (in the order of tickets in each group):
Javascript:
- Enable add External JS (#362)
- add low priority javascript (#635)
- Improve / Fix event trigger handling (use jQuery event functions) (#681)
- combine qcubed.js and control.js and get rid of _qc_packed.js (#805)
- Event/Action improvements: allow returning javascript objects/arrays/strings ... (#718)
Controls:
- New Control: Image Browser (#211)
- Create new QControl wrapper for jQuery Accordian (#462)
- user specified filter controls in the datagrid (#568)
- Periodic events triggering with the new QJsTimer control (#633)
- HtmlBefore and HtmlAfter are not honored in Render() (#661)
- QFloatTextBox,QIntegerTextBox : reduce code duplication and add a step interval property (#672)
- PbsQFileAsset Control (#711)
- Better integration of jQuery UI controls (#717)
- QSimpleTable - a new table control (#756)
- handle jQuery "property" events (#765)
- Make wrapper controls optional (#692)
- Ad an AddItems method to QListControl to add multiple items easily (#787)
- Execution of JavaScript before and after QXXXXAction on QControls (#788)
- QAccordion should track which item is open. (#790)
- Add HTML5 "search" input type (#791)
- Can't detect backspaces in fields (#723)
Databases and QQuery:
- Picking database columns for QQuery (#79)
- Query Profiler: add results of an EXPLAIN statement (#129)
- Proper Group By handling for databases other than MySQL (#270)
- optimization in InstantiateDbRow (#748)
- optimization in LogQuery (#751)
- optimization: minimize the array accesses in database adapters' GetColumn?() (#760)
- Adding DB-based session management (and form-state management) (#771)
- optimization: QueryCursor and InstantiateCursor methods (#759)
Codegen:
- Migrate Codegen Templates to PHP (#537)
- Feature request. Compability with php 5.3 (#646)
- optimization in InstantiateDbRow: avoid repeated string concatenations (#750)
- List Class names in AJAX drafts panel to show names in alphabetical order (#781)
- Modify codegen to create a list of icon names used by the JqUi buttons. (#804)
Other:
- add Last/First day of month function to QDateTime (#645)
- Make QApplication::GenerateQueryString more generic (#697)
- optimization: optional type argument for QDateTime (#757)
- EXPERIMENTAL - optimization: customizable behaviours for QType::Cast (#758)
- Integrating HTMLPurifier Library into QCubed (#766)
- Make number of items in form and panel draft lists configurable (#767)
- Integration of memcached support into QCubed (#770)
QCubed 2.0.2 Stable Release (released December 13, 2010)
- Performance: inserting JavaScript at the end of HTML document (#142)
- Control javascripts - improper placement (#636)
Documentation:
Controls:
- QPaginator doesn't work (#530)
- Supporting QListItem CssStyle (#569)
- QCalendar
- QDatePicker and QDatePickerDialog: wrong setter for Text property (#662)
- jQuery control wrappers:
- QFileAsset:
- Error when dynamically loading a QPanel inside a QDialogBox (#640)
- QDataGrid: improved wait icon support (#650)
- QListItem: unable to get SelectedItems when groups are used (#657)
QQuery:
- Supporting ORDER BY with a condition (#631)
- Allow identification of whether ExpandAsArray was used (#598)
- Read-only accessor for QQLimitInfo properties (#610)
Codegen:
- Generated FormBase classes should not do CheckRemoteAdmin (#612)
Other:
- Upgraded to jQuery 1.4.4 and jQuery UI 1.8.6 (#658)
- SQL Profiling improvements (#608)
- Plugin manager broken (#659)
- Ajax calls post back elements that it shouldn't (#648)
- QAlertAction encoding issue (#614)
- PDO adapter: transactions not working in some cases (#630)
- QDateTime parsing of incomplete dates (#666)
- Includes all fixes from QCubed 1.1.3 and 2.0.1
QCubed 1.1.3 Maintenance Release (released December 13, 2010)
Codegen:
- Codegen entering forbidden directories (#388)
- Trailing whitespaces issue (#607)
- FormBase templates need to generate calls to parent methods (#611)
- Hard-coded primary key (#623)
QQuery:
- AdditionalClauses stability issues (#570)
Other:
- Plugin installer: mkdir problem (#468)
- FCKEditor-related constant shouldn't be in the core (#609)
- Includes all fixes from QCubed 1.0.4 and 1.1.2
QCubed 1.0.4 Legacy Maintenance Release (released December 13, 2010)
International support:
Database adapters:
- InsertID problem with autoincrement bigint field (#653)
- Un-setting the Connected flag for database adapters when connection is closed (#579)
Controls:
- QFileAsset:
- QListItemStyle GetAttributes issue (#624)
Codegen:
- Documentation for generated meta controls (#602)
- Fix codegen for special foreign key labeling (#591)
Other:
- Graceful handling of session expiration (#423)
- Supporting new PHP 5.3 error types (#601)
- CheckRemoteAdmin: better support for local addresses (#605)
- Error reporting: Index Out Of Range exception was not initialized properly (#504)
- QEmailServer: EOL issue (#583). Note that QEmailServer is still unstable and we do NOT plan on supporting it in the future.
- Includes all fixes from QCubed 1.0.3
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
- Date/Time? controls:
- 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:
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:
Controls:
- QDataGrid:
Data adapters:
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:
- QDateTime:
- 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:
Other:
- Includes all fixes from QCubed 1.0.2
QCubed 2.0.0 Development Release (released March 25, 2010)
New Features
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:
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:
- 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:
- 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
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:
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
- 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:
- QFileAsset:
- 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:
- 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:
Security:
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:
- QFileAssetDialog: does not work inside a QForm (#182)
- QDateTimePicker:
- 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:
- 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:
- Postgre database adapter: better handling of timestamps (#171)
- Roundtripping "large" floats (doubles) and BigInts (#25)
- Codegen for date/time fields:
QControls
- QListBox: deselecting items through SelectedIndex=-1 did not work (#82)
- QFileAsset: upload-delete-upload again is broken (#88)
- QDialogBox:
- Paginated controls:
- 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:
- 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:
- Codegen:
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
