Jifty 0.70824 INSTALL ======= * WWW::Mechanize versions before 1.30 had broken gzip behaviour which broke tests - jesse * properly skip client side td test if new B is not found. - clkao * GD is not mandatory requirement. Skip chart test if not found. - clkao * require Class::Trigger 0.12 for abortable triggers used by css/js compression plugin. - clkao * debian packaging - yves * Makefile.PL - Jifty now depends on TD 0.26 - agentz * r1254@agentz-office: agentz | 2007-08-10 17:08:14 +0800 Makefile.PL - do NOT skip any tests under t/ unintentionally ;) - agentz * Updated the module recommendations for the Chart plugin. - sterling * Adding Image::Info dependency used during testing of Jifty::Plugin::Chart - sterling * add missing Test::Log4perl dep and update the Jifty::DBI requirement - falcone * Changing the Jifty console requirement back to default => 0. - sterling * debian dependancies * T::D 0.21 needed to pass tests - yves * add IPC::Run3 to dependency. - clkao * Update dep to include version of Module::Pluggable that is patched so that compile errors are caught - trs * Add dependency on Class::Trigger - alexmv * here sunnavy comes, ;-) - sunnavy * typo in recommends - falcone * Add myself to AUTHORS - andk * Better diagnostic messages in the dependency checking script. Thanks to Andreas Koenig - jesse * don't index plugins' test directories - jesse TESTING ======= * Add failing tests for load_by_kv with chr(0) - sartak * clean up load_by_kv - jesse * The warnings come from the server code after the fork. Test::Log4Perl isn't going to catch them. - jesse - Fix our test mech to not choke on non-default cookie names - Clean up page headers - Remove unecessary var - trs * Fix the template subclassing tests. - clkao * Helper method for mounting crud view. - clkao * Add a little pod coverage - sartak * Make sure there's always a stash during testing since we don't always go through the web - sartak * Pass defaults to render_region in test. - clkao * the actual templates for the 16- test.t/TestApp - clkao * failing tests for region and show inconsistency. - clkao * make a chdir conform to the rest of the test suite and use Jifty::SubTest chdir noticed by Andreas Koenig during his cleanups - falcone * add tests for UTF-8 related things - ruz * a failing test about utf8 when using T::D - yves * we need bytes in escape_uri then 'use bytes' * resulting string is always valid ascii string, so we shouldn't forcibly set utf flag - ruz * fast test support: truncate tables rather than recreating database when JIFTY_FAST_TEST is specified. - clkao VIEW ==== * update tabview plugin to use new relative path syntax for td show(). - clkao * don't use pager to determine items as list_items might be called directly and no pager has been set on the collection. - clkao * Jifty::Plugin::SkeletonApp::Dispatcher - Do not override the 'Home' menu item if the app had set it already. - audreyt * Jifty::View::Declare::CRUD - I18N. - audreyt * Fixed a problem where some disabled elements weren't re-enabled after a submission when the disabled elements were outside of the fragment being refreshed. - efunneko * Added a new helper, new_record_action(), that wraps new_action() with additional help creating Create, Update, Delete, and Search actions for models. - sterling * Fixes to use_mason_wrapper(): * Added a test to make sure use_mason_wrapper() works. * Added $jifty_internal_request to note whether a Mason request is internal or not. * Altered the autohandler to use $jifty_internal_request when blocking access to /_elements/ * Fixed error handling in the autohandler to redirect to /__jifty/error/requested_private_component rather than /errors/requested_private_component - sterling * Give the browser (particularly Safari) some more "settle time" - trs * Added support for more javascript triggers for most form elements: onclick onchange ondblclick onmousedown onmouseup onmouseover onmousemove onmouseout onfocus onblur onkeypress onkeydown onkeyup onselect - efunneko * Fix to a JavaScript bug performing the rerendering of IMG graphs. - sterling * Without the conditional we'll hide errors as soon as we display them - trs * Add explicit hide/show for the error, warning, and canonicalization note divs. This solves some long time ugliness on IE. However, it is not perfect as I am still getting some rendering issues on IE. Does not seem to break anything on FF. - sterling * Fix a fragment update regression caused by the trimclient merge. - clkao * Make enter key submit in the address search popup. * Fix the close link in ambigious address popup. - clkao * Add some classes - trs - CRUD view: Minor refactoring for easy wording change - Provide the D in CRUD - trs * CRUD: Don't bother showing edit link if current user can't - clkao - Plugin CSS and JS (which should be put in share/plugin/Jifty/Plugin/Foo/web/static/{css,js}) is now compressed by CCJS - CCJS can compress more than just main.css by calling Jifty->web->add_css("file.css") - trs * in REST record_to_data, skip container columns. - clkao * r60264@102: jesse | 2007-07-08 21:52:09 -0700 * Template::Declare behaviour change for "show 'foo'" to now show foo at the current template depth. - jesse * r24794@zot: tom | 2007-06-21 02:46:02 -0400 Restore and update the OOM patch to the YUI calendar - trs * Convert to using the form of declaring titles that works when using the mason wrapper with TD - trs * CRUD plugin cleanup and refactoring - jesse * CRUD View: Also export display_columns so it's not required to override it - trs * New Template::Declare page syntax for additional code block run before wrapper, and have the returned value passed to wrapper: template foo => page { title => 'this is title', other => 'foo' } content { h1 { 'blah } }; - clkao * Fix jifty->web->out from without td used with mason wrapper. - clkao * try not to interfere when a user clicks on a link with a modifier key pressed - jesse * YourApp::View->use_mason_wrapper now lets your write page {} in TD but uses your mason wrapper. - clkao * Do not call update() when ctrl-clicked - clkao * Fix javascript emission when CompressedCSSandJS plugin is not loaded noticed by dpavlin++. - clkao * Refactor the CRUD view to make it easier to customize the output - jesse * when rendering the keybindings div, reset Jifty.KeyBindings. Ideally we might want to keep the state with the div so it resets itself when replaced. - clkao * For post fragment update script evaluation, use YUI OnAvailable rather than hardcoded setTimeout. - clkao * switch url from an attribute to a child node for ajax redirects. (The old behaviour didn't work in safari) - jesse * add_javascript method to simplify adding JS libs and updated doc - trs * Fix update() called from non-form. - clkao * Implement "submit => undef" in onclick hook where it should submit all actions. - clkao * Let the code calling the wrapper specify a page class to use to support multiple page types - trs * Make redirect inside region work. - clkao * Make Jifty->web->out work during the dispatch rule stage. - clkao * Optionally use app's View::Page class for wrapper. - clkao * refactor the TD wrapper into a class. - clkao * Abstract render_footer. * Header is always considered done when sending out nontoplevel wrapper in spa. - clkao * r57907@pinglin: jesse | 2007-06-03 16:59:42 -0400 * The SPA templates no longer include css and js twice - jesse * Template::DEeclare now gets a hashref of all the arguments set() in the dispatcher. - jesse * Fix search collection for CRUD. - clkao * Better factored CRUD library, ready for local overriding - jesse * Calendar: Our default canonicalizer is yyyy-mm-dd, while the calendar generates single-character months and dates sometimes. Standardize on the two-digit form. - alexmv * CRUD view and a working example (sitenews) - jesse * Always use an application's 'wrapper' in preference to the Jifty default - jesse * clean url for submenu - yves * add a render_as_classical_menu to have the same menu with T::D view than older mason _elements/nav. - yves * Stop a certain class of validator error that causes an infinite loop in IE - jesse * CRUD builder search works - jesse * Jifty::View::Declare::CRUD lifted from BabelBee - jesse * add the ability to have some code before a javascript click : onclick => [ { beforeclick => ";" }, { args => ... - yves * More refactoring in support of adding new view handlers. - jesse U-PUBSUB ======== * Jifty.Subs needs outs_raw. - clkao DOC === * Minor pod additions. removing unneeded wrappers - jesse * Adding documentation for Action and Static attributes to resolve POD coverage test failures. - sterling * Adding tangent and return to the glossary. - sterling * Updating Pod and source comments for Jifty::Config. Performed some Perl tidying and added a new section describing why Jifty uses three levels of configuration files (may need additional editting). - sterling * Cleaning up the Pod and adding a few code comments to Jifty::Collection. - sterling * Added myself to AUTHORS - efunneko * Updating Pod and adding code comments to Jifty::Client. - sterling * Major Pod improvement to the class loader, many more helpful code comments, and some tidying for the class loader. Phew. - sterling * Cleaning up the Pod for Jifty::Bootstrap - sterling * Improved code comments and minor perl tidy. - sterling * Added more POD to fix coverage issues and added a description to the client_cacheable and client_cache_content methods of PageRegion. - sterling * Additional fix to POD coverage for the CRUDView attribute. - sterling * Fixing POD issues in CRUD, adding some code comments, and minor perl tidying. - sterling * Fixing error that occurred during previous push. - sterling * Improving some of the Pod, code comments, and minor perl tidying. - sterling * Improved code comments and minor perl tidy. - sterling * Added more POD to fix coverage issues and added a description to the client_cacheable and client_cache_content methods of PageRegion. - sterling * Additional fix to POD coverage for the CRUDView attribute. - sterling * Fixing POD issues in CRUD, adding some code comments, and minor perl tidying. - sterling * Improving some of the Pod, code comments, and minor perl tidying. - sterling * add myself to AUTHORS :) - sartak * added some pod to help make pod tests pass - jesse * Added a recipe for using "result_of" to fetch information about actions for use in appends. - sterling * Added NAME sections and short descriptions for the CPAN module summary. - sterling * Adding documentation to Jifty::Plugin::Debug to fix POD coverage failures. - sterling * Added an additional see also to Jifty::Manual::AccessControl to the User and Authentication::Password plugins. - sterling * The true return value of the module needs to not be part of the POD * Fix a POD nitpick - alexmv * word-wrapping some POD - nelhage * Fleshing out and cleaning up the documentation for Jifty::Plugin::Authentication::Password. - sterling * Fleshing out and cleaning up the documentation for Jifty::Plugin::User. - sterling * Added a many-to-many relationship recipe to the cookbook. - sterling * added see also section to Jifty::Upgrade - bartb * Now with more POD! (and passing POD tests) - trs * Extracting talks from the jifty dist - jesse * r58374@pinglin: jesse | 2007-06-14 20:17:33 -0400 * Full doc for the existing CRUD templates - jesse * Cleaning up and improving some of the view documentation. - sterling * Yada Sample application: Example::Todo is too hard to type. Yada! - clkao * The cookbook was wrong about the auth recipe - jesse * More comment about the JAFF handling special case from update(). - clkao * Clarifying comments about the plugins lists - trs * document why the validate hack exists. - clkao * exceedingly minor POD fixes. - diakopter * fix some pod bugs in Jifty/API.pm - sunnavy * update zh_cn.po - sunnavy * documentation fix that seems to have been forgotten when length was renamed max_length - andk * add 'Login on demand' section to Cookbook - ruz * Added section on dynamically created binary content in the cookbook - alech * add docs to pass the pod-coverage tests - falcone * small update to ru.po - ruz * add docs to escape_uri * fix it in the way need it to work, it's escape_uri_utf8. there is no way to escape binary and text scalars in one sub, we need the latter. - ruz * ru.po - ruz * linked POD++ - ruz PLUGINS ======= * Plugins may now have regular models. These are deployed after the schema is setup after adding the plugin to installation. Plugins can bootstrap and upgrade their schema with their own version numbers just like applications (though with slightly different details). - sterling * Adding a plugin for using the jQuery Javascript library with Jifty. - sterling * Fixing the chart plugin tests to match up with changes that have happened to the API since they were written. - sterling * Chart plugin configuration updates: * Deprecating the renderer option. * Adding the DefaultRenderer option to replace renderer. * Adding the PreloadRenderers option to allow additional renderers to be preloaded. * Updated the documentation. * Made sure that the configuration is always passed to the renderer constructor, even if they are loaded late. - sterling * Chart Plugin: Removing extra comma from JavaScript list. - sterling * Chart Plugin: Whoops. Forgot to check in the actual XML SWF library. This is version 4.6. - trs - Chart Plugin: Treat the width and height appropriately - Chart Plugin: Add the XML::Simple dep - trs * Bunch of updates to the chart plugin - Refactored dispatcher - Added XML SWF renderer - Renderers are now passed the configuration hash when init'd - trs * Chart Plugin: Use PlotKit.Base.map explicitly - trs * Chart Plugin: Render onAvailable instead of on window load so that we work in regions - trs * Chart Plugin: Make sure we do not attempt to render 0 pixel values no matter what. - sterling * Chart Plugin: Adding the SimpleBars renderer as a decent, dead-simple HTML- based renderer for HorizontalBars and a prototype for using tables for client- side chart configuration. - sterling * Chart Plugin: Removed some redundant code from the PlotKit renderer and added support for options to the GD::Graph and Chart renderers. - sterling * Chart Plugin: Improved the way the DIV tag is generated for PlotKit. - sterling * Chart Plugin: Added better error handling on renderer require. - sterling * Chart Plugin: Standardizing the chart types across the three current renderers. - sterling * Chart Plugin: Updated the behaviour script used by IMG chart renderers to make it more URI aware. - sterling * Chart Plugin: Fix failing dependency test because Chart uses GD to fix testing. - sterling * Chart Plugin: Added a renderer parameter to the chart() method and add per- renderer initialization. - sterling * Chart Plugin: Making the IMG-based chart renderers capable of handling CSS styling with some added behaviour. - sterling * Chart Plugin: Don't mess with the data structure if it's already what plotkit expects - trs * Chart Plugin: *Very* custom packed PlotKit (from svn) that no longer depends on MochiKit exporting functions into the global namespace. Still need to solve the issue of why MochiKit blows up when included in our honkin' JS file... - trs * Chart Plugin: Uncomment neccessary require. Make sure to handle undefined stuff - trs * Basic PlotKit renderer for Chart plugin - trs * Made the chart plugin test smarter and added one for the GD::Graph renderer. - sterling * Fixed an eensy POD bug. - sterling * Fixed POD coverage issue. - sterling * Updated POD and removed an unnecessary extra subroutine call. - sterling * Added a renderer for GD::Graph - sterling * Moved the chart/* dispatch to chart/chart/* to make room for alternate charting mechanisms. - sterling * Fixed the way arguments are passed to the render() method in Jifty::Plugin::Chart::Web. - sterling * Added a hack to chart.t (forcing an early load of GD) to avoid the segfault that was causing it to fail. Removed the TODO block from the test. - sterling * Regarding Jifty::Plugin::Chart: Added better comments. Fixed some error handling. Switched to using scalar_png(). Switched to using - >require rather than an eval to load Chart classes. Eliminated the need for IO::String. Moved some processing out of View and into Dispatcher. - sterling * Adding a test suite for Jifty::Plugin::Chart, but it is having weird troubles loading Chart::* because that seems to disconnect the server output or something. - sterling * Added the Chart::Base recommendation for the Chart plugin. - sterling * Added documentation to the experimental Chart plugin. - sterling * Adding a plugin for rendering charts of data. - sterling * Updated tabview plugin to work when it's not already inside a region - jesse * Fix IE issues with search div. - clkao * i18n for feedback plugin. - clkao * Incredibly naive "image column" userpic plugin. - jesse * ActorMetadata plugin: Asset renamed to ActorMetadata - jesse * First cut of GoogleMap plugin. - clkao * Facebook plugin: Provide a way to link existing users with a Facebook account - trs * Facebook plugin: More pod, forceable login - trs * Basic Facebook auth plugin - trs * OpenID Plugin: Add a "next" parameter so one can specify the next page to go after openid login. - gugod * debug plugin for logging dispatched rules and current user. - clkao * Password Auth: Plugin view class should respect app page. - clkao * Got the tabview plugin working with non-CRUD code. * got the tabview plugin preloading the first tab, even if it's marked as a region rather than a static tab - jesse * Single Page App: Unbreak nojs form submitting when SPA is enabled. - clkao * CompressedCSSandJS: support optional javascript minifier. - clkao * Move the javascript concatenating logic from Jifty::Web to the plugin. - clkao * CodePress plugin: bump version to 0.02, remove requirement to modify submit form button (and in process break next_page after it, because it turns normal form submit into Ajax form submit which doesn't handle redirects very well -- because it usually redirects to page which isn't valid XML) - dpavlin * Added a 'feedback' plugin - jesse * In SinglePage mode, allow Action::Redirect to happen within webservice and have the client js accepts it. - clkao * CodePress plugin; add language accessor to select syntax highlight language (instead of default generic), example of usage, replace onload with DOM.Events - dpavlin * CodePress plugin for web-based source code editor with syntax highlighting - dpavlin * Make SinglePage plugin configurable. - clkao * First draft of SinglePage plugin. - clkao * Make CompressCSSandJS optional. * always refresh css & js if in devel mode. - clkao * OpenId Plugin: Fix has_alternative_auth. - clkao * Authentication::Password plugin: The (unused) resend_confirmation template was missing. - clkao * User model mixin for OpenID plugin. * Make Authenticate::Password aware that there can be alternative authentication systems. * Make OpenID plugin work even when Authenticate::Password is enabled. - clkao * OpenID Plugin: The minimum required OpenID View for your app to mixin. - gugod * TabView plugin. - clkao * Site news plugin - jesse * A Jifty console to provide quick diagnostic shell for debugging or maintaining purpose. Yes, it's learnt from RoR, and it's good to have it when developing applications, or when you just start learning Jifty. - gugod * This is the OpenID plugin code. Setting up your app to use OpenID isn't as easy as we thought it to be. Will need a receipe to teach people how to cook it. - gugod * Login plugin: return id of the user from action - ruz * REST dispatcher: always use warnings and strict. - jesse * REST plugin: render referencing fields in a saner fashion. - clkao * plugin to add a wiki toolbar to textarea - yves * plugin to use Wyzz online wyziwig editor to render textaera for test and comments - yves CORE ==== * Remove cargo-culting changing of $0 from Jifty::SubTest. It doesn't affect test output but does break things - jesse * respect initial PATH in env under fastcgi. - clkao * Add friendly_date method to Jifty::DateTime which special-cases yesterday/today/tomorrow - sartak * Jifty::View::Declare - Work around Perl 5.9.5 bug by avoid punning the constant name BaseClass with the subclass name ::BaseClass. - audreyt * todo-ify failing tests in t/13-sessions.t - sartak * In action argument creation from model, do not assume refers_to always want a select based on id which we might not be referring to. Allow user to override render_as for refers_to columns. - clkao * Correct a crud component path. - clkao * Fix view CRUD template's method of getting the record - trs * First cut of a UUID column plugin, with a basic test in the user model - jesse * Add a load_by_kv to Jifty::Web::Session - sartak * Resolve import conflicts now that T::D and J::V::D::Helpers have a thingy with the same name - jesse * Moniker bulletproofing. Suggested by Mikko Lapasti - jesse * Push milestone 1 of trimclient to trunk. - clkao * Now make sure it's actually UTF-8 - trs * Make sure we get UTF-8 - trs * Fixing API qualification to make it possible to access actions associated with plugins via ->new_class. - sterling * Don't mess with the HTML by default. This should likely become configurable in the future. - trs * Cleaned up the class loader a bit to make all the auto-generated methods use the same name, remove an unnecessary elsif, and add a few more comments. - sterling * Need parens - trs * Fixed CRUD view to no longer require you to specify a base_path for the plugin's view. It was redundant and we could intuit it. - jesse * Refactor CRUD view to be more subclassable - Extract out per_page - trs * type can be empty for container columns. - clkao * support external javascripts. - clkao * Added support for application-specific plugins (i.e., App::Plugin::XXX) and plugins named using the fully-qualified Jifty::Plugin::XXX name. - sterling * check if current_user->can('user_object') when tring to figure out timezone - dpavlin * Altered the ClassLoader to create Collections for models deeper under the model namespace,like "App::Model::Foo::Bar". These is consistent with the handling for actions and other components already in place. - sterling * Move pulling action defaults from action in request into the action's new, instead of a "private" argument. * Remove an extra place where we default the moniker to _generate_moniker * A bunch of POD (re)wrapping. - alexmv * Recent YAML::Syck's get confused by trying to be too smart with $test_config, which is a filehandle which *also* stringifies to the path. Force stringification to get consistent (working) results. - alexmv * No matter what _resurect_current_user is intended for, it ought to be spelled _resurrect_current_user instead. :-) - audreyt * Mapper edge case failure (when no 'name' was given) - alexmv * add {_resurect_current_user} field into user module - ruz * protect ourself from circular references between User and CurrentUser we do it in user_object, so solution is generic should work in any case, but only if people use the method to set user_object and user model uses _current_user key to store reference to the CurrentUser - ruz * Use Jifty::Util->share_root for finding plugin share roots so that if Jifty isn't installed it still DTRT * Only calculate static roots once and report on plugins adding roots (like the mason handler does) - trs * Allow app changeable cookie names - trs * Web::Form::Link - When escape_label was set, the tooltip property was (very sillily!) first escaped, then discarded away, displaying the unescaped text instead. It now escapes properly. * Also make tooltips with value '0' display properly. - audreyt * Allow scheme to be specified for Jifty->web->url. This functionality was taken out during the move from "heuristics" to URI.pm, but for a non- apparent reason. - trs * HTTPS and HTTP adjectives for dispatcher rules - trs * Jifty->web->form->next_page got dropped when you submit only a specific action with Jifty->web->form->submit. This commit autoadds next_page if you submit only a subset of actions. - jesse * _redirect expects a local path, not a fully formed URL. (This only actually broke internal redirects) - jesse * Always give the dispatcher unescaped path like fastcgi does, from standalone, webservice, and region entrance. - clkao * work around annoying Module::Pluggable bug - sky * Make multiple use base lines into one for readability. - clkao * Admin UI: Don't trip over classes we can't require - jesse * Quiet a dispatcher warning - jesse * misc webservices_redirect cleanup. - clkao * Refactor handle_request to extract out methods * Only warn about denied actions on validate if they're also actions we want to run - jesse * Back out a Croak back to a die. (We're using it for exception handling, not to-user reporting) - jesse * Merge from fragcont branch to include minimum support of continuation in webservices requests to make SinglePageApp plugin work. - clkao * Only squelch "can't locate" errors relating to the class we're trying to require. If it's something else, it's likely a module use'd by the module we're requiring. - trs * correct en.po charset. - clkao * Only call LML->import once ever. - clkao * Kill 5% of startup time by not validating during DateTime::Locale. - clkao * Disable in-region redirect unless SPA is enabled. - clkao * Move methods unrelated to mason to Jifty::View. - clkao * Added support for "redirects" on fragment calls (which really just do an internal replace) - jesse * Really fix the region rewriting logic. - clkao * new Jifty->find_plugin method. - clkao * add a config file version, so we can change old defaults. - jesse * Correct app_class usage. - clkao * CurrentUser->username now uses brief_description on user_object. - clkao * In ClassLoader, be quiet when we are just trying to see if a module exists. - clkao * When we convert a model into an action, don't deref and then reref the array of possible valid values. We lose any attempt at possible magic that we might have. - jesse * A move to hand on the rendering of JDBI::Collection columns to app developers. We used to just ignore the rendering of any columns that refers to a JDBI::Collection, because there's no trivial way to do so. However, if the column comes with a "render_as", we can assume that the app developer know what he/she is doing. So we just render it as whatever specified. One scenario is that a collection of tags is rendered as a normal text input field, and develoeprs create tags records in their Tag model in before_create() method. With ajax canonicalize_tags this could be a simple and smart interface, and not difficult to implement at all. I'm sure that it'll open the chance to let developers write their own collection rendering modules like I did before. If we keep being ignoring, this won't even happend. - gugod * add data to the result indicating which requested actions were denied and mark them failed. Options for a better denied message coming soon - falcone * Extract the model list from Script::Schema to Schema - jesse * Incremental extraction of schema management from Jifty::Script::Schema - jesse * Cause more compiliation failures to actually stop the app from running - jesse * Cause more compiliation failures to actually stop the app from running - jesse * Cope better with malformed fragment requests - alexmv * Push app_root/lib onto @INC when we create a new Jifty object - alexmv * Moved the commands for add/drop column to Jifty::Record (they should move to JDBI eventually) * Added a drop_table to Jifty::Record - jesse * Added the before_access trigger and a simple test for it. Also updated TestApp and the current_user test to make them compatible with the new before_access test. - sterling * '*' matches only a single level in the dispatcher. '**' matches all level.s We want to run the "Home" rule at all dispatcher levels. - jesse * Make compile errors in autorequired modules fatal - jesse * FCGI.pm ties our streams and its implementation doesn't have support for setting IO layers with binmode, but we can do the same using Encode::encode. We just turn on raw mode on STDOUT and convert to octets ourself using Encode.pm and charset definition from the content type field. - ruz * Extensive UTF8 improvement: to sanity through insanity * control mode of output handles, if content type has charset defined then we set :encoding() output layer (or :utf8), otherwise binary * regions are special as we print out them into STDOUT, but sometimes need them as a string. We localize STDOUT and get data, however because of the above canonicalization we get octets or binary, so we check again the current content type. If the type contains charset definition then we decode octets back into perl string(in terms of perl unicode support), otherwise we leave things as is. jifty is sane when apps' developers are sane * never use 'bytes' pragma * avoid using 'encoding' pragma * use perl strings in jifty ** when you get a text data from external sources then Encode::decode it * set output encoding with $r->content_type('type/subtype; charset=XXX') ** by default it's UTF-8 ** you can use cp1251 (or other) and things should work, user will get data in cp1251 and browser should display it right ** don't Encode::encode things before output everybody have own critirea of sanity * if you think that something is wrong then add tests to jifty - ruz * we shouldn't silence utf8 warnings - ruz * utf8::downgrade converts to octets only if string had been upgraded, what is not always true for 'perl strings' - ruz * escape_utf8 * don't use bytes just escape things doesn't matter if it's flagged string or not, perl must do the right thing. * don't localize ref, use it directly, afaik smaller memory footprint - ruz * utf8::downgrade doesn't like strings as FAIL_OK, only integers, 1 is not that cool as 'FAILURE IS OK', but works - ruz * initial environment that makes fastcgi work got deleted - jesse * This module is for rendering a collection of input fields at once as a single widget. The major goal is to let developer say like: column bars => refers_to "My::Model::BarCollection", render as "Collection" availables are defer { retrieve_some_bars() }; in their model class, and it'll just display a nice form to input the value for a list of available bars. - gugod * fixed Jifty::View::Declare::Helpers since we now install tag subs directly to the target package instead of using @EXPORT. We now makes use of T::D::Tags's @TagSubs struct - agentz Jifty 0.70422 [Password Authentication plugin] * Better "password reset" behaviour * added regression test for bug fix in Jifty::Plugin::Authentication::Password::Action::Signup * change manual for access control with user and authentication::password plugins * Revert the bogus warning silencing in 0.70416 as it kills Doxory example. (reported by semifor++) [Core] * More debugging info for broken letmes * Added duck typing to the Jifty::Handle constructor to prevent difficult to trace error messages when the driver name is mispelt or fails to load. * Jifty::Upgrade - Defensive programming against tables that did not have "create table" in its schema for SQLite column renaming. * Jifty::Module::Pluggable - Silence the @ISA warnings. * Doc updates for Jifty::ClassLoader -- David Good * Created a method that can be over-ridden for custom test database setup * debian stuff, fr.po update Jifty 0.70416 * New ExtJS plugin (For yahoo-ui ext) * zh-tw L10N for authen/passwd/user plugins. * WWW::Mechanize 1.22 removed the form method. thanks to hdp for noticing/poking * render_region should have default empty path. * Jifty::Plugin::REST::Dispatcher - Gugod pointed out that we don't need to stringify() the object-to-data output, because (esp for nested structures) it's far more convenient to have the $accept-specific formatter (e.g. YAML or JSON) to render it. * Added render_as_yui_menubar in Menu.pm * Upgraded YUI to 2.2.1 * NOTICE: if you are using yui tabview, please use tabview.css instead of tabs.css * Added yui/element-beta.js and yui/menu.js in Web.pm * Allow '->superuser' to be both an object and class method. * added audreyt's Doxory demo app from doc/talks/yapcasia2007-doxory.pdf * Add doc and prefork dependency so the doc and dep tests pass * Preforking server support for Jifty::Server * Refactoring to support more template engines * fix "open" class in menu - active menu item doesn't imply current open item * Jifty::Plugin - Authentication::Password now auto-loads LetMe and User. * added a "SkipAccessControl" framework directive * Doc: Add section on using models/actions outside of a Jifty app * fix handling of multi-line data when encoded in JSON -- they should never wrap over multiple lines in generated output * helpers improvements for T::D * Make CurrentUser->new work as a method on an instance, so that as_superuser works. * Added a 'None' session type for when your application doesn't need sessions * Can't just check to see if the config exists to decide whether to initialze the Jifty object * Make render_region resolve relative template in current context. * We load the config on demand now, so it always exists. Test for classloader existence, instead of config existence, to tell whether or not we need to Jifty->new. * Refactor the I18N plugin stuff to not fail tests. * Make sure test coverage copes with new jifty->config * Better plugin I18N * Plugin paths don't need to convert because File::ShareDir::module_dir always returns an absolute path. I have added also modification checking to the Jifty::I18N::refresh for plugin po files. -- Alexey Grebenschikov * Log::Log4perl::Appender::String (used in tests) was only added in 1.02; require at least that * Switch Jifty->config to automatic instantiation * Added a basic test stub for Jifty::Test::WWW::Mechanize. -sterling * don't require a bunch of unused modules that don't trickle to the templates * don't set the Home tab twice * use Pod::Simple::HTML where we need it * Administration and Online docs tabs are set in Jifty/Plugin/*/Dispatcher.pm * When running coverage, don't use Class::Accessor::Named as it uses Hook::LexWrap * don't load up PodSimple and other friends unless you've actually enabled AdminMode and brought OnlineDocs into the picture * Modified submit_html_ok to make it behave like the documentation says it should. * Don't create a new config object every time we look at the db version * Added the ability to have a return button that looks like a submit button on a form. * When you rest a lost password, email address is implicitly confirmed * extracted dump_rules into DumpDispatcher plugin -dpavlin * more quieting down of "couldn't drop that database that shouldn't have existed in the first place" warnings * keep old LDAP and CAS plugins usable, THIS COULD BREAK APP MODELS NAME LDAPUser and CASUser models are now User -yves * Autogenerate Package::Action when we need it * Jifty: We now depend on Scalar::Defer 0.10 to not break the *_ localization. * Jifty::DBI::Param::Schema - Mention how to use "defer". * Remove legacy naming from the Auth::Password plugin # nelhage++ * The plugin classloader is wrong. it's going away forever * LetMes need to deal with user objects as superuser to get their tokens * next major round of work on the login plugin. signup now works slightly better debug logging from the jifty dispatcher * Slightly better mail sending defaults * When we use App::Class, actually require the module, to save the user some typing * Changes to the dispatching to templates: * only add '/index.html' to the path given if there is no template that can handle the given path. * template_exists now checks for Template::Declare templates too * tests that check that T::D templates are preferred over Mason templates. * Set some svn:ignore properties so that generated files don't litter the tree * Include the jifty skeleton app by default. * make the 'hey! it's admin mode' bit not overwrite the menu * TD fragments and unicode needed some massage. * Next pass at a login/signup password auth plugin. Now supports login and logout and signup * Jifty::CurrentUser now has a default "_init" behaviour. * The password auth plugin now works * Updated the 'feeds' section in J:M::Cookbook to not lie about the way XML::Feed actually works. Arguably it /should/ work the way we described ("your implementation is showing"), but fixing the docs was easier than submitting a patch to someone else's module. * Now we can inherit actions from plugins * fixed incorrect documentation of _ and added a SYNOPSIS * "final" Mergedown of the Template-Declare branch of Jifty. - New Template::Declare based templating system (optional) - Significant work on plugins - Significant refactoring - Many jifty features extracted to 'mandatory' plugin applets. (These should be made optional or removable over time) * Doc patch for how to do multiple "onclick" actions - jpollack@gmail.com * Log::Log4perl::Appender::String (used in tests) was only added in 1.02; require at least that * add doc to manage a superuser group * add doc to emulate updated_on * Add note to cookbook showing how to change other fields using ajax canonicalization * Basic handler for running Jifty under mod_perl2. Tested under Unbuntu Feisty, with a default Apache2/MP2 install. Requires a config change, explained in the perldoc. -rodi * examples/{Chat,Clock,Ping}/: Use Jifty::Server::Fork instead of stub ::Server subclasses. * Jifty::Server::Fork - New module to conveniently express a forking builtin server. * Plugin templates should override the core, but not application templates * Since we use the schema tool to manage jifty's database, it's important that it be able to be called from running code (including a DESTROY block). As it was, we were initializing (reinitializing) Jifty from within the DESTROY. That doesn't work so well. * Better test for "jifty already initted" * Fix adding columns during an upgrade. * added a Deploying page to the manual based on the process I have found successful * updated the upgrading manual and added a few extra glossary items * DBD::pg passes postgres' warnings up, so try to convert their various logging levels back to Log4Perl levels. Completely heuristic, probably wants more guarding so it doesn't reach out and bite someone. * This quiets some of the most annoting warns revealed when I removed the log-level downing in Script/Schema.pm * Added support for schema_version() in records * Updated the schema upgrade process to handle renames more nicely * Added a simple test for upgrading * YAML.pm is currently required even if YAML::Syck is present. The Makefile now requires YAML even if you have a C compiler and are installing YAML::Syck. * added a CUSTOMIZATION section to the Jifty::Action docs * upping require for IPC::PubSub to 0.23 due to use of disconnect * Disconnect PubSub before dropping the database * Solve copious global destruction warnings * send correct HTTP/1.1 headers for caching when running Jifty with DevelMode: 0 * Support POSTing to /=/model/Foo to create items without specifying a PK * lib/Jifty/Manual/TutorialRest.pod - quick overview of REST plugin * don't double warn. Now that we stopped schema creation from suppressing warnings this *shouldn't* be necesary * stop hiding messages/warns from the database during tests * default to only showing WARN and higher when running tests (rather than our more normal INFO) * Added the ability to force arguments and path when rengering a region. This lets developers force override something passed in via ajax or a "sticky" value from a previous request. * Jifty::Script - Assume "jifty fastcgi" when we are running under cgi. * I18N and zh-* L10N for menu and halo. * fix JScript conditional compilation bug. Jifty.Utils.isMSIE works now. * strict, warnings, and redefinition warning avoidance for J::Module::Pluggable. * Alternate implementation of Module::Pluggable::Object's _require method to avoid a useless string eval. * Actually carp from within our log warning handler, to not swallow critical debugging into * Jifty::Logger - Properly respect previous $SIG{__WARN__} handler if Log4Perl isn't yet initialized; that means we won't silently discard compile-time errors from our model classes, though they are still demoted as warnings. * Refactored Jifty::Script::Schema to use extracted column, table and db manipulation routines * Extract the "load model related classes" logic in the class loader to its own function * A new method provides a tantalizing glimpse of jifty's forthcoming "load models from the database" support * Added table and column schema generation methods to Jifty::Record, based on an extraction of Jifty::Script::Schema * Added "create db" and "drop db" methods to Jifty::Handle * Added the 'bootstrap' option to vanilla Jifty::CurrentUser. Now there's one fewer cases where you need a custom CurrentUser class * Jifty::Util - Add a generate_uuid method and use it to generate ApplicationUUID. * Jifty::Script::App - Make the generated Makefile.PL more canonical. * Jifty::Util - only requires ExtUtils::MM at request. * Jifty::Util - fixed the broken Win32 logic: - use ExtUtils::MM before calling MM->maybe_command - ignore the case of letters when comparing file names * Change all tests for the literal Driver string "SQLite" to a regex match to /SQLite/, in anticipation of fancy drivers such as SVK::SQLite. * enable UTF-8 flag awarness in JSON libraries to fix problem in validation of values during creating a record via the admin interface when column has valid values with unicode chars. * include iepngfix 1.0 * add MIME type text/x-component for .htc file * howto document for iepngfix * Our fallback I18N handle needs to specify that it should autocreate keys if they're not found * Jifty::I18N: Provide a default fallback lexicon class for "en" so Locale::Maketext won't clobber our $@ stack. * Jifty::I18N - Avoid naked eval{} that clobbers $@. * Jifty::Web - Add private accessor for _state_variables to avoid typo-prone ->{'state_variables'}. * REST: Implementation for PUT and DELETE on model items * Canonicalize/validate after typing and blurring, too * Modernization of model declarations for compatibility with new Object::Declare based Jifty::DBI * updating to 'max_length' name for the parameter formerly known as 'length' * Jifty: Deprecate ->length in web form and param fields; write ->max_length instead. * Allow create, load_or_create and load_by_cols to be used as class methods. * REST: Show an action HTML form when rendering /=/action/App.Action.Foo as HTML * Fix running actions (checking for allowed-ness was done wrong) * Cut down on a lot of the crap that we outputed and fix up structure * Make it possible to request XML from the URL like the other data formats * Show action params in any data format instead of just an HTML form * Only allow method calls if the "field" is actually a column * Force stringification so that we don't segfault trying to output blessed references and what not * added the update method which reconstructs the locale handle (used by Jifty::Handler::handle_request) [Jifty::I18N] * &_(loc) now uses the global locale handle instead of the one set up during Jifty::I18N->new(). [Jifty::I18N] * Audrey's refresh method now always calls C either directly or indirectly (via C) [Jifty::I18N] * C now always calls Jifty::I18N->update directly or indirectly (via Crefresh>) [Jifty::Handler] * Misc minor startup-time performance improvements * Only run onsubmit() if we have an onsubmit property * Support for controlling browser-based autocomplete on form fields * Fix how fake buttons submit forms -trs * Gotta double-quote keybinding labels if they have embedded newlines. * Warnings when a developer puts a "show" into a "before" or "after" dispatcher rule. Jifty 0.70117 Dependencies: * Bumped the minimum required version of Jifty::DBI to 0.30 Jifty 0.70116 New authors * Add yves in authors, for localisation, debian packaging -yves * Added PJF to AUTHORS file. -pjf * Added evdb as a new author -evdb * agentz * pmurias PubSub (audreyt, clkao, jesse) * Audrey, Jesse and CL hacked out a PubSub message bus and a preliminary Comet implementation. * Doc for how subscription stuff works. a bit of refactoring toward a second transport * Added sample apps and design docs from the PubSub/Comet hackathon * upgrade schema to work on mysql -jesse Database * Initial support for prefetched collections. -jesse * Added support for SQL::ReservedWords to the schema tool, to stop me from building applications for Postgres on SQLite and hurting myself later -jesse * Add a CheckSchema option to the config file to govern the SQL Schema keyword checking -jesse * Classify databases failing an SQL::ReservedWords check for nicer output -gaal * Better debugging information when running actions -jesse Documentation * Updated tutorial to remove mention of the deprecated download area. -pjf * Provided extra tips on how to install Jifty using Perl's standard CPAN module on both Unix-like and Win32 systems. -pjf * Documented PageRegions usage -wolfgang * Show an example of a canonicalizer (lifted from the jifty presentations). -falcone * Document the ability to frob other pieces of the action from a canonicalizer -falcone * Jifty::Manual::UsingCSSandJS - Fix the misspelled "app.css" to the correct "app.js"; minor reformatting. -audreyt * Jifty::Manual::Models - It mentions <> as the SQL inequality operator, but all internal code uses != instead; change the doc to match reality. -audreyt * Jifty::Manual::Cookbook - Trivial typo. -audreyt * Jifty::Manual::AccessControl, Jifty::Manual::RequestHandling - Change C< objEmeth > to the more readable C<< obj->meth >> POD syntax. -audreyt * expanded AccessControl.pod to reflect changes in Login plugin -wolfgang * added a pod describing Jifty's request handling process -wolfgang * added a german translation for Tutorial.pod -wolfgang * Minor fixes to pod -evdb * added explanations about Login Plugin to AccessControl.pod -wolfgang * updated Models.pod to reflect recent changes -wolfgang * added a section on 'limit' to 'Models.pod' -wolfgang * Supply documentation for all of the methods which had been missing it -jesse * Jifty::Param::Schema merge algorithm rescued from the obscurity of commit logs. -jesse * Corrected Jifty::Record::current_user_can: The right is 'update', not 'edit' -jesse * Jifty::Record::current_user_can: "admin" should have been "delete" -jesse * Added the time and date filters to the cookbook. -nelhage * Improved docs for Jifty::RightsFrom -jesse * Improved docs for Jifty::Record (Access control related functionality) -jesse * Added a documentation fileon CSS and JS -wolfgang * Jifty::Param::Schema - Trivial doc fix to s/Wifty/MyApp/. -audreyt * Jifty::Action - add documentation for the automatic moniker generation algorithm. -audreyt * Minor documentation updates -gaal * Jifty::Script::FastCGI doc - it's share/web/ not web/ nowadays. -audreyt * Two simple POD typos, one spotted by Gaal Yahas. -audreyt * Minor spelling corrections. -jpeacock * Fixed a cookbook typo, and add some sentences describing an issue when defer{} failed to dwim. -gugod * A cookbook recipe to do ajax canonicalization. -gugod * Jifty::Action POD: Copy-n-paste the synopsis from Jifty::Param::Schema and correctly L<> there. -audreyt * Tell people where the docs for Jifty::Action::button really live -jesse * [Manual/Actions.pod] added more explanation for the "return values" of Actions made the $id args optional in the sample code. added internal links to L. a few additions to the explanation a few cleanups in the sample code -agentz * Manual/Cookbook.pod: typo fixes, code cleanup -agentz * document Jifty::Web::Form::Field::preamble -agentz * Jifty::Manual::(Upgrading|RequestHandling|AccessControl|UsingCSSandJS|Actions|Continuations) typo and wording fixes -agentz * Jifty::Manual::PageRegions examples and cleanup -agentz * Jifty::Manual::Models - mentioned the build_select_query method, paging, and Jifty::Manual::Upgrading. -agentz * Added a note about the fact that mason needs to be flush left to the tutorial -jesse * add full MyWeblog example -jesse * limit handling corrected in Jifty::Manual::Models -wolfgang * Cookbook typo fixed. thanks to tokuhirom -jesse * Jifty::Manual::Cookbook - applied the "edit" link patch from Peter Wise. -agentz * plugin and declarative test design docs -nelhage * ldap autocomplete example -yves * Tutorial_de retitled to not conflict with the english one. -jesse Plugins * First release for plugins AuthLDAPOnly and AuthLDAPLogin, all comments are welcome -yves * Login plugin : Add missing Notification::ConfirmLostPassword, dispatcher for passwordreminder, let to reset lost password -yves * Added an action to let the user change his/her password in the login plugin -yves * AuthLDAP plugins: minor doc and debian rules fix -yves * You can now run actions and get back arbitrary data formats from the REST dispatcher -nelhage * REST dispatcher cleanups. -jesse * First cut at XML webservices in the REST plugin -jesse * The first bit of major refactoring of the REST plugin. -jesse * we loves our ACLs, we do. The REST plugin was violating too much encapsuplation -jesse * Added Module::Install files for plugins EditInPlace and Login; some of them were in the MANIFEST but not the repository, so we were getting false warnings of missing files when running 'make distclean'. -jpeacock * Add license to Login plugin's Makefile.PL. NOTE: remember to increment the plugin's $VERSION strings before releasing to CPAN (else updates won't get installed). -jpeacock * test and debian updates for the LDAP plugin -yves * Usable AuthzLDAP Plugin, see man Jifty::Plugin::AuthzLDAP while thinking on new more generic Jifty::Plugin::Authz::XYZ , Jifty::Plugin::Authentication:XYZ -yves * Login: Don't delete arguments that you don't know about /a priori/. Don't display fields that shouldn't be displayed (using the Unrendered attribute). -jpeacock * Duplicate code removed from the plugin classloader -jesse * Better handling of autocreated modules from plugins. Print debug statements when autogenerating packages. -jpeacock * reworking of Login plugin -jpeacock * Some CAS authentification plugins -yves Internals * Jifty.pm: Load I18N after plugins, but before the main classloader, so the main classes has access to _(). - audreyt * Removed support for Devel::Gladiator. It was very, very beta and caused server processes to end up as zombies -jesse * qw'' is just weird. Change all instances to qw(). -schwern * Jifty::Action::Record 'use'd DateManip but never uses it. -schwern * It also used UNIVERSAL::require but did all of its requires via Jifty::Util. -schwern * Yet another fix to the URI-from-env feature, fixes a failing test (reported by alexmv++). -gaal * Guessing request schemes from the environment is fragile, so make the fallback on BaseURL more reliable. -gaal * when inferring a scheme for the application, look at REQUEST_URI instead of assuming http://. Fixes tangent() on non-http:// apps. -gaal * Use Jifty->app_class whenever possible -alexmv * Code cleanups in Jifty/Subs.pm -alexmv * Fix for when Jifty->web->url is called with query parameters -alexmv * Added a Module::Pluggable subclass to get our own (somewhat improved) require behaviour -jesse * We were not properly removing blank values on record create -jesse * Better handling of current_user when used as a class method -jesse * use ApplicationClass, not Application Name in the login plugin -clkao * Add _is_readable in Jifty::Record, which means the record should bypass current_user_can in check_read_rights. -clkao * Add results_are_readable argument to collection to mark records with _is_readable. -clkao * Minor refactoring to enable non-cookie based session storage -jesse * Use Jifty->app_class to construct app-space class names. -clkao * Jifty::JSON - Turn on $ImplicitUnicode so unicode strings can be reliably serialized into .js and back. (This is crucial for e.g. JavaScript confirm hooks.) -audreyt * avoid warnings in LetMe -jesse * DateTime: DateManip can get confused if someone else calls Date_Init earlier in the process. Tell it "no, really, GMT please" -falcone * DateTime: we're always setting the timezone to the user's timezone, even if new is explicitly called with a timezone. This breaks DateTime->from_epoch which wants data back in UTC -falcone * provide json webservices -audreyt && pmurias * Jifty::ClassLoader - Defining MyApp::Action::Record::* now works. -audreyt * Jifty.pm: Before we call Data::UUID->new, be sure to load it. -audreyt * Jifty::Param::Schema allows "hints are 'type stuff'" but our Model syntax uses 'are' to build an arrayref, so "hints are 'type stuff'" in a model would result in displaying ARRAY(0x123456). -falcone * implement if-modified-since for static view handler. -clkao * Module::Pluggable does't include empty intermediate classes now -alexmv Web UI * Links and Form titles needed to be better escaped -jesse * Add delete option in admin view (for Jamalle - private joke) -yves * Jifty::Param - It's no longer a Jifty::Web::Form::Field subclass. -audreyt * Add the ability to send "notes" to users from your canonicalizer. This is separate from the warning and error spans used by the validator -falcone * validator.xml - allow us to update action data just by changing it. Without this you had to set ajax_canonicalizes on a field in order to change it and have it propagated back. --falcone * Some refactoring of form field rendering, and adding a focus => argument to form fields to focus them on page load. -nelhage * Switch our implementation of autofocus to use behavior, rather than a custom onload event -jesse * Fix calendar div & IE select box problem -ishigaki * Do a slightly more generic dereferencing on the user object's friendly name in the sidebar -jesse * Fixing autocomplete so we render the autocomplete div *before * the javascript, so the JS can hook it. -nelhage * Remove useless check in buttonToLink to get a javascript performance boost. -hlb * Make render_messages sort on result moniker as well. -audreyt * Jifty::Response: Ensure consistent ordering from monikers. -audreyt * Hacked the yui calendar component to allow selection of out-of-month dates -jesse * Even more I18N+L10N, this time for admin crud pages and calendar.html -audreyt * adjusted the output format of render_preamble by removing a redundant space. -agentz * The "length" attribute Web::Form::Field now also means HTML "maxlength" in addition to "size". -audreyt * calendar.js - Fire off canonicalization/validation methods upon clicking a date. -audreyt * Update YUI to 0.12 and port local changes -trs * Administration manage model : add sortable capabilities in header table bug fix in delete item begining of modularity other cosmetic changes silk icons, wai tags thanks to Jamalle -yves * Jifty::Web::Form::Field and ::Select - Label display was rendered using the latin1-biased escaping in HTML::Entities; switch to the proper UTF-8 escaping in Jifty->web->escape. -audreyt * This helps passing xhtml validation. cannot be direclty under
, there should be a block-level element in-between. -gugod * made wait-message look consistent in both firefox and IE -agentz * admin/model/dhandler: localization hooks added, page title added -agentz * add yui/tabview and its assets -hlb * Indicate mandatory fields visually -trs * Only emit mandatory field warnings with Ajax when the field starts with data. -trs * Close
  • s we open in the admin interface -alexmv * remove extra s -gugod * upgrade yui library & add yui/container.js -hlb * Fix broken Jifty.Utils.isMSIE -trs * Fix buttonToLink to deal with normal, non-ajaxy buttons that we want to turn into links -trs * Use Jifty::JSON::objToJson to properly escape JS values (in particular single quotes in button labels were causing problems) -trs * Add a key_binding_label attribute so that key binding labels can be set independently of the normal label -trs Jifty Actions * Jifty::Action: Generate stable auto-monikers for actions based on the caller stack. -audreyt * Negative searching for Search actions -jesse * Added an option to search the contents of any text field to jifty search actions -nelhage * Jifty::Action::Record: Allow the same for user-generated param vs CRUD actions. -audreyt * Jifty::Action - Autoincrement the per-request stash counter for the case of looped action creation. -audreyt * Fixed 'mandatory' validation misbehavior -- 'mandatory' now handled correctly -wolftang * Jifty::Param::Schema: Allow partial override of superclass's PARAMS by simply declaring a sub "param" and fill them with the fields you'd override. -audreyt * Jifty::Web / Jifty::Action: Stickiness now works on autogenerated monikers. -audreyt * Modified Jifty::Action::Record::Update so that empty strings for integer and boolean columns will be interpreted as NULLs. This may break apps that assume that an empty value string will be a no-op. -jesse * Jifty::Action::Record::Search - Consider "float" and "double" fields as numeric for comparison. Also consider "char" as textual. -audreyt * Allow a canonicalization note to be set, even if you don't change the value of the action parameter - falcone * L10N for Action::Record::Search -audreyt * Jifty::Manual::Actions include example with available are defer { ... } syntax which doesn't work because ref on variables deferred with Scalar::Defer return 0 instead of ARRAY -dpavlin * Add an "(any)" label to Action::Record::Search when render as radio. -audreyt * Jifty::Action::Record - Support for "is autocompleted" annotation. -audreyt * Jifty::Action::Record::Search - "numeric" and "decimal" fields are also numeric. -audreyt * Jifty::Action::Record - "is autocompleted" choices should not consider null/empty fields. -audreyt * Action::Record::Search - When there is just one choice, don't bother displaying '(any)' for Radio. -audreyt * Jifty::Action::Record::Search - First cut at a _dwim field for numeric fields that supports > >= < <= == = != ! <> operators. -audreyt * Jifty::Action::Record - Autocompletion now lists only the parts that matches the user-input as prefix. -audreyt * Jifty::Action::Record::Search - Add _before/_since for dates, as well as the equivalent _ge and _le for numbers. -audreyt * Jifty::Action::Record::Search - Add hints to _dwim. -audreyt * Adding a note about canonicalizers being idempotent -nelhage * add max_length alias to fix Object::Declare and Jifty::Param::Schema not handling length properly -alexmv bin/jifty * Change Jifty::Util's probe of bin/jifty from -x to -r for poor people on filesystems that does not have a executable bit. (The maybe_command is still needed for the .bat case.) -audrety * Fix the bin/jifty detection logick: The .bat extension exists for MSWin32, cygwin and os2, so use MM->maybe_command for those three platforms. -audreyt * Also, the -e check is redundant after -x, and in Win32 we can use bin/jifty.bat alone without bin/jifty, so make the check respect that case. Reported by: Stephen@s-team -audreyt * bin/jifty covered sigterm in a way that could cause zombie processes under fastcgi -jesse * Be explicit about the paths we're creating -alexmv * Jifty::Script::Server - Remedy for the edge error case where var/ is missing, which used to cause mysterious error messages. -audreyt Building apps * Small error string change to suggest looking for missing use lines in models where refer_to is used -bartb * Ongoing work to pass through Class::ReturnValue errors all the way from Jifty::DBI to the view layer -jesse * create scaffolding actions with the new Jifty::Param::Schema syntax --falcone * Jifty::Manual::Upgrading - Remove the now-obsoleted claim that one has to "use" model classes before renaming it. -audreyt * Jifty::Upgrade - rename() now works with SQLite too, woot! -audreyt Dependencies and installation * Makefile.PL typo. Spotted by David Adler -jesse * Files for debian packaging, now rather for actual cpan release than for svn. -yves * Update MANIFEST.SKIP and run 'make manifest' to ensure that new files get added properly. -jpeacock * Added a dependency on libextutils-command-perl to debian control file -bartb * Older DBI versions didn't provide the API we're using. (0.22 is known bad) -jesse * Remove PerlIO::gzip as a Jifty dependency. -audreyt * Older XML::Writer versions failed tests. Dependency bumped - Thanks to Jonathan Stowe -jesse * Reverting to dumping using YAML.pm *again*, because YAML::Syck generates XML that makes YAML segfault :/ -nelhage * Fixed missing dependency on Module::CoreList -- Thanks to Henry Baragar -jesse * Makefile.PL - Add dependency on Test::Base and Module::Refresh. Reported by: Andreas Koenig -audreyt * Makefile.PL - Bump JSON::Syck dependency to 0.15 to handle single quote + unicode strings. -audreyt * SQLite is required to test properly -jesse * debian packaging updates -yves * Skip html files when looking for dependencies. This may cause us to miss some modules used only from within mason, but it will stop falsely detecting lines that start with the word "use" in docs. -jesse * add Test::MockModule and Test::MockObject for J::W::F::F testing -agentz * made Test::MockModule and Test::MockObject optional by putting them into development dependency list -agentz * Makefile.PL: remove Test::HTTP::Server::Simple dependency when $^O eq 'MSWin32' -ishigaki * debian packages : add libtest-mockobject-perl libtest-mockmodule-perl in recommands packages (for new snapshot on jiftysvn repository) -yves * cleaned up debian readme -bartb * Clean up MANIFEST (mostly sqlite files) -alexmv * hlb++ reported that we really want HTTP::Server::Simple 0.26+, not 0.20+, as 0.20 and 0.21's critical URI-path-processing bug makes us non utf8 friendly. -audreyt * Added Data::UUID to the Makefile.PL and made sure we use'd it in Jifty.pm -kevinr Internationalization * The ubiquitous "There was an error completing the request. Please try again later.") error message should be localised. -audreyt * We now default the location of the jifty siteconfig file -jesse * For some reason, loc('') started spewing out PO metadata. This seems to be b0rkeness on the Locale::Maketext layer, but for now generalize the undef detection logic in Jifty::I18N to recognize that case. -audreyt * "You need to fill in this field" needs to be localized. -audreyt * Stopped the internationalization system from exploding if a plugin doesn't have a module_dir -alexmv * The internationalization system now extracts messages from TemplateRoot, not share. -clkao * Plugin internationalization and french po files -yves * Jifty::I18N: New ->refresh method so .po files are reloaded properly when DevelMode is on. -audreyt * Even more l10n on Jifty::Action::Record. -audreyt * jifty po shouldn't check/update files under .svn directories -ishigaki * zh_cn and zh_tw translations -audreyt * "jifty po": Ignore _svn/ directories (Win32), as well as foo~ files. -audreyt * L10N for the new Search action fields. -audreyt * update fr.po -yves * update zh_cn and zh_tw and use traditional characters in zh_tw -agentz * update german J::Manual::Tutorial_de to match english version's changes -wolfgang * Jifty::Script::Po: shouldn't update other catalogs if we specify target language with -l -ishigaki Testing * Jifty::Test: canonpath-ed for Win32 -ishigaki * make sure to skip 04memcached.t if you don't have Cache::Memcached -ishigaki * skip all the live tests (that call 'start_ok') on Win32 -ishigaki * shut up warnings when tests have no plan (t/Continuations/03-gc.t) -ishigaki * Added Jifty::Test->web to allow using Jifty->web in tests without a bunch of scaffolding. * Converted search tests to using Jifty::Test->web -schwern * Basic compile and startup tests for the Chat sample -schwern * add tests for Jifty::Web::Form::Field's render methods -agentz * adjusted t/06-forms.t to skip related tests when these two modules are not installed. -agentz * fix t/TestApp-Plugin-REST/t/02-basic-use.t because ClassLoader creates 4 new actions -falcone * add tests for Jifty::Param::Schema -agentz * TODO tests attempting to test if we get ajax validation errors for mandatory values after the sticky_value has been deleted -trs Email notifications * When sending email notifications, encode the message body -clkao * MIME-encode notification subjects. -clkao * Content-transfer-encoding needs to be 8bit. -clkao * Don't set notification transfer_encoding to 8bit if it's actually multipart. -clkao Dispatcher * avoid undef warnings in the Dispatcher -jesse * Jifty::Dispatcher - Alternation in extended shell globbing syntax now admits zero characters as well: on 'foo{,.zip}' # matches 'foo' and 'foo.zip' -audreyt * Jifty::Dispatcher - NUMBER SIGN (#) now captures one or more digit characters in the extended shellglob condition syntax. Suggested by: Sebastian Riedel -audreyt Jifty 0.60912 Testing * force to use Jifty::TestServer on Win32, though both JTS and THSS doesn't work properly at the moment. * Give a description for get_html_ok so that you know what URLs fail/succeed in test output * Small stylistic cleanup to t/01-dependencies * Honour coverage options. * make sure to remove remnant test db before we test (Jifty on Win32 fails to unlink them right now) * Add Jifty::Test->test_in_isolation * Document Jifty::Test->is_done. * Added Jifty::Test->is_passing and is_done * Basic SYNOPSIS for Jifty::Test as well as mentioning the Test::More passthrough. * Add Jifty::Test->teardown_mailbox to mirror setup_mailbox * use safer File::Spec->rel2abs for SubTest * TestServer: use File::Spec->rel2abs; it's safer than Cwd::abs_path which croaks * Jifty::Test->test_file() accepting and returning a list causes problems because people will try to do: my $file = Jifty::Test->test_file($file) and it ain't gonna DWIM. * Mention Shell::Command and Jifty::Test->temp_file in the style guide. * Add Jifty::Test->test_file() to declare files created only for testing and which should be cleaned up. * Fixing tests when using JDBI::Record::Memcached and setting things in the database from test scripts * Added explicit tests for Jifty::Action::Redirect * Script for running client and server side combined code coverage. * Give a description for get_html_ok so that you know what URLs fail/succeed in test output * Ignore "fluff" errors in HTML validation since they cause non-W3C attributes like "autocomplete" to be warned about * Add html_ok method for checking the mech's current content so tests can use it while we retain control over Test::HTML::Lint Models * jifty model --name now uses the new schema {} sub. * Made the display of a friendly string for picking a record from a list a lot more flexible. * canonicalization wasn't being properly run on models before validation * Added Jifty::Filter::DateTime, a JDBI filter that promotes DateTime objects to Jifty::DateTime objects on read, setting the time zone appropriately. * Added a concept of "virtual" arguments to actions. These won't be passed on to Record classes, even if they're sumbitted. We use this for Password confirmation arguments, so that we don't pass password_confirm on to the database, which is kinda useless (and breaks the db ;) * Added a as_superuser method to Jifty::Record to make it easier for * code to briefly dodge around ACLs when needed. Admin UI * __jifty/admin: use ->models reflection to build the nav bar. * Integer C or C searching. * Added substring search and date comparison to J::A::R::Search * Basic search in admin mode using Jifty::Action::Record::Search. Still buggy, especially UI-wise, but functional. * Initial version of Jifty::Action::Record::Search. It only supports * exact positive searches on fields at the moment. * There's no point in rendering confirm fields for passwords when we're viewing records in admin mode. * Don't create _gt and _lt search fields for magic _id refers_to fields. * Make the admin UI look slightly less crappy. * Make admin mode DTRT with columns that end in _id and refer to another model. REST * REST Dispatcher: model list reflection * Basic placeholder for REST plugin tests * REST Dispatcher skeleton that actually works * Jifty::Plugin::REST::Dispatcher - /=/action/ now works across HTML+HTTP. * J::P::REST::Dispatcher - all GET model URLs work, with 404s. * Jifty::Plugin::REST::Dispatcher - model fetch actually works! Actions * No longer generating arguments on C for fields that C Cs, since we can't do anything useful with them right now anyways. * Get the _confirm items on passwords to respect sort ordering * Debugging improvements to stop stupid developer mistakes like passing the wrong sort of object to a Jifty::Action::Record. * Now we do proper escaping of values in select-one lists. * Canonicalise {onclick}{submit} using the accessor wrapper. * Only call moniker when {onclick}{submit} isa Jifty::Action. Documentation * Wolfgang Kinkeldei: added a pod on models * Patch from Todd Chapman to fix tutorial * The beginnings of a Jifty code style guide. * Jifty::Manual::Continuations: reflect tangent() in the manual. * Developer documentation for the Jifty::Web::Form::Field::* hierarchy. * Add "How do I Add Atom/RSS Feeds" to Cookbook. * Add a recipe about running fastcgi server, which, in fact, only points to 'jifty help fastcgi'. * lib/Jifty/Manual/FAQ.pod - a start on an FAQ * Standardizing on referring to share/web everywhere in the tutorial. * Todd Chapman noticed a typo in the docs about autocompleters * Tutorial patch from rindolf++ * documented logger_component argument * Add a small bit of doc about creating your own classes that are normally created by J::ClassLoader * A start at some docs on upgrading, needs reviewing and some more examples Perfomance and optimization * Don't try to lowercase session information on postgres * Don't bother with session when serving static files. * Don't need ExtUtils::MakeMaker in Jifty::Util. This is about 7% of total compile time loading jifty. * Kill Jifty::Web::Menu circular references. * Transform actions in {onclick}{submit} to their monikers, to avoid circular references. Javascript and HTML * Fix AJAX canonicalization of date fields * Some browsers don't like trailing commas in JS arrays and hashes. * You can now pass confirm => 'question?' to javascript hooks (i.e. onclick) and get a confirm dialog in the browser. This doesn't work without javascript yet. * Use a local copy of the icons in our calendar widget, rather than the version that yahoo points to on akamai * fix the unexpected behavior in context menu for IE users. * Fix bug that didn't allow calendar months to be changed * Show calendar widget on focus and hide it on blur * If we don't have XMLHttpRequest, fall back on page loads * More thorough normalization of the submit parameter to Javascript handlers * Accesskey support added to buttons and links. It just uses the same keys as our javascript key bindings. * A little more Element/Clickable refactoring, and implementing a C option to onclick handlers that toggles whether or not to disable form fields for an action. * We now write out state variables at the start of forms, instead of at the end. * Moved "Dismiss" buttons on messages and errors into Behaviour, so they only show up in javascripty contexts where they'd be useful * Added the ability to support target attributes in menu items and clickables * IE doesn't support element.setAttribute("class", "foo"), so use element.className instead * Explicitly specify a radix of 10 (decimal) for the parseInt calls used in Yahoo's calendar widget when parsing the date to initially display * Don't attempt to disable hidden inputs, since this sometimes causes IE to die * Use our own "enter" handler to select the button to click, since Safari sometimes gets it wrong with complex fields * The setAttribute call doesn't work for "class" in IE * Fixing the calendar widget to create a new calendar every time, so that the calendar reflects any changes the user makes in the text field. * Support turning off autocomplete on a per-form basis. We still need per-field, but that's for later. Distribution * debian packaging files for jifty * Removed duplicated share/web (it was copied to lib/auto/Jifty) * CGI.pm 3.17 (and possibly earier) had a bug where regex metacharacters in the PATH_INFO would cause it to puke. We now depend on CGI 3.19 which fixed that bug. * Update Module::Install to 0.64. The important thing here is it gets us a fixed Module::AutoInstall which works when you run Makefile.PL from the command line without CPANPLUS installed. * Don't index the t directory * add "use Jifty::YAML" before all uses. * Moved some modules to feature sections in Makefile.PL, updated 01-dependencies.t to recognise recommends sections as well as requires * Win32 requires File::ShareDir 0.04 * Removed Text::Autoformat dependency and usage. Dispatcher * Dispatcher: Support tangent($url) as sugar for Jifty->web->tangent(url=>$url). * Dispatcher: Allow "**" in glob pattern to mean anychar including slash. * Dispatcher did not have a ->{cgi}, so ->method certainly could not work. Use the env variable for now. * Jifty::Dispatcher: abort(404) now works as the doc promised. Internals * Jifty->web->return in void context is now an immediate return. * Jifty::ClassLoader - Make Jifty::Handle a CL'ed module as well, so MyApp::Handle can implement scary magick of its own. * Don't blow up when trying to check if action mixins are autogenerated * Let's be better about not redirect-looping when calling continuations to paths that contain multibyte characters. This solution is a hack, but it's better than looping. * Fix placeholders on browser forward/back * Replace hard tabs with spaces for consistency * Jifty::Web::state_variables no longer prefixes keys with J:V- before returning them, and Clickables now serialize the *outgoing* state vars, instead of the previous request's. * When rendering a page region, mark actions as inactive, don't remove them, so that their arguments are available inside fragments. * If we receive an action's arguments, but it's not in J:ACTIONS, or we don't run it for some other reason, don't consider it to have failed for the purposes of stickiness. * moniker_for and action_form now behave more cleanly with forms which have no non-continuation fields other than their submit buttons. * No longer lose if you do a Jifty::Action::Redirect to the same page you're already on. Also, add the ability to force Web to redirect, even if it's to the current page. * Jifty.pm: Change all __PACKAGE__ to Jifty. * Jifty::ClassLoader: provide ->models accessor to list the model classes. * added Jifty::Request::clear_state_variables * Form::Clickable: Don't mix self accessors and args. * Refactor the constructors for Jifty::Web::Form::*, which takes initial hash and values to be overridden with accessors. Internationalization * LetMes' escaping should be utf8 aware * Email addresses probably shouldn't ever be utf8, but using the utf8 escaper is more Right(tm) * Properly UTF-safeing Jifty::LetMe Sean E. Millichamp and clkao both pointed out that Locale::Maketext could choke on overloaded objects like DateTimes. This change makes sure that doesn't happen any more. * Locale::Maketext doesn't always do the right thing with user-generated strings. So let's do that for it. * Properly encode arguments when generating LetMe URLs. Email * add UTF-8 charset to message body on notifications * added infrastructure to do mime mails * make Jifty notifications be UTF-8 Plugins * Jifty::Web::Session::ClientSide - Client-side sessions. * Added a ProfileBehaviour plugin to aid profiling Javascript Behaviours (see app_behaviour.js in the Jifty source for some more information) * Some Behaviour profiling UI fixes. * Removing profiling code from behaviour.js * Get the signup form in the login plugin to respect locally defined schema for the user class * Added information about the environment to the EmailErrors plugin * Making the Login plugin play nice with admin mode. * Plugin static roots should take precendence over jifty's Win32 * Win32 complains when you try to unlink open DB 0.60722 * Dispatcher fixes to deal with the better canonicalization we started doing in 0.60707 * changed all instances of '/usr/bin/perl' to '/usr/bin/env perl' * added a path option to Jifty::Web->url * added url tests * Jifty::Manual::Actions -- update the worldview to reflect the parameters/arguments concept split. * Introduce aliases. See Jifty::Param::Schema for the table. * Declarative Jifty Parameters. * See Jifty::Param and Jifty::Param::Schema for the new syntax. * Also added dependencies for Jifty::Script::Deps and declarative parameters. * Also updated test applications to use declarative parameters. * Adding the CSS browser selector trick from http://rafael.adm.br/css_browser_selector/ to Jifty * After autocomplete, trigger a validation. * Upping JSON::Syck version dependency. 0.14 fixes escaping in single-quoted strings. * Add a tooltip to the dismiss link and hide the dotted border * Trailing commas are not good for JS in Safari * Let's not blow up if we have placeholders on an input without a form * Don't fade autocomplete in and out, just show and hide it * Not submitting placeholder values when we submit forms or AJAX * Add the class before we set the text, so that it appears grayed-out, rather than appearing and *then* graying out * Support multi-line placeholders * textareas can have placeholders, too; Style them appropriately as well * Adding support for placeholders, grayed-out text in form fields that is written in with JS and vanishes on focus * Auto-accept cpan's wisdom about prompts (Jifty::Deps) * 0th sketch at "jifty deps" * packaging plan updates * J::Web::redirect can take a Clickable as arg, so make goto do that, instead of passing a URL with parameters, which doesn't work right * Proper port support on urls. Thanks to jpeacock. * Resolve inconsistent filenames vs packages (Plugins) * Switched Jifty::Web::url to use uri.pm rather than "heuristics" * Let's not blow up if an action has a result that's an unblessed reference. * Don't upgrade the database versions with schema --print. I'm not sure if there's a good way to persuade JDBI to give us the SQL to print, so we're just spitting out a warning for now, but that's better than the old behavior. * Stop notification from flipping out if you use a scalar as the To: * basic smoke test for jifty's notifications * Only set active child on create if we have a request * More serious failure message, and don't imply that it's necessarily the server's fault. * update .po files * Jifty::Dispatcher - there's no call_next, remove it from POD, fnord. * Refactoring message rendering slightly * Fix Jifty-Win32 by having canonicalize_path always returning /-separated paths, never \-separated paths. * Let classes be set on menu items * Adding a warning about our slow Rico.Corner.round * Documenting how to write sane Behaviours that don't leak memory (leak less memory, probably) in IE and aren't dog-slow. * Fix JS memory leak in IE * Make jifty tests respect the current given @INC, so it doesn't use lib when you are supposed to use blib during make test. * Make the subtest system less painful. * Use Jifty::Script to invoke test server, so it doesn't depend on bin/jifty. * Fix a Safari display bug * Fix calendar positioning bug and make sure it works when the date field is within a relative or absolutely positioned element * Test file for Jifty::Client * First pass at a Jifty client module. * English orthography fixes. * Trailing commas in Perl are good. In Javascript, they aren't, and sometimes cause IE to barf (like this one). * Hide focus border * Lowering the autocomplete delay * first-pass editorial run over Continuations.pod. * Sketchy sketchy handwavy descriptions of page region backend. Ramblings totally not expected to be interpretable. * Wrap the popup notification div in dropshadow wrapper hooks * Mention webservices in Actions doc * Double fallback goes the way of the dodo * Continuation manual * Set up the output API for mapping of request parameters (input API already existed) * Change method of getting results out of response on continuation RETURN * Fewer calls to ->arguments, though they might be cached already. * Not all CurrentUser classes may have a "nobody" * Jifty::Web::Form:Clickable - provide a bit more info on how to use the "returns" field. * jifty-dispatcher.graffle that shows the dispatch chain. * Nicer "server down" message * Re-enable form inputs after failure * toggleable page region clickables weren't doing the right thing when used in non-ajax mode * Fix the validation and autocomplete race condition * Skip nobody and superuser when we do notifications 060707 * Minor build fixes 060706 * SECURITY UPDATE: Previous versions of Jifty did not protect users against a class of remote data access vulnerability. If an attacker knew the structure of your local filesystem and you were using the "standalone" webserver in production, the attacker could gain read only access to local files. We found this vulnerability on 6 July 2006 during an internal Security scan. We've added new tests to ensure that these and other similar vulnerabilities don't recur. We recommend that ALL users of Jifty UPGRADE to 0.60706 IMMEDIATELY. 060616 * The last CPAN release was broken. No real changes. 060615 (15 June 2006) The following incompatible changes were made to Jifty. For a complete changelog, please see the "Changes" file. * Removed the ActionBasePath and CurrentUserClass configuration variables. This breaks backwards compatibility. * If you've overridden /_elements/javascript in your app, you'll want to take a look at the new stock version to see what has changed. * The JS method document.getElementsBySelector() no longer exists. Use cssQuery() instead. * Jifty::Record now returns empty objects for related objects that can't be loaded, rather than undef * The keybinding JS code is now a more proper library (Jifty.KeyBindings) and less intrusive. If you've overridden the default /_elements/wrapper in your app, you'll want to make sure you get rid of the keybinding javascript (see the stock wrapper). Just include <& /_elements/keybindings &> wherever you want the keybindings for a page to appear. * This shouldn't be the cause of breakage, but the included rico.js is no longer a stock Rico build. See the comments at the top of the file if you're interested. * 'last_rule' now aborts only the current stage -- thus, last_rule from a 'before' block will *NOT* prevent the RUN stage from happening! This is a *BACKWARDS-INCOMPATIBILE CHANGE*, but fixes the dispatcher to agree with its docs. * 'abort' is the correct call to skip straight to the cleanup block. * This allows the edit in place plugin to 'claim' its path and protect it from access control in the app's 'before' blocks 0.60507 (7 May 2006) * Pod fixes from Eric Wilhelm lib/Jifty/Object.pm - removed incorrect '=for' directive lib/Jifty/Web/Form/Field.pm - removed incorrect '=for' directive lib/Jifty/Web/Form.pm - removed incorrect '=for' directive * Better failure messages on when schema upgrades with SQLite fail from Alex Vandiver * Be a little more explicit about SQLite's limitation, and a possible (painful) workaround * Update the inc tree to 0.62 for various fixes, in particular improved share_dir compatibility. --Audrey Tang * We were inconsistently using Jifty::Util::make_path as a subroutine. It's a class method. This could break the stub generators and tutorial. Thanks to Sean E. Millichamp 0.60505 - Cinco de Jifty! (5 May 2006) * Native support for times and timezones. * Bug fixes (Many contributors) * Documentation updates (Many contributors) * Win32 Support (Audrey Tang) * New Session layer based on Jifty instead of Apache::Session. Designed for AJAX and Continations (alexmv) * Jifty internal metadata store (The begining of an internal configuration management system (alexmv) * Form fields no longer automatically insert the field name by itself as a class. Instead, the class has changed to "argument-" to avoid conflicts with generic class names (such as date). * Move allow and deny'ing of actions into Jifty::API; this breaks backwards compatibility. * Don't allow applications to be named "Jifty" by default. They are forced to be named "JiftyApp" now, for namespace reasons. * Remove Jifty->web->actions method; you should be using Jifty::Form's actions method. * Beginning of localization support. * Notifications can now take a user object or an email address * "sort order for arguments" patch, as suggested by miyagawa. This makes use of sort_order column property of Jifty::DBI * YAML -> Jifty::YAML * Switch from Time::ParseDate to Date::Manip, since the former isn't win32 compatible * Shuffle the Mason and static handlers into Jifty::View namespace * Jifty no longer attempts to AJAX submit file upload fields * We no longer write DefaultStaticRoot and DefaultTemplateRoot into config files * Added a "LogLevel" option to the Jifty config file, so you can more easily enable debug logging. 0.60321 * 'return if already_run' in after rules so they run only once * Overhauled the static server to try really hard to force caching by clients. It also gzips its content, if possible. * More stylish forms * Allow Jifty->web->return( to => "..default path..", ...) * Actually accept region names to refresh * Halo improvements * chromatic supplied a patch to switch from UNIVERSAL::isa to ->isa. * Trivial webservices hack * It's now possible to override Jifty::Record's baseclass in your app 0.60221 * Use Jifty::Util->require to log require errors * Auto-generate Bootstrap class * Give us a way to get the CurrentUser from a Mech object during testing * When calling a continuation, try to make sure that the urls are really different, not just differently canonicalized, lest we get an infinite loop * Default to not showing debug logs * Fragments in JS land now know about their parents, and pass their superstructure in the fragment request. This lets $region->parent have full information. * 'refresh => region' mode for replacement * Better docs on region replacement * add_* calls on Jifty::Request now return the object added, not the request 0.60213 * Jifty::Dispatcher written * Jifty::Handler is now an object, not a utility. It has the power to "run" a request. * Call chain is now Handler to Dispatcher, which calls Jifty::Web and Mason, instead of the other way around. * Better Documentation coverage. * Paint on some really bitchin 'go faster' stripes on the server. * Refactored the dispatcher to use exceptions rather than LABELS: so that Devel::DProf doesn't fall over * Added a new "DevelMode" flag, to toggle the peformance-killing development aids. * Only drop tables if the tests all succeeded * Fragments now go through the dispatcher * `jifty schema` overhaul * Mandatory form fields now have a css marker. * Do away with setup_actions mason method * Stop using mason notes * Jifty::Script::Schema support for basic mysql love * lighttpd support. * Move autocomplete.xml and validator.xml to __jifty/. * Upgrade to Scriptaculous 1.5.1. * Delete is its own action now, instead of being part of Update. 0.51228 * Jifty::Action->argument_names should sort keys lexographically, not random hash-ordering. * Remove last vestiges of ::Delete from ::Update * Refactored Jifty::Config to allow the application class to be specified when calling Config->guess * Refactored Jifty::Script::App into bite-sized morsels * Made Jifty::Script::App generate a config file * Made Jifty::Script::App and Jifty::Config::Guess happy with multi-level package names 0.51225 - Initial release