Help:Extension:CIForms

This extension allows rapid creation of forms, either standard forms with input fields aimed at receiving data from visitors, or forms with multiple choice questions or even Cloze tests to be used as teaching tools for current students or to engage prospective ones.

All forms include automatic validation, are protected by the latest version of Google recaptcha and are automatically "mirrored" by the respective dynamic component on the front-end (or "by the respective parser functions on the back-end, depending on what side you are reading this page), respectively for an optimal user-experience, and to just create the form in a "programmatic" and at the same time simple way without the need to create the interface itself using, namely, a tool like "Google form", which is actually a more convoluted process.

Conversely, "CI forms" have been inspired by this extension at Wikiversity and they diverge from it, apart the features above, mainly because the submitted data are sent to the provided email address, rather than used to compute a score.

Here is an overview of the available options and the way to use them.

Form with inputs
The most common kind of form, it can contain an arbitrary number of rows (but in order to ensure a good user experience, they should not exceed 10,000) with any of the input fields among the following: 'text', 'email', 'password', 'textarea', 'email', 'search', 'tel', 'file', 'number', 'url', 'time', 'date'. The list currently reflects the accepted input types by the Quasar framework inasmuch as the form is automatically converted to a Quasar component once created on the (wiki) back-end. (*** currently, in February 2021, only few of them have been tested, among which, 'text', 'email', 'textarea', 'email', but all of them will be set-up as soon as possible).

A form can be created through a template like the following:

which produces the following result

where the double square brackets represent an input, the asterisk a mandatory field, and the pipe is of course used to separate rows. The input symbol can be either left blank (in this case the input type is assumed to be "text"), filled-in with one of the values above (like 'email', 'textarea', etc.) or completed with a placeholder, like in the following example:

which produces the following:

(note that the placeholder label is placed within the input symbol itself and the the row does not contain other text, which otherwise would produce a "tabled" layout).

Predictably, the 'submit' field contains the email to which the filled-in form will be dispatched, and all forms also accept the parameters 'success message' with a message to be displayed to the user once the form has been correctly dispatched, and 'error message', where the form cannot be dispatched for any reason. (see table below, List of parameters for a structured list depending on the kind of form)

Form with multiple choice questions
A form intended either to create surveys of any kind, or as a teaching tool, to be combined with "Cloze tests" described below.

This is an example of multiple choice questions with arbitrary input fields among the answers:

where 'type' is the kind of form, 'list-type' the kind of list, which can be "none", "ordered", "unordered", "letters", "number", or any of the values listed here, 'max answers' the maximum number of allowed answers, the double square brackets represent as above an input field, and the asterisk indicates as above that the preceding input field is mandatory. (an input field can be added to every row, however no more than 1 input field per row is currently expected to be found)

Form with Cloze tests
A kind of form mainly used to provide students with online exercises to assess their understanding of assigned teaching materials.

A Cloze (completion) test can be either with inline suggestions like the following:

where the asterisk at the beginning of the line denotes an example answer (conversely than indicating a mandatory field in the 'inputs' type) and the square brackets in each row denote inline suggestions (here the foreseen input type is 'text' in all cases). Also note that the example answer contains the solution after the equal symbol, conversely from the other inline suggestions.

...either with framed suggestions like the following:

Note that the suggestion ('fare') related to the solution ('farò') put in the example answer, is automatically 'canceled' in the list of suggestions.

Also note that the Cloze tests above foresee solutions to be "transformed" relatively to the provided suggestions (specifically, the suggestions are provided in infinite form, and the solutions are expected to be in future simple) while of course the suggestions can be provided "as they are", where in this case it makes sense to only list them above the answers, like in the following example:

(note that the input field in the example answer only contains 1 word, since an exact match is expected: i.e., the suggestion corresponds to the solution, without any "transformation")

Finally, "framed" suggestions (i.e. suggested words listed as argument of the parameter "suggestions") are automatically shuffled, thus it is a good practice to not put them in the right order, since the wiki-text is to be deemed open-source.

Nested form sections
CI forms are flexible enough to allow nested form sections of different kind, like in the following example:

where the form is built using the following model:

where in short the parser function 'CI form' becomes a container for the parser function 'CI form section' and the latter is characterized with a type (either 'inputs', 'multiple choice questions', or 'cloze test') a title, and the related content. (see table below List of parameters for all the accepted parameters)

This model allows a large combination of possible forms able to cover a correspondent wide range of needs, and, the most important, to create either a form with inputs, a multiple choice question test, or a Cloze test, in minutes, just filling-in with different contents predefined templates similar or identical to those shown as example.