Module Development

Want to write a Form Tools module? Awesome! There's an awful lot of information in this section, but we do recommend slogging your way through the whole thing. Even if you don't catch all the details it will still give you a sense of how it works and what exists to make your life easier. It won't be time wasted, honest.


No script with the scope of Form Tools can accommodate all functionality requests without becoming bloated and unusable. To prevent this, many larger scripts turn to some form of module / plugin architecture that keeps the core code small, but still allows for extensibility. Form Tools is one of those scripts. Developers can extend the core functionality in whatever way they need without needing to tamper with the core script.

The modules were structured with the following goals in mind:

  • Simple to install and remove. This is paramount. To make modules as useful as possible, they have to be easy to install. Regardless of a users' technical proficiency, nobody like fussing around with complicated installation instructions. If it's tough to install, people are going to give up, and they're likely to make mistakes - potentially causing the main script to stop working.
  • Consistent. Consistency is king. Modules have to be consistent in terms of the overall UI to make it look similar to the core code so that the user doesn't have to re-learn the interface for each and every module; consistent so that all modules can be translated to other languages; consistent in the way the information is stored in the database.
  • International. All modules need to be able to support multiple languages.
  • Simple to develop and write. Let's not forget the poor developer here! If a module isn't easy to write, no-one's going to want to do it.

We've developed a modular system to allow you, the developer, to add you own functionality that are compatible with the above rules - just by following the required module structure.

Lastly, one quick disclaimer: it's not perfect! Depending on what your module does, it may still involve editing some of the core pages. But by and large, it's not a bad approach. Depending on user feedback, this overall design may be revised sometime in the future, but for now - let's get started!