Giter VIP home page Giter VIP logo

omniform's Introduction

Hi there ๐Ÿ‘‹

I currently work at GoDaddy on the WordPress Experience team as a Senior Software Engineer. I have also worked as an independent contractor and at various companies, including Automattic, Packet Tide, 10up, and Overit. In my spare time, I enjoy contributing to the WordPress Core and Gutenberg Open Source projects.

If you'd like to connect, please feel free to reach out to me via email or on Mastodon. I'd love to hear from you!

omniform's People

Contributors

brianhenryie avatar jrtashjian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

brianhenryie

omniform's Issues

Customize email notification on submission

Currently, email notifications are automatically sent to the admin_email with the subject line "{Form Name} Response". The configuration for this should be adjustable both at a global level and on a per-form basis.

Introduce Form Types with alternative data handling

Develop additional form types that provide diverse approaches to handling submitted data. This may include options such as not storing the submitted data as a standard "response," sending customized email notifications, seamless integration with other plugins and services, and directing users to specific destinations based on their inputs.

Introduce hidden inputs

Before splitting the fields into separate blocks for field, label, and input, I had actually implemented hidden fields as a variation of an input field (ref: df776ec). A new block should be created that encompasses the original functionality.

Road to a stable release ๐Ÿš€

Road to a stable release ๐Ÿš€

This issue outlines the work needed to finish before tagging a stable release.

Blocks

Form

This block mimics the functionality of reusable blocks or template parts by using a CPT to store and retrieve the form. The block is used to insert/edit a form in any post or page and renders the <form> element.

  • omniform/form

Field

This block renders a complete form field with a label and input. It also provides variations for the most common field types.

  • omniform/field

Label

This block renders the <label> element for a form field.

  • omniform/label

Button

This block mimics the functionality of the core/button but renders a <button> element to perform form actions like submit and reset.

  • omniform/button

Variations

  • omniform/button-submit
  • omniform/button-reset

Input Field

This block renders the <input> element with a default type of "text" while providing variations for other available types.

  • omniform/input

Variations

  • omniform/input-email
  • omniform/input-url
  • omniform/input-number
  • omniform/input-checkbox
  • omniform/input-radio
  • omniform/input-date
  • omniform/input-datetime-local
  • omniform/input-month
  • omniform/input-tel
  • omniform/input-time
  • omniform/input-week

Select Field

This block renders the <select> element. It also provides a variation for rendering a multi-select element with the multiple attribute applied.

  • omniform/select

Variations

  • omniform/select-single
  • omniform/select-multiple

Option

This block renders the <option> element used within an omniform/select or omniform/fieldset block.

  • omniform/select-option

Option Group

This block renders the <optgroup> element used within an omniform/select block.

  • omniform/select-group

Textarea Field

This block renders the <textarea> element.

  • omniform/textarea

Fieldset

This block renders the <fieldset> element.

  • omniform/fieldset

CAPTCHA

This block renders a CAPTCHA that must pass validation in order for the user response to be saved. Akismet integration is possible in the future with an ability to assign specific fields to the name, email, and message structure that the service expects for spam protection. I'm not a huge fan of the honeypot method at this point but I'm not opposed to adding it if there are enough requests for it.

Google's reCaptcha service seems to be pretty standard but I wanted to present hCaptcha as a privacy-first alternative. Both of these services have an almost identical API and implementing all three was simple and obvious. Friendly Captcha looks like another good alternative that could be implemented at a later date.

  • omniform/captcha

Variations

Custom Post Types

This custom post type is for storing all information related to a single form's configuration.

  • omniform

This custom post type is for storing all response data for a single form submission.

  • omniform_response

Hooks

  • on impression (omniform_form_render)
  • after response is saved (omniform_response_created)

Documentation

  • Build out section on site for documentation.
  • Document omniform/button
  • Document omniform/field
  • Document omniform/fieldset
  • Document omniform/form
  • Document omniform/input
  • Document omniform/label
  • Document omniform/select
  • Document omniform/textarea

Additional validation rules

The "required" rule is the only optional validation rule applied to form fields. Appropriate validation rules should be applied to each field on the PHP side, such as requiring an email value for email fields, a URL for URL fields, and so on.

OmniForm localization

Hello JR!

First of all congratulations on OmniForm landing on the WordPress Plugin Directory!

I went to check it right away as I'd like to translate the plugin into Italian. However, I didn't see any language/translation option. Are you planning to eventually release language packs, so that we can localize the plugin?

Thanks again for your awesome work! :)

Improve the single response view

For the initial release, the process of viewing an individual response entry is kept deliberately simple. But there's ample opportunity to enhance its visual appeal and create room for future functionalities. Ideally, leveraging React would be a great choice to accomplish this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.