A CKAN extension for adding popup contact forms to pages.
Borrows much of the contact form code from ckanext-surrey.
An example can be seen on the Natural History Museum’s Data Portal when clicking “Contact dataset curator.”
This extension now includes Google’s reCAPTCHA for preventing spam submissions.
Path variables used below:
$INSTALL_FOLDER
(i.e. where CKAN is installed), e.g.
/usr/lib/ckan/default
$CONFIG_FILE
, e.g. /etc/ckan/default/development.ini
src
folder:cd $INSTALL_FOLDER/src
git clone https://github.com/NaturalHistoryMuseum/ckanext-contact.git
. $INSTALL_FOLDER/bin/activate
cd $INSTALL_FOLDER/src/ckanext-contact
pip install -r requirements.txt
cd $INSTALL_FOLDER/src/ckanext-contact
python setup.py develop
$CONFIG_FILE
:ckan.plugins = ... contact
There are no settings that must be provided in your .ini config file, but there are some options:
Name | Description | Default |
---|---|---|
ckanext.contact.mail_to |
Email address to submit to | email_to |
ckanext.contact.recipient_name |
Name of the recipient | ckan.site_title |
ckanext.contact.subject |
Email subject for the submitted form | 'Contact/Question from visitor' |
ckanext.contact.add_timestamp_to_subject |
Whether to append a timestamp to the subject line | false |
Name | Description | Default |
---|---|---|
ckanext.contact.recaptcha_v3_key |
API key for the reCAPTCHA service. | False (i.e. disabled) |
ckanext.contact.recaptcha_v3_secret |
API secret for the reCAPTCHA service. | False (i.e. disabled) |
ckanext.contact.recaptcha_v3_action |
data-module-action for the form/button |
To use reCAPTCHA, you must register a site with the Google reCAPTCHA service and add your API key and secret in the configuration.
Add the following HTML where you want the contact button to appear:
{% set params = {...} %}
<a class="btn btn-primary" data-module="modal-contact" data-module-template="" href="" title="">
<i class="fas fa-envelope"></i>
</a>
{% resource 'ckanext-contact/main' %}
Where params
is a dict with three entries: package_id, resource_id,
record_id (all of which are optional).
Test coverage is currently extremely limited.
To run the tests in this extension, there is a Docker compose configuration available in this repository to make it easy.
To run the tests against ckan 2.9.x on Python3:
docker-compose build
docker-compose run ckan
The ckan image uses the Dockerfile in the docker/
folder which is
based on openknowledge/ckan-dev:2.9