Worldwide Opportunities on Organic Farms (WWOOF) is a worldwide movement to link visitors with organic farmers, promote a cultural and educational exchange, and build a global community conscious of ecological farming and sustainability practices. A WWOOF website incorporates WWOOFer listings, Host listings, messaging, subscriptions, a review process, and many other aspects of WWOOF administration.
Working in conjunction with with brainflex.ca, the WWOOF Canada website wwoof.ca was created in Drupal 6 starting in 2008, in and rebuild/ported to Drupal 7 in 2013. in 2017, we were asked by the Federation of WWOOF Organizations to expand on the code for wwoof.ca and create the CWP (Common WWOOF Platform) Version 1. This was a multi-site, multi-server setup, serving the website needs of any WWOOF organization who needed a FOWO-backed web solution. At one point there were 35 countries on two AWS servers, all running the same code base.
Version 2 of CWP has been taken on by a different team and most of these websites are no longer running the Drupal-based Version 1. See https://wwoof.net/fowo/ for more about WWOOF.
Host Search Map
One of the most important functions of a WWOOF Website is to allow WWOOFers to search for Host farms. The host search function of CWP Version 1 includes the ability to search by many different criteria (using Apache Solr indexing integration) as well as a synchronized map view of the results, implemented with Leaflet and Google Maps.
Highly Configurable Multi-Step Registration/Ecommerce flow
The Host and WWOOFer registration pages need to be configurable on a per-site basis, supporting many country-specific options, including:
- multi-page flow, with forms and content appearing both before after the Ubercart checkout pages
- multiple currencies and languages supported
- ability to activate registration either before or after payment
- handling of free memberships and "locals discounts"
- e-commerce gateways: PayPal, Stripe, and others
Complex 'Required for Condition' / 'Soft Required' functionality
As well as the usual 'required' flags that any Drupal form would support, this system had to include a 'Required for Approval' setting, on a per-field basis, meaning that "the form is able to be saved without this value filled in; however your profile will not be 'approved' (and included in site listings) without it" the full profile edit is a multi-page form with many fields, and both Hosts and WWOOFers won't always be able to fill in all the information at once. this "two-tiered 'required'" setup allows the system to force the most basic fields to be filled in (these are usually filled in the initial registration form) and then the member can visit the form multiple times until they have all the 'required for approval' fields filled in too. The fields appear with yellow asterisks, or yellow form borders if value is empty, these have similar meaning to the red color used for Required fields.