I'm happy to announce that 0.2.8 has been released. Given the changes and the current state of the framework, I figured it's silly to keep calling it a Beta 2 “Pre Release”. So I dropped the title, and 0.2.8 is basically just Beta 2. But of course, that doesn't we're going to stop trying to improve things and make it better! =)
_0.2.8 Highlights_
* *Final Cleanup -- the folder structures have gone through its final set of cleanups. You'll notice in particular that /codegen/ has been moved to /_devtools/, and that we added a new /includes/codegen/ directory. We have also added _README.txt files all over the place to help explain the folder structure a bit better.<br><br>
* *Easier Upgrades -- with the new folder structure, it should be a lot easier to upgrade from one version to the next from this point forward. I do apologize for the headaches upgrading has been in the past... but this should mark the last time we have restructurings/reorganizations outside of the qcodo core (/includes/qcodo), and especially with the new, easier way to make customizations across the board (including with the code generator, see below for more info), I really do hope the upgrade headaches should be finally done with.<br><br>Basically, unless you need to make fixes to a bug or would like to try and add functionality to the core, there is little reason why you will need to make custom modifications inside of the core (/includes/qcodo). Therfore, whenever a new version is released, all you would need to do is replace teh contents of /includes/qcodo, and that's it.<br><br>And in fact, whenever a new version makes any changes to files outside of core (which should be very rare), we will make specific notes about it in the release notes.<br><br>
* *CodeGen Customization -- you can now make customizations to the QCodeGen class, as well as make modifications to or add any additional templates. This is all done in /includes/codegen. See the _README.txt files in those folders for more information.<br><br>
* *Composite Controls -- we now have support for composite controls (e.g. controls that contain mulitple controls, its own set of event handlers, etc.). See <http://examples.qcodo.com/examples/composite/intro.php> for more info<br><br>
* *QPaginatedControls rearchitected -- QDataGrid and QDataRepeater as well as the paginator have been rearchitected slightly. Mostly internal stuff, so if you were doing more run-of-the-mill type stuff with those classes, it shouldn't break compatability. The main thing is that these controls are now utilizing the new composite controls functionality. Also, we've added a second paginator option, so that you can have your controls have two paginators (one on top and one on bottom). See section 6 at <http://examples.qcodo.com/examples/index.php/2> for more information.<br><br>
* *QImageLabel -- you can now dynamically generate image labels. You will need to provide the appropriate font files (either PostScript Type 1 or TrueType), and it uses the GD library to perform the image generation. It includes caching capabilities as well. See <http://examples.qcodo.com/examples/image_label/intro.php> for more info.<br><br>
* *QCryptography -- added a new utility class to help with cryptography. Uses the libmcrypt library, which ends up supporting any number of industry standard ciphers (we use TripleDES by default). See <http://examples.qcodo.com/examples/communication/crypto.php> for more information.<br><br>
* *New FormState Handlers -- you can now customize the way you want the formstate stored in your qforms (by default, of course, formstate is stored on the form, itself, as a hidden form variable). There are now options to store it in session, or to store it on the filesystem, or you can easily implement your own FormState handler and store it elsewhere, like the database. For added security, you can even encrypt the state (which uses QCryptography, of course =). See <http://examples.qcodo.com/examples/other/form_state.php> for more information.<br><br>
* *Better EncodingType support -- we've moved the QForm::XmlEncoding up to the QApplication level and have named it $EncodingType which makes a lot more sense. The form drafts also use $EncodingType in its generated <meta> tag.
And of course, there were minor bug fixes here and there as reported, and the Examples Site has been upgraded to 0.2.8 and has had new examples posted.
Please post/reply/shout/type any questions, issues or comments that you have.