------------------------------ Jifty 0.90701 - July 1st, 2009 ------------------------------ BUGFIX ====== * Fix a bug in jifty.js when extracting ordering information for actions submitted via AJAX I18N ==== * Updated zh_tw translation ------------------------------- Jifty 0.90630 - June 30th, 2009 ------------------------------- POSSIBLE INCOMPATIBILITIES ========================== * Modules which 'use Jifty::Dispatcher -base' and 'use Jifty::View::Declare -base' will have strict and warnings automatically turned on in them. CORE FEATURES ============= * Factor out available_values into a method * Support plain strings in available_values * In mandatory fields, tell the user which fields failed validation REFACTOR ======== * Add a jifty->admin_mode method; this should be used in place of Jifty->config->framework('AdminMode') BUGFIX ====== * Don't rely on cwd for creating and reading PID files * Automatically create the pid dir if it's not existent * Even admin users couldn't access the online docs * jifty_root returned a wrong path (actually a wrong volume) if we're not in the same volume as we installed Jifty * Extract ordering information for actions submitted via AJAX * Fix SPA history event on page load and page reload CRUD ==== * Don't show new item widget unless current user can create * Make display_columns fall back to the record's readable columns I18N ==== * Updated zh_tw translation PLUGINS ======= * REST: Run more of the dispatcher tests * REST: Support .html format * REST: 403 if the record is unreadable * REST: Display actions valid_values * SQLQueries: Display query time in each query's summary * SetupWizard: Plugin to make it easy for end-users to set up your app * Config: Plugin to add configuration editor DOC === * Updated zhtw tutorial * Provide a Template::Declare page region example TEST ==== * Per-test Test::Builder object, for compat with new nested TAP support in Test::More VIEW ==== * Add extra css selectors, allowing arbitrary growl updates ------------------------------ Jifty 0.90519 - May 19th, 2009 ------------------------------ POSSIBLE INCOMPATIBILITIES ========================== * Jifty::Mason::Halo has been demoted into into Jifty::View::Mason::Halo; if your wrapper scripts invoked methods in Jifty::Mason::Halo, they may need to be changed. CORE FEATURES ============= * Add a Jifty->web->qualified_parent_region for munging your sibling regions * Basic background process support via Jifty->background * Add and use the display_length attribute on columns * Make Jifty::DateTime->from_epoch(100) dwim * Server script immediately forks, so it can be restarted * Flush and close the client connection before running after {} blocks CRUD ==== * When we delete an item in CRUD, don't refresh the parent, because that closes open editing forms. Just replace the current region with empty * Make no_items_found a region * When you use CRUD to create a new element, clear any existing "No items found" notice * Hooks for overriding the display of a particular form field * Factor out page_title for CRUD I18N ==== * Apply maketext perl plugin to pl,pm files, to grep more kinds of i18n string formats. * Fix localization js typo BUGFIX ====== * Call to _page_class needs parens to not get parsed as a package * Avoid use of "packge HTML::Mason::Exception", which causes PAUSE to hate us * Fixes for plugin share paths when running Jifty out of @INC * Comment the warning when ApplicationClass::Config is not a sub-class of Jifty::Config * Move pubsub activation to being on document ready, just in case * Fix a function call name * Give an actual error message when there's no current user * Set the InactiveDestroy on the dbh when backgrounding * In forking servers, disconnect the database before stalling on accept * Fix another shared database handle between tests and test servers * There is no utf8 in this file, thus no need for "use utf8" * Always specify _which_ file had errors opening when you die DOC === * Begin making POD coverage a little happier with TD templates * RequestInspector API doc * Pod coverage for script classes * POD coverage for SQLQueries * Fix POD warnings find by lintian tool from debian packaging * Better POD coverage * New entry in Manual::Cookbook: Render model refers_to field as a select widget with meaningful display name * Fix cookbook "brief_description" section * Update Manual index * Updated japanese tutorial * Updated zhtw tutorial * add Deploying_zhtw, AccessControl_zhtw INSTALL ======= * Update to Module::Install 0.85 * Depend on JDBI 0.57 because of display_length and rename_table/rename_column * Bump WWW::Mechanize dep for working ->back method PLUGINS ======= * allow plugins to return more than one static_root. * Add a RequestInspector plugin, which any per-request debugging aids use * Reimplement SQLQueries as a RequestInspector consumer; LeakTracker, Gladiator, and NYTProf now also use RequestInspector * Include sum of query time in the SQLQueries summary * Try harder to avoid loading a prereq_plugin multiple times * Refactor SQLQueries to use a real view * SQLQueries further display: bind parameters and stack traces * Don't display bind parameters if there are none * Add a Config plugin, for adjusting Jifty configuration from the application; can restart the standalone server to take changes, additionally. * Remove custom page {} sub from Password's View class. The page {} in Password's View class simply delegated to the application's View class' page {} -- no other part of the TD page code uses this codepath. This _may_ break backwards compatibility in some applications, however. PUBSUB ====== * Every 10 seconds, have PubSub send a whitespace character as a keep-alive. Without this, Pubsub children under a Forking server stick around forever after the client has left the page. This does not address the problem of FastCGI clients, which have a similar problem. REFACTOR ======== * Split Jifty::CAS::Blob out, and document * Migrate to new rename_table/rename_column in JDBI * Factor out the actual record creation in JARC into a create_record method * Refactor away duplication in Jifty->web->link * Change all calls from Template::Declare->(new|end)_buffer_frame to new API TEST ==== * Improve clarity and correctness of moniker_for * Add a test for restarting the server * Fix a non-deterministic test which failed when load was too high * Silence TODO warnings * Avoid undef warning * Squelch debug message unless running verbosely VIEW ==== * Pass $self to page's meta so method dispatch still works * Apps can now include app-late.css for restyling YUI and jQuery and whatnot * Give timepicker buttons a label of "Pick time" ------------------------------- Jifty 0.90409 - April 9th, 2009 ------------------------------- POSSIBLE INCOMPATIBILITIES ========================== * Mason's dhandler is no longer in charge of generating 404's; instead, the dispatcher catches when no views can handle a request. The 'mason_internal_error' page has also been renamed to the more straightforward '/errors/500'. * Actions found under Jifty::Plugin::SomePlugin::Action are now denied. As these actions are always mirrored under the application's YourApp::Action class, this provides a single point of extensibility and access control. As long as plugins and applications always refer to the application's mirrored action class -- which they should be doing already for extensibility -- this change does not affect backwards compatibility. * AppClass::Action is now a mixin, and does not inherit from Jifty::Action. This removes a diamond inheritance pattern from autogenerated jifty actions, and those made by `./bin/jifty action`. This is additionally needed in order to allow `jifty action`-generated UpdateWidget actions to inherit from a consistent and correct set of parents. This _will_ break existing actions which only inherit from YourApp::Action but not Jifty::Action as well. * The div with id 'jifty-wait-message' has changed CSS, and now includes an animated 'spinner.' Applications which customized the CSS of this element may need to adjust their CSS. * Jifty no longer uses the 'prototype' javascript library by default, instead relying on 'jQuery'. Applications running config file version 3 and below will have the 'Prototypism' plugin added automatically, which enables compatibility with the 'prototype' javascript library. This plugin can be safely removed if your application makes no use of 'prototype'. * URI unescaping is now consistent between FastCGI and standalone SECURITY ======== * Fix a security hole in the REST plugin which let you call any method on the model. We were checking the load by column with valid_column instead of the display field. This would not be done with any elevated privileges, but still might have allowed unexpected access. * Requests to /=/subs how return immediately if PubSub is turned off, instead of consuming a thread on the server CORE FEATURES ============= * Jifty::Datetime has been retooled to be more generic * Allow subclassing of Jifty::Config into YourApp::Config * Store the request method on the request object. This is so a POST request with an action, which is redirected to a new URL in a before {} block, doesn't show the user an obscure 'Action denied' message. Since the original request with the action was a POST request, it is _not_ a cross-site scripting vulnerability. * YAML configuration file merging is now slightly smarter for specific listrefs: MailerArgs and View.Handlers arguments now replace earlier settings, rather than appending to them. * Overload stringification of ClassLoaders, so warning messages with @INC are a bit more educational * The configuration setting FallbackViewHandler has been removed, as it is no different from the last Handler in the View section. For backwards compatibility, Jifty::Handler still adds it to the set if it exists in your config file, though. * In the DateTime filter, use the application's DateTime class if they have one * Handle Jifty->web->new_action('CreateFoo', moniker => 'create_foo') (makes "class" optional) * Move Mason-specific methods out of Jifty::Handler * Add an "explain" method to Jifty::API, to trace action deny/allow * Deny and hide autogenerated application action abstract base classes. * Make Net::Server subclasses use Log4perl infrastructure * Move log messages, whenever possible, to $self->log rather than Jifty->log * The code that walks the calls stack to find the correct current_user has been refactored. * Split out Jifty::View::Mason::Request (renamed from HTML::Mason::Request::Jifty) into its own file. ACTIONS ======= * Obviate the need for the really short sub record_class {...} in most cases of YourApp::Action::UpdateFoo (and SearchFoo, DeleteFoo, and CreateFoo) * Added an Execute virtual action for help building general "do something to a record" actions. * Updated the Create, Execute, and Update actions to make them easier to extend via Jifty::Param::Schema * Extract the validation of valid_values into a method which is overridable * Whenever we can (on any action and on record ->creates), pass in the other field values so a validator can base its validation on those as well. * Add an option for force ajax validation failures on empty form fields * Allow earlier fields to set validation failures on later fields * "ajax validates" on a column should actually activate it, with an action validator * Add a Time and DateTime renderer * Add a Bulk update action * Add report_detailed_messages option in Jifty::Action::Record * Allow literal region names in qualified_region * Allow action parameter renderers with :: in their name * Make Jifty::Action::Record::Search skip container columns. * In Jifty::Action::Record::Search actions, "contains" conditions should not kick in if its length is 0. * Don't push Jifty::Action onto @ISA if the class is already a Jifty::Action COMMAND LINE ============= * `jifty console` has been removed in favor of `jifty repl`, which is provided by Jifty::Plugin::REPL. * `jifty deps` has been removed in favor of Shipwright. * Added `jifty version` command * Add a --no-bootstrap option for `jifty schema` command * Quiet down warnings about missing application root when creating a new application with `jifty app` * If someone creates an app with a Foo::Bar name, make it Foo-Name for them. * Add control of running user, group, and host in standalone server PUBSUB ====== * Multiple regions can be subscribed to the same PubSub channel * Coalesce region updates in PubSub. * PubSub updates can now have effects on removal and addition. * Support for Jifty->subs->update_on( class => 'SomeEvent' ) as a shortcut. * Add an Jifty::Event::Log, and a Jifty::Logger::EventAppender, so you can cause arbitrary log messages to send events, based on your log4perl config. * Don't connect to PubSub during cleanup, and disconnect PubSub after initialization I18N ==== * Locale::Maketext::Lexicon is not smart about seeing the same path more than once. This is a problem if the app uses multiple plugins, which all point to the Jifty share directory for their po files. * Updated fr, ru, zh_tw, ja translations * Added `jifty po` script to manage po and pot files BUGFIXES ======== * Delay view setup for as long as possible; this prevents command-line scripts from creating Mason cache directories. * Better warning-proofing for 5.10, which gets picky about lc called with undef, like render_as sometimes is. * Let Jifty::JSON export objToJson and jsonToObj if the user requests it * Log an error on invalid display_from or value_from in Jifty::Action valid_values * In void context, Jifty->web->link renders the link or button automatically. * Fix memory leaks due to weak reference in Jifty::Web::Menu, Jifty::Web::Form::Field, and Jifty::Web::Menu. * Check that a valid_values collection has a ->count before calling ->first on it * The "get" function of Jifty::Dispatcher contained a bug that made it return '' whenever the actual value was '0'. Additionally, show(0) did not work, and set(foo => 0) and default(foo => 0) would print '' instead of 0 in debug log. * Do not attempt to create sqlite databases with colons in the filename, as win32 does not allow them. * When setting the continuation request's path in a redirect, we need to unescape it to be consistent with Apache, lighttpd, and HTTP::Server::Simple * Split the _current_ continuation from the continuation we're returning or calling into. This means you can return from a continuation you're not in, and it does the right thing if actions fail to validate, and the call doesn't go through. * Force Net::Server to not duplicate filehandles when it forks * When we set up database connections, first purge the memcache connections, if any; reusing memcache filehandles leads to broken connections. After we fork in the server, we re-set up the database connections. * Fix potential connection problems after forking in the server * Intuit https better in Jifty->web->path * LWP::UserAgent explodes unless ENV{http_proxy} looks like a URI, and '' doesn't cut it. * Stop Jifty actions from loading by primary key if you pass in blank primary keys. * Don't try to drop the DB if we know it doesn't exist * Fix multiple loops which looped on $_, and called functions which implicitly modified $_ * Include all css_files when not using compressed css * Clean up "action denied" warnings a bit, such that they give useful backtraces, and only give additional cross-site scripting warnings if the request method is GET. * Work around a bug in 5.10 where nested loops trigger "Attempt to free unreferenced scalar" * Don't reset keybindings when we display the keybinding div, or we never have any to display. CRUD ==== * Updated POD * Add support for predefined searches, and sort headers * If create from new_item_controls fails, don't show an empty row in the CRUD UI that goes away later. * 'id' column is not editable (though if you really demand it you can have it) DOCUMENTATION ============= * Tutorial has been updated to use Template::Declare instead of Mason * Jifty::Manual::Javascript describes programming techniques for javascript in Jifty. * Jifty::Manual::jQueryMigrationGuide describes the steps in migrating from Prototype to jQuery. * Update copyright year to 2009 * Updated documentation for `jifty` command * Added zh_tw translation of the tutorial PERFORMANCE =========== * Don't call ->plugins _twice_, since Module::Pluggable doesn't cache at all, and stat is expensive * Subrequests should never need to run actions; this should speed up regions * Having a local $Request saves thousands of method calls to Class::Accessor per request * In Jifty::Web::Menu, cache ordering of children, and url value, more aggressively; also remove unnecessary _parent accessor * Cheat, in Jifty::CurrentUser, and walk around Class::Accessor methods in a hotspot * Install a faster Jifty::Web->out in the handler once we have output headers. * Remove uses of a Class::Accessor where we don't need one * In certain hotspots, walk around Class::Accessor calls and access the object hash directly. * When outputting links and buttons, only iterate over javascript attributes that have been set, rather than _all_ attributes. PLUGINS ======= * In plugins, add support for "after app => run {...}" instead of just "after plugin Jifty::Plugin::Something => run {...}" in dispatcher. This allows plugins to provide dispatcher rules which the application can override. * The following plugins, previously distributed as part of Jifty core, have been moved into their own distributions: - Attributes - Authentication-CAS - Authentication-Facebook - Authentication-Ldap - AutoReference - Chart - Comment - Feedback - Gladiator - GoogleMap - LeakTracker - Monitoring - OpenID - Quota - Recorder - SiteNews - TabView - Userpic - UUID - Yullio * The following plugins, previously distributed under plugins/ as part of core, but not installed by default, have been moved into their own distributions: - AuthzLDAP - CodePress - DumpDispatcher - EmailErrors - ExtJS - ProfileBehaviour - WikiToolbar - WyzzEditor * Added ViewDeclarePage plugin, for more advanced Template::Declare pages. * Several deprecated plugins have been removed: - AuthCAS (replaced by Authentication::CAS) - AuthLDAP (replaced by Authentication::LDAP) - EditInPlace - Debug (replaced by AccessLog) - Nothing * Authentication::Password: Extend Login action so people can use username to login, though email takes precedence of username * OnlineDocs: Cleanup and dispatcher-ize * OnlineDocs: Link to local application pod directly * OnlineDocs: Allow linking to specific page within documentation using /__jifty/online_docs/?n=Jifty::Manual * REST: Include the "by" column attribute in the REST interface for Net::Jifty * REST: Some doc for extending your REST interface's object dump * REST: Propagate output format across REST redirection * REST: Give help under /= as well * REST: Better errors from the REST API for hidden/denied actions * SinglePage: Added history support for links; we use the "Really Simple History" javascript library to make the magic work. (http://code.google.com/p/reallysimplehistory/) * SinglePage: Add a temporary variable for disabling spa in runtime. * SQLQueries: Also clear slow/halo queries on "clear queries" * SQLQueries: Avoid undef warnings from undef bindings * User: Since it is internally used as a flag to store if one has valid email address, the column "email_confirmed" should never be rendered. TESTING ======= * Move a skip_all from compile time to runtime. some cpantesters failed a test file with no actual tests :( * Move t/lib/Jifty/SubTest.pm to lib/Jifty/Test/Dist.pm Additionally, make it descend from Jifty::Test, so you don't need to use both * Add test app from Peter Mottram to uncover this valid_values bug * TODOify some tests that need some virtual-column discussion * Depend on the $$ for ports, not on random numbers. This reduces the likelihood of port conflict. * Add a test helper module for matching notification email sent during a test. * Fixes for updated LWP, WWW::Mechanize; ->get and ->post are not ->get_ok and ->post_ok * Add a TestServerWarnings plugin during tests, which allows us to have a warnings_like test, which checks warnings on the server side. * Bail early with exit value, if database drop or create fails * Do not load po files by default anymore. You can provide l10n => 1 for tests requiring po loading. VIEW ==== * Better integration between views, using a common String::BufferStack. This allows cross-calling between Template::Declare and HTML::Mason templates. * Kill our custom popup notifications in favor of jGrowl. Additionally, use Behavior to change full-page action messages into sticky jGrowl messages. * Added a 'multiple' flag for select form field * Make the default "Loading..." display as an animated gif spinner * Support for "loading" fragments for lazy regions. * Add, and respect, the calendar-starts-monday element class for calendar javascript. * Add a render_hidden to Jifty::View::Declare::Helpers ------------------------------- Jifty 0.80408 - April 8th, 2008 ------------------------------- I18N ==== * Make account confirmation error message translatable - alech * r4925 removed loc.js from jifty::web, which should have been added to the i18n plguin. - clkao * random l10n. - clkao * typo in zh_tw.po. - clkao * updated zh_cn po - sunnavy BACKWARD-COMPATIBILITY-PROBLEM ============================== * THE FOLLOWING CHANGE BREAKS BACK COMPATABILITY: * 'set' in T::D templates and the dispatcher no longer alters the values in the request itself. It alters values that are not stored if the request is saved as a continuation. This saves us from contiuation bloat due to objects getting stored in the continuation. This does not lose us much, because any arguments set via 'set' will get a chance to be set again when the continuation is called. Due to the implementation, however, 'set' cannot be used any more to alter or add actions, state variables, or the like. Some might view this new restriction as a feature, though, given how much of a kludge it felt like before. - alexmv * Complain loudly about back-compat when an action is denied. Changelog the Jifty::API changes. - sartak * Update YUI from 2.2.1 to 2.4.1 *** Please check your apps for incompatibilities as there have been *** many changes between these YUI versions. - trs BUGFIX ====== * add a check for the op to the dispatcher condition cache because on and the other ops generate different regexps - falcone * Check validity of PID in the lock file - alexmv * Delay things which call Jifty::Util::require; Jifty::Util is often in *mid- require* when Jifty::Everything is loaded, thus causing calls to Jifty::Util::require to silently fail. - alexmv * Don't single-quote our JSON output, since JSON technically only has double quotes. - alexmv * Fix for autogenerated modules. Since sticking a method into them can cause things to "inherit" being autogenerated(!), we instead keep a global hash of them. - alexmv * Fix schema code, which checked the wrong class for plugins overriding the app. - alexmv * Fix typo causing the CSSQuery plugin to fail - trs * Force time zone update on current_user change - alexmv * Jifty::Util->_require can muck up $1, $2 so save those before using it. - sterling * Added an additional guard on actions to keep from short-circuiting record actions built from plugins that are overridden. - sterling * Jifty::Util::app_root - File::Spec::Win32's catdir() just got much more strict in PathTools 3.27, such that catdir('C:', 'perl') now returns 'C:perl' instead of 'C:\perl'. - audreyt * Jifty::Web::Session::ClientSide - Unbreak this module by conforming to the latest ::Session API (with _cookie_name) as well as Base-64 encoding the cookie itself. - audreyt * Misc current_user cleanups to deal with issues unmasked by RT on Jifty - jesse * Now with more running under "use strict" - alexmv * Old requests from continuations may not have template_arguments set - alexmv * Jifty::Web::Session->continuations returns a hash, not a hashref. - alexmv * Revert r4829 -- it registers all actions in the *form*, which is wrong. - alexmv * Redirects during continuation return should catch dispatcher ABORTs - alexmv * Refactoring around the fact that Scalar::Defer::defer'd variables will never return undef until they're forced. - jesse * Revert r5120 for now; it breaks on page region updates, when regions don't know if they were in a form. A more correct fix (which will put this logic back) will be forthcoming. - alexmv * Static handler and CAS handler spit out same headers now - alexmv * Work around bug in Devel::InnerPackage - alexmv * Wrong column type. - alexmv * Warnings avoidance for undef valid_values in actions - alexmv * catpath wants a file, or File::Spec::Unix carps about undef values - alexmv * lockfile error-proofing - alexmv * A fix for a time zone bug exposed by Doxory: copy the time_zone from JDBI::Filter, but allow for overriding it - sartak * Actually, no, don't bless the result of Jifty::Result->as_hash - sartak * Backing out the previous commit as this has been moved up into Jifty::DBI. - sterling * Better error reporting if `jifty app` can't create directories (due to e.g. perms) - nelhage * Bulletproof Jifty::Util->make_path - sartak * Bypass ACLs to check - trs * Check the database connection before handling requests. - sterling * Copying a reference unweakens it, so a small fix for that in JWFF- >_action. But that isn't our leak, I think - sartak * DateTime->new is pretty strict, so use DateTime->now - sartak * Don't call _handler_setup unless the normalising accessor is used as mutator. - clkao * Don't try to make undef urls absolute - trs * Enforce uniqueness on (object_id, object_class, type) - trs * Fix a typo in r5217. - clkao * ID is sometimes passed into Jifty::Action::Record::Update, we want to ignore it if it doesn't change, to avoid spurious permission errors. This codepath could use some more thought - sartak * Improve Jifty::DateTime->new_from_string so that it can handle time zones properly, and add Jifty::DateTime->get_tz_offset. - sartak * In Action::Record::Delete and ::Update, don't require that error messages be returned from set_field and delete. This is to facilitate before_$crud JDBI::Record triggers - sartak * Make Jifty::DateTime->current_user_has_timezone work (ie without requiring a blessed reference) - sartak * Minor typo fix - jasonmay * Precedence - trs * Removing from scripts because when evalScript() is called during Ajax loads, IE7 complains about syntax errors. - sterling * Rename $pkg to $file in Jifty::Util->_require, and don't append .pm if it's already there - sartak * Revert 4649 js memoization which caused .error div problems - sartak * Revert 4650 (cssquery change) because ".error is no longer hidden for the region being replaced with ajax" in some browsers - sartak * Revert 4746 because it's actually not evil at all - sartak * Tiny fixes in the new Jifty::Script::Script (hanenkamp++) - sartak * Two small fixes for Jifty::Result changes: missed two fields and for backcompat we need to bless the resulting hash into Jifty::Result - sartak * Use the cssQuery-jquery back-compat script, and have the CSSQuery plugin remove it. This way the jifty.js cssQuery call actually works. Which fixes the admin CRUD. Woo hoo - sartak * change only for readability. thank jesse san. - bokutin * fix Jifty->web->session->continuations. change accessor from $_->key to $_- >data_key - bokutin * fixed a wrong regex - sunnavy * for mysql varchar must be explicit (255 should be enough) - yves * move fakeapache lexwrap into after_listener_setup so other fakeapache instances won't be affected by jifty::server. - clkao * oops, revert accidental changes in the deferred sub. - clkao * revert load_or_create canonicalization and move discussion on jifty- devel - dpavlin * run canonicalization before load in load_or_create - dpavlin * schema upgrade error when creating new tables - ssinyagin * seems varchar(255) won't work, have to set max_length - sunnavy * tiny fix, sometimes options are undef - sunnavy * utf8 on $path cause garbage characters in Mason. This problem line in HTML::Mason::Compiler::raw_block() is $comment = "#line $line $file\n" if $self->use_source_line_numbers; If utf8 on $path was pass UTF8_ON = "#line UTF8_OFF UTF8_ON" ( $file is $path ) - bokutin CORE ==== * Added a JIFTY_APP_ROOT environment variable for forcing an app root even if we're in another directory - jesse * Code to actually fully remove a session - alexmv * J::Web::Session::ClientSide - Switch to Storable because we really want to serialize all kinds of things. - audreyt * Jifty::Web::Session::ApacheSession, a session backend that bridges to Apache::Session. - audreyt * Lockfile support - alexmv * Protected and private columns and models - alexmv * defer default value until we really care about it - jesse * Add 'jifty repl' which uses the awesome Devel::REPL - sartak * Add support for application overridden models which gives us: (1) References from plugins to app models with less pain. (2) An easier implementation path in cases where mixins are just extra work. (3) Allows application flexibility to modify plugin models. (4) Consistency with the way apps may override actions an notifications. - sterling * Add the continuation debugging tool from hiveminder - nelhage * Adding a CLI thingy to generate stubs for command-line scripts. - sterling * Allowing actions also shows them. Fix the defaults so that "weird" actions (such as Jifty::Action) are hidden. - sartak * Accept user_object->timezone for intuiting the user's time zone. - sartak * Force result->success to be 0 or 1, for the benefit of REST users - sartak * If the user runs "jifty server" before the first "jifty schema -- setup", create the database for them - sartak * Jifty::DateTime::is_date method, which tells whether the given J:DT is only a date - sartak * Let Jifty::Param::Schema actions define documentation for paramters. - sartak * Make Jifty::DateTime dates Jifty::Util->stringify to just yyyy-mm-dd, no 00:00:00 - sartak * Make sure actions still fail when you set columns you can't update (or read) to undef - sartak * Make the json and yaml webservices use Result->from_hash - sartak * Move the REST object walking into Jifty::Result so that it may be reused - sartak * add an utility summarizing js file sizes and minified sizes. - clkao CRUD ==== * Don't explicitly register the delete action in CRUD - alexmv * new_item doesn't use an id -- don't try to get() it - alexmv * Small cleanups to CRUD views to help make RT work - jesse * unfubarring the admin CRUD step 1: give each item a form, instead of one form containing everything (which saddened Firefox) - sartak DOC === * Clean out un-necessary files from examples/ - alexmv * Deployment manual updates from Stanislav Sinyagin - jesse * Jifty::Dispatcher: Extremely trivial POD typo cleanup - audreyt * Jifty::Dispatcher: Trivial minimal POD fix for correct vim highlighting (avoiding "package" at the beginning of the line.) - audreyt * Make POD coverage happy - alexmv * POD nit in Jifty::Web::Session (no whitespace on line before POD command) - alexmv * Perltidy - alexmv * Port the chat demo to Template::Declare - jesse * Add myself to AUTHORS - bokutin * Fix POD coverage failures for the Comment plugin. - sterling * Fix part about re-use of actions outside Jifty app by creating request and response just like Jifty::Test->web does. - dpavlin * Halo pod coverage - sartak * Steal documentation from the model class in Jifty::Action::Record - sartak * added mod_perl and file permissions info - ssinyagin * appended myself - ssinyagin * fix pod. - bokutin INSTALL ======= * Update JSON::Syck dependency to 0.29 because previous versions contains a bug that would deserialize "foo:bar" to "foo: bar" when SingleQuote is set to true. - audreyt * Add ApacheSession to MANIFEST. - audreyt * Bump JDBI dep - alexmv * Bump Scalar::Defer dependency, for great lack-of-memory-leak justice - alexmv * Don't pull in another dep for something trivial - alexmv * Email::MIME and Email::Simple went through a period of not talking to each other, throwing crokery around, and generally making life miserable for each other. Force versions of things which are at least on speaking terms again. - alexmv * Regen MANIFEST since it's been a while... - audreyt * Updated Module::Install - alexmv * Upgrade Class::Inspector dependency so Win32 won't break with File::Spec 3.16. - audreyt * Add Devel::Gladiator to Makefile.PL, other little fixes in here - sartak * Depend on Regexp::Common itself - sartak * Dependency on URI::Escape (which we're already using, probably pulled in by Mason) - sartak * More Makefile.PL tweaks - sartak * Typo fix in Makefile.PL - sartak * Update MANIFEST and META.yml - sartak * Use "recommends" instead of "requires" for optional dependencies. Comments requires Regexp::Common::Email::Address - sartak * debian packaging - yves MISC ==== * Refacotring/cleanup - jesse * Munging @INC isn't necessary in new scripts, Jifty does that for you now - sartak * We haven't needed File::Basename in bin/jifty for a long time - sartak PERFORMANCE =========== * Add an ->enumerable method to record classes, so we don't try to create huge valid_values lists for record classes which are known-huge. - alexmv * Attempt to weaken another reference to the current action that may be leaking - jesse * Cache triggers for session and metadata - alexmv * Compressed CSS and JS caching backout - jesse * We somehow had dropped caching headers when we compressed css and js. - jesse * Don't load up the column object on create widgets unless we need it. - jesse * Beginning some serious refactoring of Jifty::Action::Record- >arguments - jesse * starting to split out current values of things - jesse * store the base 'arguments' hash and merge in default values on the fly. This should result in a healthy performance boost. But is also the first place to look if things start acting funny any time soon. - jesse * If we have a user object already, use it to fetch the email address when generating a LetMe - jesse * Fix menus to properly weaken "parent" relationships (and normalize _parent and parent) - jesse * Terrifyingly, the added /s causes escape_html (2% of hiveminder's runtime) to benchmark 200% faster. - jesse * There's no need to compile Dispatcher rules to regexes every time they're evaluated. Cache them. - jesse * nope - I'm wrong. bad benchmarking made me believe that the thing I am reverting was faster - jesse * Another JS speedup: cache the results of selectAll. it's called only 8 times for /todo, but caching saves ~80ms. - sartak * Another copied weakref in Jifty::Web::Form::Field, though this code was just changed so I don't think it explains our white whale - sartak * Cache the log handle so the file isn't opened every hit - sartak * Compare old/new values for updating _before_ checking if we can update it (no point in saying permission denied for a column we don't want to actually change). However, only do the comparison if we can read the field so that we don't get bogus undefs. Everybody's happy now. Bonus: make references X by Y work when comparing old/new values - trs * Fix a real memory leak in Jifty::Web::Menu due to copying a weak reference. Woo! - sartak * Fix a validation bug where we'd get a lot of "extend=function (object) { return Object.extend.apply(this, [this, object]); }" arguments. This is because prototype.js overcomplicates form element serialization. - sartak * In deferred sub called from arguments, we need to use weakself. - clkao * use Jifty::YAML, not YAML - jesse * Shave off another 100ms by special casing the beastly 40% function - sartak * Speed up selection by class by using indexOf with space padding instead of regex - sartak * cssquery.js: thisElement is being called 11000 times for hiveminder's /todo. It includes an IE workaround. Use the workaround only if we're actually using IE. This cuts its runtime on /todo from ~220ms to ~100ms - sartak PLUGIN ====== * 'unexpected dispatch on REST' fixed - Patch from bokutin - jesse * A first pass attempt at a Devel::Gladiator plugin for Jifty. Doesn't seem to work very well - jesse * Autocompleter: Allow keyboard navigation in IE7 by hooking keyDown instead of keyPress. This fix arguably belongs to upstream (scriptaculous), but for now it resides in jifty.js. - audreyt * Check and upgrade plugin versions - alexmv * In authenticate::password plugin, do the password check on creation and prevent empty password. - clkao * It turns out that the keyDown navigation fix in Autocompleter applies to MSIE, not only MSIE7. Reported by: Stephen Lee - audreyt * Less spastic logging for the monitoring plugin - alexmv * Made Password Auth plugin able to work with attributes other than 'email address' for autoloading - jesse * Monitoring plugin - alexmv * Add a Jifty->web->current_user->is_oauthed - sartak * Force values in REST handler, so we get real values - alexmv * bugfix for 'new' classloader - yves * chg name column filter by ldapfilter - yves * made not changing your password no longer a criminal offense - jesse * fixed a bug someone introduced that mistakenly set password to varchar(255) - jesse * don't prepend http:// on https:// openid urls. - clkao * on verification failure, call continuation if there's one, rather than always redirect to /openid/login. - clkao * previous() method for doing diffs to the last value - alexmv * A few more OAuth tests I had left uncommitted, tired of 's'ing them :) - sartak * Add /=/search/ModelName/c1/v1/c2/v2/c3/v3/... for REST - sartak * Add Jifty::Plugin::Recorder::Command::Playback with some serious caveats - sartak * Add __limit/N to /=/search/ for when you really only want N results -- such as when displaying them in a dashboard widget O:) - sartak * Add a Queries plugin for examining the db queries made by your app - sartak * Add a Quota plugin which provides a framework for managing quotas in Jifty - trs * Add blog-style comments to just about any model. - sterling * Add pid to request log name so having multiple fcgi procs won't have a cow - sartak * Add query logging to halos - sartak * Add some "downgrade the info link if there's no information" logic - sartak * Add some support for dumping the Perl code of templates. For now, only for TD. And DDS is currently giving us a lot of extraneous bits (oh well) - sartak * Allow AuthenticateOpenID and VerifyOpenID for some pages - sartak * Allow playback of multiple files in one command, get rid of -f switch - sartak * Allow plugins to add new jifty commands. This requires an unreleased version of App::CLI, but otherwise works. Features usually come with a cost, and this one's cost is .02s on app startup. Worth it, IMO :) - sartak * Attributes: When we delete a record, delete any attributes it may have - sartak * Awright! Plugins can now fiddle with (TD) halos as they wish. As an example, query logging is activated only if you use the SQLQueries plugin. Which also fixes a bug where any queries caught by the Halo plugin would be lost to SQLQueries. - sartak * Checkpoint in the new Attributes plugin, a port of RT::Attribute - sartak * Content-addressable storage (in memory) facility for jifty. Port CCJS plugin to use CAS. - clkao * Don't 404 on a search with no results - sartak * Fix the current_user_can call - sartak * Fix the isa check in REST's _resolve. We instead want to fail if the class we check isn't a $base. - sartak * Fixing HTML dumping so that the HTML is more correct and easier to read when debugging. - sterling * Clean up the return values of the attribute mixin methods - sartak * Freeze and thaw the CGI object, because it can be a glob that upsets YAML - sartak * Wrap the YAML generation in eval {} too, because it is upsettable :) - sartak * Generalize __limit to __per_page and __page - sartak * Get rid of the warn select_query on adminui search - sartak * Display "1 entry" instead of "1 entries" - sartak * Give each OAuth page an OAuth title and subtitle - sartak * Give response code 405 (invalid method) on GET /oauth/{request,access}_token - sartak * Give the interesting classes jifty_serialize_format instead of hardcoding in recurse_object_to_data (obra++) - sartak * Halo refactor to allow arbitrary plugins to add their data to be displayed - sartak * Halos now display arguments - sartak * Have OAuth use our shiny new boolean type so that it works on multiple databases - sartak * I am Jifty::Plugin::GoogleMap::Widget user. Since rev.5170, no render google widget. I am not sure if this change is right. - bokutin * Instead of sticking 1 into is_oauthed, stick in the access token - sartak * Fix a bug in updating a consumer's timestamp - sartak * Keep track of whether we are OAuthed in the stash (this may move in the future, since current_user_can will probably want it) More tests, especially "don't let consumers oauth tokens while oauthed" - sartak * LeakTracker: complain if Devel::Events::Generator::ObjectTracker isn't loaded in time (nothingmuch++) - sartak * LeakTracker: log how much memory we're using at each request if Proc::ProcessTable is installed - sartak * Have the REST dispatcher use "documentation" meta-attribute in models and columns - sartak * Log successful OAuths - sartak * Make TD halos show up only if DevelMode is on, consistent with Mason halos - sartak * Make the OAuth models root-only - sartak * Make the default log path log/requests, and make the path if needed - sartak * More Recorder doc - sartak * More tests for, and cleanups of, OAuth - sartak * Move LeakTracker's reports into /__jifty/admin/ as well - sartak * Move the query reports into /__jifty/admin/ - sartak * Now each halo has a proper header. You can now toggle between rendered output and HTML source. It's ugly as sin, but it works. Other misc cleanups. - sartak * User has some choice how long to grant access (instead of only 1 hour) - sartak * User may now choose to deny the consumer write access (the current_user_can check isn't working just yet) - sartak * Add CurrentUser->oauth_token - sartak * OAuth is now its own dist, Jifty-Plugin-OAuth - sartak * OAuth should set temporary_current_user, not current_user - sartak * OAuth: Better allow/deny notifications - sartak * OAuth: Better debugging output, small fixes - sartak * OAuth: Support for Authorization header - sartak * OAuth: hyperlink fixes, make deny come before allow so it's the default (when the user mashes enter) - sartak * OAuth: test that delete fails when the access token forbids write access We need to hook into JDBI::Record's before_$crud triggers because current_user_can may just say "yes the owner can delete" and we want to prevent that - sartak * OAuth: use 0 and 1 for booleans instead of '' and 't' to satisfy all(sqlite, postgres, perl). argh. Render allow/deny as a selectbox in REST - sartak * Old REST code was creating screwy hashes, use the new jifty_serialize_format instead - sartak * Punt the design issue by making SQLQueries and LeakTracker use your app's layout :) - sartak * Queries: begin renaming to SQLQueries because Queries is vague - sartak * REST's _resolve needs to take into account that we use :: as a seperator, but we give . as the separator - sartak * REST: Add /=/version, which only includes Jifty and REST versions. Bump REST to 1.00. - sartak * REST: Add __order_by, __order_by_asc, and __order_by_desc to /=/search - sartak * REST: Canonicalize search arguments - sartak * REST: Include a REST URL in Jifty::Record links. The HTTP_ACCEPT logic should be made smarter - sartak * REST: More documentation for /=/search - sartak * REST: Qualifying the entire model/action name will fail because it will have no leading :: - sartak * REST: We don't need the temporary hack any more for .js, since jifty_serialize_format already explicitly stringifies things - sartak * REST: bug in some old code: if (ref $x eq 'ARRAY') { %$x } - sartak * Recorder plugin: record and playback accurate HTTP requests. So far the record part is done. - sartak * Recorder: Defer loghandle creation until first hit, so not all commands are creating request logs - sartak * Recorder: Don't install the trigger if creating the loghandle failed - sartak * Recorder: Log all HTTP output from playback. This required a small API change to get unique filenames - sartak * Recorder: Rename handle attribute to loghandle due to a possible conflict - sartak * Recorder: Update Playback doc - sartak * Recorder: autoflush logfile just in case the server goes splat - sartak * Recorder: log how much memory we're using at each request if memory_usage is set. - sartak * Recorder: log when we started and ended each request in absolute time - sartak * Recorder: record the current user ID so we can still playback (to some degree) without the sessions table - sartak * Remove a bunch of code duplication between Jifty::{Mason,Plugin}::Halo - sartak * Rewrite the Gladiator plugin so that it now works, and do the log/view thing (which really wants to be generalized.. later) - sartak * Run delete_all_attributes _after_ deleting the original record, in case that fails - sartak * SPA is not compatible with letme's across clicks/submit for obvious reasons. So disable it when we got temporary_current_user. - clkao * SQLQueries: Finish renaming from Queries - sartak * SQLQueries: Hide the stack trace behind a more/less JS thinger - sartak * SQLQueries: Log queries as soon as they're made, instead of after the request - sartak * SQLQueries: keep track of the ten slowest queries and display them. The query page could use a bit of visual design. :) - sartak * Small OAuth doc improvements - sartak * Small fixes for newer OAuth spec - sartak * Some SQLQueries fixes - sartak * Some refactoring of Jifty::Mason::Halo. Now it too can support plugins munging the halo data. And its query logging is now off unless the SQLQueries plugin is used - sartak * Split between "Draw halos" and "Page info". Make halos look less offensive as well. - sartak * Style changes, flip between "draw halos" and "hide halos" - sartak * Template::Declare halos! (you'll need a bleeding edge TD though) - sartak * Test corrections, and depend on Net::OAuth 0.05 - sartak * The jQuery plugin is now obsolete since jQuery is no included in Jifty's core JavaScript files. - sterling * Updating the REST plugin to use PUTDATA added in CGI.pm 3.30. - sterling * Upgrade plugins before application so that application upgrades can depend on plugin upgrades - trs * Use Jifty::Util->absolute_path on the recorder log path - sartak * Use add_order_by for REST's __order_by, except the first time when we do want to wipe out the default ordering - sartak * Use record->jifty_serialize_format instead of the old result- >_record_to_data - sartak * User-specific documentation at /oauth - sartak * add missing continuation in CAS login plugin - yves * allow authentication by mail or cas login and domain - yves * first cut of the iefixes plugin. no css yet. This includes javascript libraries from http://ie7-js.googlecode.com/, which is MIT-licensed. - clkao * mixin ldap authentication by email - yves * r4991 broke SPA redirect, since webservice_redirect is supposed to set things into request. Do that explicitly now. - clkao SECURITY ======== * BEHAVIOR CHANGE: REST will now list visible actions, not just runnable actions. This is because you generally want to disable actions during GET, but that breaks GET /=/action/ So if you have actions you really mean to hide, then you'll need to update your application. - sartak * Distinguish between *runnable* actions and *visible* actions in Jifty::API. This distinction will be used in the REST interface shortly. You should hide an action if the user will never be able to run it. You should deny actions if conditions aren't right for this request (such as during a GET). For example: Only administrators should be able to see a PublishNews action. Jifty->api->hide('PublishNews') unless Jifty->web->current_user- >is_admin Only users can run CreateGame (though nonusers can still inspect the action). Jifty->api->deny('CreateGame') unless Jifty->web->current_user- >user_object - sartak * Never send a cookie with cached content. Misbehaving proxies cause terrific problems. - sartak * Security fix: Deny all actions (except Autocomplete and Redirect) on GET. You must whitelist actions known to be safe, such as with: before '*' => run { Jifty->api->allow('CustomSearch') }; - sartak TESTING ======= * 01-version_checks.t: Avoid warnings. - audreyt * Fix tests for new region styling - alexmv * Add todo tests for validate_password to be run on set_password, which isn't currently the case. - clkao * Jifty::Test::WWW::Declare doesn't call import_extra, so move 'requires' and plan into ->setup - alexmv * We have to use Jifty::Util in Jifty::Test, alas. :/ - alexmv * Remove bogus svn:keywords from a test file - alexmv * Only clobber ::plan if we actually output a plan already - alexmv * Output a plan before loading modules - alexmv * Prune the test subdirectories - alexmv * Purely pedantic/cosmetics fix to all Makefile.PL under t/TestApp-*/ so their "name" instruction contains properly formatted distribution name such as "TestApp-JiftyJS", instead of the incorrect module name such as "TestApp::JiftyJS". - audreyt * Run tests against an apache httpd - alexmv * Test fixes for there being one more arg to JS Region.new - alexmv * Update test for the new world order where empty labels are not output - alexmv * small fixes to make the tests run from the main harness - jesse * t/TestApp/t/06-validator.t fails with an older HTTP::Server::Simple - falcone * AJAX canonicalization tests submitted by Peter Mottram - sartak * Add a "Play" action with various argument schema, and a test to test javascript behaviour based on the schema. The first test is to test if ajax canonicalized setting works. - gugod * Add a simple tangent/return test file, this is to protect the behaviour that, clicking on a "return" link should return to previous tangent point, or default location if none. - gugod * Add a simple test to test Action object initialization. - gugod * Add a test to test the link that updates multiple regions at once, and also showing an alert(). - gugod * Add canonicalization tests. - gugod * Add t/Mapper/lib/Mapper/Dispatcher.pm which whitelists the GetGrail and CrossBridge actions - sartak * Adda another URL that shows the same form as /c/page1/ to test if the form_return really return to the tangent point. - gugod * Better diagnostics from OAuth - notify user when we have Net- OAuth < 0.05 - sartak * Don't run Comment plugin test if a prerequisite is missing. - sterling * Ensure that giving OAuth consumers write access works - sartak * Finish two sets of selenium tests for testing continuation. The goal is to see if form_return actually returned to where it begins. The entry point can be either '/c/page1', or '/c/page_another_one'. - gugod * Fix dependency test failures from the comment plugin. - sterling * Fix some test failures caused by halo output in TD generated images. Anyone have any better ideas? - sartak * Fix test that was requiring search to return 404 for no matches - sartak * Fix the comment view test page. - sterling * For testing continuation, add a "AddTwoNumber" wizard like the one in Jifty::Manual::Continuations, only it's written with TD rather then mason template. To manually test it, goto /c/page1 first. Type some number and hit enter. You sholud then visit /c/page2. Type some other number and hit enter. You should return to /c/page1 with the result of AddTwoNumber action shown in the message box. - gugod * Forgot to commit TestApp::Plugin::Attributes::Model::Song - sartak * Get rid of the JQuery plugin tests hanging around from a now gone JQuery plugin - trs * Have t/01-dependencies.t report the entire dir+filename, not just the filename - sartak * Import a Test.More (the jsan module) -based js test to test behavour.js. Including a .t wrapper that launches a selenium server pointing to the harness test. - gugod * Improve tests, the basic protected resource request works, yay. PLAINTEXT fixes. - sartak * Jifty::TestServer: explicitly ignore ClassLoader objects in @INC while stringifying - ishigaki * Make Crypt::OpenSSL::RSA optional for OAuth, and fix the tests to not require it - sartak * Missing $server in a test? I doubt this is intentional, so fixing - sartak * Test fixes so that http methods other than GET and POST work - sartak * TestApp::OAuth::User->current_user_can - sartak * Prepare a TestApp just for testing jifty.js javascript functions. The goal is to test javascript code, not just perl code, so using selenium is a must. Pretty much like this test suit should be the counter-part of mech- based tests under TestApp/. Provide a simple test file to test Jifty.update() function, both with and without argument. - gugod * Replace "is $html, ..." with $self->wait_for_text_present_ok Isolate current tests in a bare block, so we can put more tests in this file easily. - gugod * When we fail to connect to the selenium rc, skip the rest of the tests - sartak * force TestApp-JiftyJS to use en on server side, otherwise the browser launched by selenium might be trying to use other languages we have translation for, causing the expected error output being localized. - clkao * ignore TestApp-Plugin-Attributes' var and log - sartak * jQuery: Fix our one test failure (caused by a broken test) - sartak VIEW ==== * onclick => { submit => { action => $a, arguments => { a => "b" }}} now propagates the action arguments to the non-JS click as well. - alexmv * 'mandatory' columns are not mandatory if they have a default and didn't appear in the form. - alexmv * Allow onclick, etc, handlers on arbitrary elements - alexmv * Possibly making region inclusion display-neutral - jesse * Check that forms that are opened are closed - alexmv * Perltidy to fix indentation in Jifty::Web - alexmv * Don't output an empty label element - alexmv * Failing test for error pages - alexmv * Finish pulling out html comments, and the now-unnecessary newlines as well - alexmv * Fix error pages. This is a perltidy; the only semantic change is to replace Jifty->web->return with form_return - alexmv * Fix setting of class attribute for calendars (className is only for element.className) - trs * Fixes for region updates in the wake of r5216 - alexmv * Lazy page regions (only work with JS) - alexmv * Lazy pageregions can't be done using behavior, as the JS which defined the region might not have been run yet if it itself came from a region load (for fragments responses, behavior is applied immediately, scripts are run after some settle time). Thus, put the region-updating code into the page directly. - alexmv * Make view handler classes configurable. - jesse * One-character fix to get lazy regions actually working - alexmv * The correct logic (putting the registration on the button) was already in the $action->button method; move it into Clickable. - alexmv * Regions need to know if they started with the form open - alexmv * Skip ajax canonicalization on checkboxes - alexmv * Template arguments override normal args, when talking to templates - alexmv * Template arguments don't propagate down into pageregion calls - alexmv * Warn about template_argument change side-effects - alexmv * We should skip registering it on the button if it has made any appearance in the form - alexmv * When doing new region creation, make sure we get the new value of the element that we're applying Behavior, etc, to. - alexmv * YUI classes weren't getting properly attached because $class changed to $args{class} (why didn't strict/warnings catch this?) - trs * Attach the proper yuimenu(bar)?itemlabel class to links - trs * You no longer have to manually register an action if the only place it's used in a form is in a submit. exception: if you use a moniker rather than an action object, we don't have a way to convert that into the action, so that still requires a manual registration - jesse * _current_collection shouldn't ever be able to get an object passed as search_collection - alexmv * app_behaviour.js was not enable in IE6. jQuery less than 1.2.2 has problem in .ready() (We have 1.2.1). - bokutin * cleaning up some old templates - jesse - Merge /bps/jifty/jifty/branches/cssquery-refactor to /bps/jifty/jifty/trunk - clkao - When form_field() are called with render_as in cached mode, Make sure it requires the widget class. - clkao - Refactor and put all the Form::Field blessing logic into one place. - clkao * A prototype.js fix for IE6 throwing object errors on Hiveminder task creation - sartak * Add a canonicalize_value to Jifty::Web::Form::Field. Override it in Date to output just the YMD part. - sartak * Add a class to read mode spans to allow them to be selected separately. - sterling * Convert clickable tooltip to button title and make sure buttonToLink() passes on the title attribute. - sterling * Don't auto register field's action unless we are in an open form. This fixes the case where actions aren't properly registered to the correct form: my $foo = $action->form_field('foo')->element_id; form { render_action($action); form_submit; } - clkao * Fix a bug that if you use $action->form_field('foo'); $action- >form_field('foo', render_as => 'hidden') you get a ::hidden object which is useless, as opposed to normal Hidden object which returns from the following without cache: $action->form_field('foo', render_as => 'hidden') - clkao * Fix menu activation for menu items which are defined with link instead of url/label - trs * Fix title handling in Web::Form::Field::Select - sartak * Fixed missing HTML escaping on option value attributes in select form fields. - sterling * Inserted the missing jifty-result-popup DIV on the Mason page wrapper. - sterling * Jifty::Web: removed long-gone loc.js (deleted at #4324) from javascript_libs - ishigaki * Make dropdown/context menus a reasonable fixed width - trs * Make the YUI menu.css usable - trs * Move our own Form.Element.* methods to Jifty.Form.Element.* and mark the old ones as deprecated. This is a forward-compatible change in preparation for the jquery branch merge. After the merge, the old methods will no longer exists, and the Jifty.Form.Element.* ones will be provided by the Prototypism plugin. Patch by hlb. - clkao * Normalize placeholder text because sometimes one has \r\n and the other has \n. Ugh. - sartak * Only call ->url on link if it supports it - trs * Some style changes and minor fixes (that damn quote in onclick.. !) - sartak * Support group headings for YUI menubar rendering - trs * Support menu grouping for YUI - trs * Totally redo menu grouping. The way it works now is you build up menus and submenus as normal and then for submenus that you want inline, you set render_children_inline => 1 for the parent. - trs * Turns out turning off ajax canonicalization for a single form field was just ignored. We need more JS tests. :( - sartak * Updated the chart image behaviour JavaScript since it broke with the Prototype 1.6 update. - sterling * Updating so that simple bars work again (broke with Prototype 1.6) and also ported to use jQuery. - sterling * jifty.js: Work around placeholders not being properly cleared and causing (small) data loss - sartak * re-merge r5120 given now regions know if they are in a opened form. - clkao * refactor handlers Jifty::Web::Form::Element to use our mk_normalising_accessor. - clkao Jifty 0.71129 I18N ==== * Delay i18n handle init until we have session. SkeletonApp dispatcher rule to set language in session. - clkao * I18N plugin: log when user is somehow able to pass in disallowed lang. inline the initial dictionary json. - clkao * I18N: load json dict from absolute path. - clkao * I18N::Action::SetLang: scalar::defer is trigger some oddness, rewrite available languages as normal runtime code, and cached. - clkao * I18n: fix json dictionary fallback. - clkao * Jifty::I18N - POD fixup. - audreyt * Jifty::I18N: Implement the L10N.AllowedLang key to limit the set of languages available to the user. Use case: ja.po is incomplete and we wish to hide it from users. Requested by: clkao - audreyt * Jifty::I18N: provide available_languages method. - clkao * Jifty::I18N::promote_encoding - r4286 by yours truly broke auto- decoding for POST requests. This is a better fix to avoid the "Unquoted / not allowed in Content-Type" warning (which arugably is a Email::MIME::ContentType glitch), by scanning the Content- Type header for the substring "charset" before parsing it. This way, when "charset" is not found in that header, we still fallback to Encode::Guess, regardless of whether the request was of type "multipart/form-data". - audreyt * Jifty::I18N::promote_encoding: Multi-part form data have no notion of charsets, so we return the string verbatim here, to avoid the "Unquoted / not allowed in Content-Type" warnings when the Base64- encoded MIME boundary string contains "/". Prompted by this Content- Type header found in real world: multipart/form-data; boundary=---- WebKitFormBoundaryRqXyEnBQ/5VSsexe which triggered this error: -- 2007/10/22 04:19:30 WARN> Carp.pm:46 Carp::carp Unquoted / not allowed in Content-Type! at /usr/local/lib/perl5/site_perl/5.9.5/Jifty/I18N.pm line 226 -- 2007/10/22 04:19:30 WARN> Carp.pm:46 Carp::carp Illegal Content- Type parameter /5VSsexe at /usr/local/lib/perl5/site_perl/5.9.5/Jifty/I18N.pm line 226 - audreyt * Jifty::Plugin::I18N: provides SetLang action. provides loc.js and other facilities to l10n your javascript along with po. - clkao * Provide get_current language method in Jifty::I18N. - clkao * Support serving json version of po and localization in javascript space. - clkao * Update zh-tw po to include translations for authentication::password plugin. - clkao * allow switching current language for Localization. - clkao * bin/jifty po now takes two more options: --dir for additional directories to look at so javascript files can be scanned. --js for generating json dictionaries for messages appeared in javascript files declared with Jifty::Web. - clkao * loc.js cleanups. - clkao * updated ja.po - ishigaki * zh_tw l10n for Authenication::Password plugin. - clkao BUGFIX ====== * A temporary fix for rico.js, which is defining the obsoleted (in Prototype) Object.prototype.extend which and then breaks all calls to jQuery.fn.extend. That means all methods with jQuery.fn.extend were simply not there. For instance, jQuery("div.secret").show() - gugod * Added missing jifty-result-popup div to the page detritus section of Jifty::View::Declare::Page. - sterling * Allow users to name their apps in lowercase (as pragmas ?!). Reported by SteveH++ - jesse * Bring the default back, but at 0.0.0 to prevent uninitialized complaints. - sterling * Class::Accessor::Fast cleanups - jesse * Clean up Jifty::Web initialization a bit. - jesse * Clean up the masonXXXXXXXXXX temp directory after each test run. - sterling * Do not do clever & broken input_name for buttons when preserve_state is false. - clkao * Don't do weird things with loading model subclasses - jesse * Don't send cookies for static files. We suspect that doing so was screwing up non-compliant proxies that were caching the cookie and causing.. "amusing" security problems - sartak * Fix compatibility with Test::WWW::Mechanize - jesse * Fix mismerge.. - sartak * Fixes to several of my fixes for Jifty::Request::load_from_data_structure - jesse * Fixing a bug that prevents any but the first plugin being checked for schema updates. - sterling * Fixing a typo in the plugin DB version metadata key affecting upgrades. - sterling * Horrible Hash::Merge workaround, part 2 - alexmv * Improving schema setup for plugins that are turned on after the application is initially deployed. - sterling * Jifty::Request::Mapper - Avoid uninitialized warnings when $args{destination} ends up undefined. - audreyt * Make sure Jifty::Filter::DateTime doesn't disturb Floating datetimes Otherwise, dates would get set to the current_user's timezone, throwing a wrench in the works - sartak * Menu class is undef by default; fall back to the empty string - alexmv * Minor edit: fixing reference to Jifty::Request::Action to Jifty::Action - sterling * Pg wants to connect to template1, but CREATE DATABASE foo TEMPLATE template0 - alexmv * Plugin upgrade incorrectly assumes a DB version of 0.0.1 when none is found. - sterling * Rather than helpfully failing to load model classes that have compiletime errors, actually die with the error that caused the class not to load. - jesse * Remove debug info. - clkao * Remove debugging statement - alexmv * Removing the display style from the jifty-result-popup, which is breaking it. - sterling * Revert clkao's fixes for now because they break apps :/ - sartak * Revert r4117 as the element readiness state is not compatible with what it was. - clkao * Revert r4435 because it breaks Safari 3.0.4 - sartak * Reverting the addition of these files which were added by a push error. - sterling * Some databases have schema creation single-threadedness. If they block, wait and retry for up to a minute - jesse * Some parts of that last commit to use only one Module::Pluggable weren't as hot as they appeared to be; - jesse * The JIFTY_SITE_CONFIG environment variable was silently ignored. - audreyt * Undoing 4302. There is such a class. Thanks to chmrr. - sterling * Undoing previous accidental patch to Jifty::Continuation because I have not finished proofing it. - sterling * Use ->clone on DateTime objects to avoid possible DST issues, etc - sartak * Use blessed() instead of ref() to keep an if statement from tripping on ->isa(). - sterling * We depend on the bugfix that File::Spec->rel2abs("/foo","/foo") eq "." - alexmv * When it's a ::Create action, $event_info won't have a record_id there, cause a fatal error when it's published latter. - gugod * When loading a web request from a data structure, don't totally throw away the path it was requested at. - jesse * Work around a "feature" in Hash::Merge < 0.10 - alexmv * carp, don't warn, for a "title" Mason/TD warning - sartak * collection generator may be called when we're loading models and not all models have been loaded to the moment, so we have to try to require the model before testing if it esists. - ruz * don't gen a collection class if there is no model - ruz * don't warn if database doesn't exist when dropping database - sunnavy * friendly_date should be relative to the user, not floating - sartak * make a looser check for Content-Type since firefox 3 will append charset stuff to it sometimes - sunnavy * merged prototpe-1.6 to trunk again, wish it's all right this time :) - sunnavy * no need to print STDERR, we can warn in $SIG{__WARN__} - sunnavy * oops, should look for js files under js. - clkao * our version of prototype can't deal with synchronous request. - clkao * revert changes to ClassLoader. Collection classes are failing to be generated in some TD views - falcone * rollback r4242 which cached the gzipped js/css even through develmode reload. - clkao * tabview shouldn't force absolute paths to relative ones - jesse * warnings should be to STDERR - sunnavy * we want to compute UUIDs every time. really. it's not useful to always have the same uuid - jesse * webservices_rediret: don't redirect if there's any failed action. - clkao CORE ==== * Add Jifty::DateTime::from_epoch which does our usual timezone magic, use set_current_user_timezone more, too - sartak * Add Jifty::Util->is_app_root to determine whether a path looks enough like the app root - sartak * Add a 'now' method to Jifty::DateTime which sets the timezone to the current user's timezone. DateTime::now passes time_zone => UTC to Jifty::DateTime::now, which caused it to skip over the currentuser/timezone magic. - sartak * Add a ForwardCompatible config in Database section. The usecase is that when you switch your checkout to something with older version of app schema, you can declare it is compatiable with the future version that is currently in db. - clkao * Add a Jifty::DateTime set_current_user_timezone method - sartak * Add an 'as_user' method and have 'as_superuser' use it - sartak * Add the ability for apps to have very fine-grained testing (such as overriding config for a subdir of t/, or even a particular test file). Still needs tests and I suppose some more doc :) - sartak * Added a new 'AutoUpgrade' option for Jifty and Application schemas, so you don't need to manually upgrade every time jifty or your app version bumps - jesse * Added the ability to craft a Jifty button with a "submit" link which submits hardcoded arguments. - jesse * Change how plugin is initialized so _pre_init is actually noted. - clkao * Don't require recipients in Jifty::Notificaiton be objects. - clkao * Finalize triggers if possible (supported in forthcoming Class::Trigger release). Override JDBI's default of having refers_to null return undef, instead of object with no id. RightsFrom 'foo_id' should work like RightsFrom 'foo' - alexmv * Fix the problem of tests having both config and a correctly-relative $0 Jifty::SubTest now makes available the old Cwd (which as 03-nosubtest demonstrates doesn't break apps that don't use Jifty::SubTest) Also a bit of doc in Jifty::Config The Feature is Done. :) - sartak * Fixes to not cache compressed css+js while in devel mode. Refactoring js compression code into the plugin where it belongs. - jesse * Get rid of another place where we had a custom accessor that meant 'arguments' - for great consistency - jesse * In Jifty::DateTime->new, set the timezone to floating if it looks like just a date - sartak * Initial implementation of Jifty::Test::WWW::Declare, with basic tests in TestApp - sartak * Just a perltidy - alexmv * Make action_arguments effective from js update() - clkao * Making the as_*_action() methods accept a paramhash for additional new_action() parameters. - sterling * New as_string method for Jifty::Web::Form::Link. - clkao * Override T:W:D's get with ours which prepends the server's URL Start documentation - sartak * Recursively transform content structures. Set a flag when we change the method, in case apps care - alexmv * Remove the unused drop-column logic from jifty schema --setup, since ->columns returns only active cols - sartak * Ripping out new_record_action() from Jifty::Web. Re-implementing it as as_create_action(), as_update_action(), as_delete_action, and as_search_action() in Jifty::Record and Jifty::Collection. - sterling * Test config loading is now complete code-wise :) And it has tests now too! Just need to doc it in manual or Jifty::Config - sartak * Untabify - alexmv * Updated the JSON and YAML transports for web service requests to allow complex data structures in actions - jesse * Updating the Jifty web menu component to respect classes added by users - jesse * added "rel" attribute to Jifty::Web::Form::Link/Element, to allow or