/Caldera-Forms

Drag and drop, responsive WordPress form builder.

Primary LanguageJavaScriptGNU General Public License v2.0GPL-2.0

Caldera-Forms

Drag & Drop WordPress Responsive Form Builder

Docs, Add-ons & More Information:

Development

Contributor Guidleines

Install for development

Requires: git, npm, Grunt.

  • Clone repo to plugin directory
    • git clone git@github.com:CalderaWP/Caldera-Forms.git
  • Switch directory
    • cd Caldera-Forms.git
  • npm install
    • npm i

Build For Release

To create a build to ship to WordPress.org: npm run package

This creates /build/<version> where <version> is the current version set in package.json. This creates a directory you can ZIP up for testing or whatever.

See "Release To WordPress.org" section below for more details on pushing this build to WordPress.org.

JavaScript Development

Run watcher for development to auto-compile JavaScript and CSS.

/clients/

This is the new stuff, built with webpack. Eventually everything UI will be here.

  • Clients:

    • pro - The Caldera Forms Pro admin page and tab in the editor.
    • blocks - The Gutenberg block(s).
    • admin - The main admin page. Work in progress, not used in plugin.
    • viewer - The entry viewer. Work not in progress, not used in plugin.
    • editor - Theoretical.
  • Build for development and start watcher.

    • npm run dev
  • Build for production

    • npm run build:webpack

/assets/

This is the old stuff, built with grunt.

  • Build for development and start watcher.
    • npm run dev:grunt
  • Build for production
    • npm run build:grunt

Test Environment

All PHP tests are based off of the WordPress "unit" test suite, and therefore need a full WordPress test environment. The install script in '/bin' is pretty standard and should work with VVV or whatever.

Alternatively, because this, isn't 2014, you can use the provided Docker environment.

Requirements

Test Structures

  • PHP tests go in /tests and are run using phpunit
  • JavaScript tests go in clients/tests
  • Unit tests go in clients/tests/unit and are run using Jest
  • Unit tests must have the word test in file name. For example, formConfig.test.js

Commands

  • composer wp-install - Installs Docker-based test environment.
  • composer wp-start - Starts Docker-based test environment.
  • composer wp-tests - Runs phpunit inside of Docker container.
  • composer wp-stop - Stops Docker-based test environment, without destroying containers.
  • composer wp-remove - Stops Docker-based test environment and destroys containers.
  • npm test - Run JavaScript test watcher
  • npm run test:once - Run JavaScript unit tests once

Release To WordPress.org

Requires

Steps

  • Build release file
    • npm package
  • Push Tag to WordPress.org
    • cd bin
    • bash deploy-wp-org-tag.sh 12345 christiechirinos
  • Install tag using WP Rollback on QA site and re-run Ghost Inspector tests.
  • Copy tag to trunk
    • bash deploy-wp-org-trunk.sh 12345 christiechirinos

Notes

  • This assumes your WordPress.org username is christiechirinos, and your password is 12345.
  • The first argument is password, which is required. The second argument is username, which defaults to Shelob9, which is Josh's username.

Contributing/ Using This Repo, Etc.

Contributing/ Using This Repo, Etc.

  • The default branch is "master" that should be the same as WordPress.org.
  • Development happens on the "develop" branch.
  • If you find a bug, or would like to make a feature request, please open an issue.
  • If you fixed a bug, or made a new feature, please submit a pull request against the develop branch.