All the key elements of Seamless Donations 4.0 now work, and work together (mostly). Each of the core elements has been written and tested. These include the new forms engine, the new admin UI engine, the new custom post types, and the PayPal interface that takes data from the new form engine, processes payments, and records that data into the new custom post types.
This also includes the legacy system, which is an entire working legacy system so people who auto-update will have a working donations system after the updates go through. And, on top of that, it also includes the legacy update system, which moves all the legacy data into the new custom post type format, updates the UI, and brings things up to 4.0-ready — all by clicking one button.
Finally, it includes the new shortcode, used to embed the new form on a Web page. The old shortcode will work until the 4.0 upgrade button is clicked. Additionally, there is error-processing and warning code built in, so the shortcodes won’t just break if misused. Instead, a helpful guidance alert will be displayed explaining what needs to be done to change things and make them work with the upgrade.
The big remaining problem is that kicking off PayPal’s interface is inconsistent. Sometimes, when clicking “Submit” it will run. Other times it won’t. This seems to be the result of a vestige of the 3.3-vintage implementation, which actually built two forms on the page: one which contains the user donation interface and one which was hidden.
Sadly, I chose to emulate this approach in 4.0 for compatibility sake and now it’s biting me on the ass. One form has validation and the buttons while another form has the action and the data. This mix is just not working reliably. Quite often, clicking the buttons in the user-visible form changes state enough so the invisible form doesn’t redirect off to PayPal.
So what does that mean for development progress? If it’s possible to clean up form submission without writing an entirely new gateway system, the plugin should be relatively close to a public beta. All the other elements seem to work reliably, both in legacy mode and new 4.0 mode. If, on the other hand, a whole new gateway interface needs to be written, add at least a few weeks to the process.