👍🎉 First off, thanks for taking the time to contribute! 🎉👍
We welcome community contribution to this repository. To help add functionality or address issues, please take the following steps:
- Fork the repository from the master branch.
- Create a new branch for your features / fixes.
- Make the changes you wish to see.
- Add tests for all changes.
- Create a pull request with details of what changes have been made, explanation of new behaviour, and link to issue that is addressed.
- Addressing (with @...) one or more of the maintainers in the description of the pull request
- Ensure documentation contains the correct information.
- Pull requests will be reviewed and hopefully merged into a release.
Cloudflare has multiple plugins using shared codebases.
WordPress, CPanel, Magento are the main repositories of the plugins. Every plugin has a config.json file which allows them to control the frontend of the plugin.
Below are Cloudflare maintained repositories the plugins depend on.
- cloudflare-frontend is a generic frontend used in plugins. You can add/remove cards simply by editing config file.
- cf-ui is a Cloudflare UI Framework where cloudflare-frontend is using.
- cloudflare-plugin-backend is a generic backend plugins use.
- cf-ip-rewrite allows to rewrite Cloudflare IP's in Application level.
- mod_cloudflare allows Apache to rewrite Cloudflare IP's with user IP's. It is not used in plugins itself but it maybe be a better alternative then
cf-ip-rewrite
.
Cloudflare WordPress Plugin uses PHPUnit for testing. WordPress specific function are mocked inside WordPressWrapper class. Everything under src/
directory should have unit test written.
Each plugin may use different Frontend versions. When publishing a Frontend release we copy the following files to other plugins;
assets/
fonts/
lang/
stylesheets/
compiled.js
which is created whengulp compress
command is called within Frontend repository.
The plugins use a common language file which is located here. English translation is always up to date where as other translations are not. If you have any issues or questions regarding with translations feel free to open an issue.