Studs MVC Framework+ Changelog version 0.9.8 (10/16/2006) * added language toggle to Golflog demo * added strip_tags to golflog string inputs to prevent XSS * added PlaceholderAwareProperties which will do parameter replacement on load * added support of type override on studs html:form taglib * added support for nested properties in studs forms by using an alternate character (•) for the '.', which is restored on form submit * calls to bubble_exception() now put an entry in error_log since there is a chance they won't make it up high enough to be visible * allow studs html:form taglib to generate form if not already present * add studs taglib for html:option * add spring MVC like action controllers (SimpleFormController) * added multiline to the studs html text tag to get textarea output * rename wrap() method to ref() for clarity * fix compatibility errors with PHP5 regarding passing by reference * add LogLevel TRACE * cleaned up the loading of the servlet context in extreme situations * fix problem with session cookie path when mod_rewrite is used * start session in Action when isTokenValid() is called, if not already started version 0.9.7 (07/20/2005) * Automatic reload of Studs configuration file if changed [Studs] * improved handling of DTD validation for web.xml and struts-config.xml [General] * get_qualified_class() migrated to Clazz::getQualifiedName() and optimized [Horizon] * umask() behaves consistently, globally setting the file create permissions [General] * confirmed that the ternary operator works in EL and documented it [Phase] * throw exception if web.xml cannot be read in the include path [Stratus] * it is possible to eliminate index.php from URL and use mod_rewrite instead [Stratus] * modified EL processing so that arrays can be referenced as foo.bar or foo[bar] so that cases where native arrays are used in place of HashMap will still comply with JSTL EL syntax [Phase] * changed from Hashtable to HashMap across application [General] * changes are detected in the Studs config files (struts-config.xml) and the ActionServlet is automatically reloaded if their timestamps have been modified [Studs] * fixed bug in Assert that caused assertFalse() to fail [Horizon] * reimplemented the phase string taglib [Phase] * fixed token handling in form taglib so that now they are usable [Studs] * redirect taglib can take url as body [Phase] * enabled more flexibility in specifying configuration directories [General] * halt with better message when servlet work directory is not writable [Stratus] * enabled handling of multivalued paramaters in Studs [Studs] * added HtmlCheckboxTag and HtmlPasswordTag [Studs] * ActionForm generator [Studs] * Fixed a parse error when ASP-style tags are enabled [Phase] version 0.9.6 (06/27/2005) * PHP5 compatibility, which included changes for new reserved words, handling of the E_STRICT deprecation errors [General] * Added more unit tests, including a mock for testing the Phase compiler [General] * Enhanced golflog application, adding delete for add editors [Examples] * fixed problem with BeanUtils#describe() that was causing a server error [Horizon] * fixed a problem with exception report that would bleed page content on top of error report [Stratus] * fixed FormatMessageTag taglibrary thanks to Timur Vafin [Phase] * added Studs template taglibrary, ported from Struts, thanks to Timur Vafin [Studs] version 0.9.5 (04/06/2005): * changed Object#clone() to Object#makeCopy() to support PHP5 [General] * changed clone() to wrap() to support PHP5 [General] * updated copyright to include 2005, correct e-mail address [General] * fixed collisions between generated function names in parent file and include file for Phase compiled files by wrapping functions in a namespaces [Phase] * fixed a dropped reference of the HttpSession because of incorrect use of a static variable in the getSession() method; also added creation time as attribute of session so session is aware of its state [Stratus] * fixed probem in HttpConnector#fatalErrorWatchdog which prevented the capturing of fatal errors in many scenarios [Stratus] * added several additional Studs taglibs, including html:cancel, html:select, html:optionsCollection [Studs] * addded scope support for ActionMessages so that they can be passed via the HttpSession and then cleaned up by the HtmlMessagesTag [Studs] * fixed problem with Studs param keys that used '.' as PHP transposes the '.' into '_' and therefore functionality such as "Cancel" was not working correctly [Studs] * implemented BeanUtils#copyProperties and BeanUtils#describe for copying common properties from one bean to another * added more uses of BeanUtils classes to replace procedural code blocks [General] * added a new example, golflog, which more widely demonstrates the use of Studs [General] * added file locking to the application context writer to prevent collisions [Stratus] * opened up application context for reading/writing in the PageContext [Stratus] * changed HttpServletRequest#getParameterMap() to return a Hashtable instead of a native array, so that the EL resolver could correct syntax for that was not consistent with Sun's EL [Phase] * reimplemented a PhaseException if attempting to set a property on a taglib class that does not exist [Phase] version 0.9.4 (09/13/2004) * On some systems, $_SERVER['QUERY_STRING'] is not set if a query string is not present, so santiy check was added to avoid a notice error [Stratus] * Fixed problem with the logic in the setSuspended() method of HttpServletResponse() which was discarding valid response output in cases when at least two internal forwards (ApplicationDispatcher#doForward()) were used consecutively [Stratus] * Added the calc.tld file to the repository by putting it in the directory with the class files and updated the build script to put it in the proper place when packaging [Examples] * Fixed missing exception in FileWriter when file cannot be opened for writing [Horizon] * Provide better error message when 'work' directory does not exist/is not writable [Phase] * Added a quick hack to allow the digester to check the validity of an XML document against a known DTD. Both the web.xml and struts-config.xml are now validated [Horizon, Studs, Stratus] * The retrival of the cached servlet context was fixed, so the servlet container no longer reinitiaizes itself on every request [Stratus] * Added html:link tag to studs taglib for generating global-forward and action-mapping aware links [Studs] * Corrected problem that was causing all servlets to be initialized twice if set to load-on-startup in web.xml [Stratus] * The phase parser now skips over tags which it does not know anything about, rather than throwing a fatal error attempting to call a method on a non-object [Phase] * The output buffering used to capture PHP fatal errors has now be reimplemented, this time capturing almost all possible errors, including the ones that could be thrown during servlet initialization if load-on-startup is used [Stratus] * Added preliminary unittest code which provides the very core TestCase, TestSuite, and a TextUI runner [Horizon] * Drastically cleaned up phpdoc comments and @package tags so as to produce consistent API documentation [General]