Adds client-side submission validation; refactors Contribute module.