textpattern / com_connect

An extensible HTML form mailer plugin for Textpattern CMS.
GNU General Public License v2.0
24 stars 9 forks source link
email-sender forms html-forms textpattern textpattern-plugin

h1. com_connect

h2. Contents

h2(#introduction). Introduction

A Textpattern CMS form mailer plugin. @@ produces a flexible, customisable email contact form. It is intended for use as an enquiry form for commercial and private sites, and includes several features to help reduce common problems with such forms (invalid email addresses, missing information).

Please report bugs and problems with this plugin at "the GitHub project's issues page":https://github.com/textpattern/com_connect/issues.

h3. Features

h3. History

Please see the "changelog on GitHub":https://github.com/textpattern/com_connect/blob/main/CHANGELOG.textile.

h2(#install). Installing and upgrading

Requires Textpattern 4.7.0+

Download the latest release of the plugin from "the GitHub project page":https://github.com/textpattern/com_connect/releases, paste the code into the Textpattern Admin>Plugins panel, install and enable the plugin. Visit the "forum thread":https://forum.textpattern.io/viewtopic.php?id=47913 for more info or to report on the success or otherwise of the plugin.

To uninstall, delete from the Plugins panel.

Alternatively, this plugin can be installed using "Composer":https://getcomposer.org:

bc(language-bash). $ composer require textpattern/com_connect:*

h2(#differences). Migrating from zem_contact_reborn

If upgrading from zem_contact_reborn (the previous incarnation of this plugin), please note these differences:

h2(#usage). Usage

h3. Contact form

The simplest form is shown below, which produces a default form with 'Name', 'Email' and 'Message' fields. Email will be delivered to code>recipient@example.com</code, with the user's supplied email as the @From:@ address.

bc(language-markup).

To specify fields explicitly, use something like this:

bc(language-markup).

<txp:com_connect_text label="Phone" min="7" max="15" />
<txp:com_connect_textarea label="Your question" />
<txp:com_connect_submit label="Send" />

</txp:com_connect>

Alternatively, place the field specifications in a Textpattern form, and call it like this:

bc(language-markup).

h3. Send article

Within the context of an individual article, this plugin can be used to send the article (or excerpt, if it exists) to an email address specified by the visitor. This requires at least two tags:

@com_connect@, to create a form that is initially hidden by setting the @send_article@ attribute.

@com_connect_send_article@, to create a 'Send article' link which reveals the aforementioned form when clicked.

bc(language-markup).

By default the form contains fields for your name and email address, the recipient's email address and a personal message, but similar to contact forms you can create your own form layout. Some things you need to know:

Set the @send_article@ attribute to @1@ in the @com_connect@ tag.

Use a @com_connect_email@ tag with the @send_article@ attribute set to @1@. This field will be used as the recipient email address.

bc(language-markup)..

<txp:com_connect_email label="Your Email" />
<txp:com_connect_submit label="Send Article" />

</txp:com_connect>

h2(#tags). Tags

@@ can be used to create a 'Send article' link within an article form, connecting it to the contact form.

All other tags provided by this plugin can only be used inside a @@ - @</txp:com_connect>@ container tag or in a Textpattern form used as the @form@ attribute in the @@ tag.

In addition to the tags detailed in the following sections, every tag accepts a core set of common attributes. These are:

; @accesskey="character"@ : Shortcut key to set focus on the field. ; @autofocus="boolean"@ : To automatically focus the cursor in this field on page load. Only one field may have this property. ; @dir="value"@ : Text direction (@ltr@, @rtl@ or @auto@). ; @disabled="boolean"@ : Whether the input control accepts user input. If set, the element does not get submitted with the form, nor is it subject to any @checkValidity()@ JavaScript calls. ; @hidden="boolean"@ : The visibility of the input control. ; @id="id"@ : The HTML identifier for the control. ; @lang="value"@ : The ISO 639 language short code (e.g. @en-gb@, @de-de@) that governs the field. ; @list="id"@ : Used in conjunction with the @@ tag to specify a set of options. The id is the reference to the datalist to use. ; @readonly="boolean"@ : Control does not accept user input, but will be processed on form submission and can be validated. ; @spellcheck="value"@ : Whether the field is subject to spell checking (@true@ = yes, @default@ = browser decides, or @false@ = no). ; @style="style rules"@ : Inline CSS @style@ rules to apply to the input control. ; @tabindex="number"@ : The order in which the cursor jumps between elements when using the tab key. ; @title="value"@ : Usually used for hover tooltip describing the input control's use in your application. ; @translate="boolean"@ : Whether to subject the attribute content to language translation.

h3(#cc). com_connect tag

bc(language-markup).

May be used as a single (self-closing) or container tag. Place this where you want the input form to go. Status and error messages, if any, will be displayed before the form.

h4. Attributes

; @body_form="form name"@ : Use specified form for the message body text. ; @class="space-separated values"@ : Set the CSS @class@ name of the tag. Default: @comConnectForm@. To remove @class@ attribute from the element entirely, use @class=""@. ; @classes="comma-separated key:value pairs"@ : Set the CSS classes for error / information conditions. Specify each as a pair of values separated by a colon, e.g. @classes="required: req_field, element: warn_field"@. There are up to four available to customise: : @element@: Set for each form field that fails validation for any reason. Default: @errorElement@. : @wrapper@: The class to surround the list of errors shown above the form. Default: @comError@. : @required@: Class assigned when a required element is not completed. Default: @comRequired@. : @thanks@: Class applied to the wrapper around the @thanks_form@. Default: @comThanks@. ; @copysender="boolean"@ : Whether to send a copy of the email to the sender's address. Available values: @1@ (yes) or @0@ (no). Default is @0@. ; @expire="number"@ : Number of seconds after which the form will expire, thus requiring a page refresh before sending. Default is @600@. ; @form="form name"@ : Use specified form, containing the layout of the contact form fields. ; @from="email address"@ : Email address used in the "From:" field when sending email. Defaults to the sender's email address. If specified, the sender's email address will be placed in the "Reply-To:" field instead. ; @from_form="form name"@ : Use specified form (overrides @from@ attribute). ; @label="text"@ : Label for the contact form. If set to an empty string, display of the fieldset and legend tags will be suppressed. Default is @Contact@. ; @lang="lang-code"@ : Override the language strings that would normally be used from the current admin-side language in force. e.g. @lang="fr-fr"@ would load the French language strings. A Textpack must already exist for the chosen language. ; @browser_validate="boolean"@ : Set to 0 if you wish to stop the browser from validating form field values and 'required' status of input elements. The plugin itself is then solely responsible for validation and will indicate error conditions after submission. Default is @1@. ; @redirect="URL"@ : Redirect to specified URL (overrides @thanks@ and @thanks_form@ attributes). URL must be relative to the Textpattern site URL. Example: @redirect="monkey"@ would redirect to @http://example.com/monkey@. ; @replyto=boolean|email address@ : Governs the email address of who the message reply should go to. Options: : @true@ (default): Use the email address from the form itself (value from the @@ tag) if the @from@ address has been specified. Blank otherwise. : @false@: Always use the @from@ email address as reply-to. Note that if the @from@ is omitted the email will be from nobody and may be rejected by the receiving server. : @email address@: Use the specified email address as the reply-to, if it's a valid address. ; @required="boolean"@ : Whether to require all tags in this contact form to be completed before the form can be submitted. Can be overridden on a field-by-field basis by using the @required@ attribute in the relevant tag. Available values: @1@ (yes) or @0@ (no). Default is @1@. ; @send_article="boolean"@ : Whether to use this form to send an article. Available values: @1@ (yes) or @0@ (no). Default is @0@. ; @show_error="boolean"@ : Whether to display error and status messages. Available values: @1@ (yes) or @0@ (no). Default is @1@. ; @show_input="boolean"@ : Whether to display the form @@ fields. Available values: @1@ (yes) or @0@ (no). Default is @1@. ; @subject="subject text"@ : Subject used when sending an email. Default is the site name. ; @subject_form="form name"@ : Use specified form (overrides @subject@ attribute). ; @thanks="text"@ : Message shown after successfully submitting a message. Default is @Thank you, your message has been sent@. ; @thanks_form="form name"@ : Use specified form (overrides @thanks@ attribute). ; @to="email address"@ %(warning)required% : Recipient email address. Multiple recipients can be specified, separated by commas. ; @to_form="form name"@ : Use specified form (overrides @to@ attribute).

h4. Examples

h5. Example 1: Built-in contact form

When used as a single tag, produces a default form with 'Name', 'Email' and 'Message' fields. Email will be delivered to code>recipient@example.com</code, with the user's supplied email as the @From:@ address:

bc(language-markup).

h5. Example 2: Building a custom form container

When used as a container tag, much more flexibility is allowed, for example:

bc(language-markup).

<txp:com_connect_text type="tel" label="Phone" min="7" max="15" />
<txp:com_connect_textarea label="Your question" />
<txp:com_connect_submit label="Send" />

</txp:com_connect>

h5. Example 3: Custom message formatting

Use the @body_form@ attribute to build custom content that is emailed to the recipient:

bc(language-markup).

And the @body_form@ form template named @message-formatting@ is as follows:

bc.. ============ Email received.

: Mr. Nobody wrote: Nothing much :( ============ h5. Example 4: HTML and plaintext email content Use the @body_form@ attribute to build custom content in both plaintext and HTML formats that is emailed to the recipient: bc(language-markup). Use the @body_form@ form template named @message-formatting@ as follows, and note the @@ tags which indicate that the content of the given @type@ immediately follows. Use the tag with @type="end"@ to signify that the content is complete. bc.. ============ Fields submitted: :
============ h3(#cc_text). com_connect_text tag bc(language-markup). Creates a text @@ field and corresponding @