forked from LiveCarta/LiveCartaWP
149 lines
5.7 KiB
PHP
149 lines
5.7 KiB
PHP
<?php
|
|
|
|
$opts = $opts ?? [];
|
|
$opts = true === is_array($opts) ?
|
|
$opts :
|
|
[];
|
|
|
|
$site_key = $opts['site_key'] ?? '';
|
|
$secret_key = $opts['secret_key'] ?? '';
|
|
$enabled = $opts['enabled'] ?? '0';
|
|
$display_for_authorized = $opts['display_for_authorized'] ?? '0';
|
|
$theme = $opts['theme'] ?? '';
|
|
$type = $opts['type'] ?? '';
|
|
|
|
$theme_options = [
|
|
'light' => esc_html__('Light', 'mailchimp-for-wp'),
|
|
'dark' => esc_html__('Dark', 'mailchimp-for-wp'),
|
|
];
|
|
$type_options = [
|
|
'frictionless' => esc_html__('Frictionless', 'mailchimp-for-wp'),
|
|
'pow' => esc_html__('Proof of Work', 'mailchimp-for-wp'),
|
|
'image' => esc_html__('Image Captcha', 'mailchimp-for-wp'),
|
|
];
|
|
|
|
?>
|
|
|
|
<?php
|
|
if ('1' === $enabled) {
|
|
?>
|
|
<p>
|
|
<?php echo esc_html__('Preview: if the credentials are valid, you should be able to complete the captcha below:', 'mailchimp-for-wp'); ?>
|
|
</p>
|
|
<?php
|
|
}
|
|
$procaptcha_api = MC4WP_Procaptcha::get_instance();
|
|
echo $procaptcha_api->print_captcha_element(true, true);
|
|
?>
|
|
|
|
<input class="prosopo-procaptcha__enabled-setting" type="hidden" name="mc4wp_integrations[prosopo-procaptcha][enabled]" value="<?php echo esc_attr($enabled); ?>">
|
|
|
|
<table class="form-table">
|
|
<tbody>
|
|
<tr valign="top">
|
|
<th scope="row"><?php echo esc_html__('Site Key', 'mailchimp-for-wp'); ?></th>
|
|
<td class="nowrap integration-toggles-wrap">
|
|
<label>
|
|
<input class="widefat prosopo-procaptcha__site-key" type="text" name="mc4wp_integrations[prosopo-procaptcha][site_key]"
|
|
placeholder="<?php echo esc_attr__('Enter your site key', 'mailchimp-for-wp'); ?>"
|
|
value="<?php echo esc_attr($site_key); ?>">
|
|
</label>
|
|
<p class="description">
|
|
<?php
|
|
echo
|
|
sprintf(
|
|
// translators: %1$s: opening anchor tag, %2$s: closing anchor tag
|
|
esc_html__('The API key for connecting with your Procaptcha account. %1$s Get your Site key here %2$s', 'mailchimp-for-wp'),
|
|
'<a href="https://portal.prosopo.io/" target="_blank">',
|
|
'</a>'
|
|
);
|
|
?>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th scope="row"><?php echo esc_html__('Secret Key', 'mailchimp-for-wp'); ?></th>
|
|
<td class="nowrap integration-toggles-wrap">
|
|
<label>
|
|
<input class="widefat prosopo-procaptcha__secret-key" type="password" name="mc4wp_integrations[prosopo-procaptcha][secret_key]"
|
|
placeholder="<?php echo esc_attr__('Enter your secret key', 'mailchimp-for-wp'); ?>"
|
|
value="<?php echo esc_attr($secret_key); ?>">
|
|
</label>
|
|
</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th scope="row"><?php echo esc_html__('Theme', 'mailchimp-for-wp'); ?></th>
|
|
<td class="nowrap integration-toggles-wrap">
|
|
<label>
|
|
<select name="mc4wp_integrations[prosopo-procaptcha][theme]" style="width:250px;">
|
|
<?php
|
|
foreach ($theme_options as $value => $label) {
|
|
$selected = $theme === $value ? ' selected' : '';
|
|
printf('<option value="%s"%s>%s</option>', esc_attr($value), esc_attr($selected), esc_html($label));
|
|
}
|
|
?>
|
|
</select>
|
|
</label>
|
|
</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th scope="row"><?php echo esc_html__('Type', 'mailchimp-for-wp'); ?></th>
|
|
<td class="nowrap integration-toggles-wrap">
|
|
<label>
|
|
<select name="mc4wp_integrations[prosopo-procaptcha][type]" style="width:250px;">
|
|
<?php
|
|
foreach ($type_options as $value => $label) {
|
|
$selected = $type === $value ? ' selected' : '';
|
|
printf('<option value="%s"%s>%s</option>', esc_attr($value), esc_attr($selected), esc_html($label));
|
|
}
|
|
?>
|
|
</select>
|
|
</label>
|
|
</td>
|
|
</tr>
|
|
<tr valign="top">
|
|
<th scope="row"><?php echo esc_html__('Display for authorized users', 'mailchimp-for-wp'); ?></th>
|
|
<td class="nowrap integration-toggles-wrap">
|
|
<label>
|
|
<input type="radio" name="mc4wp_integrations[prosopo-procaptcha][display_for_authorized]" value="1" <?php checked($display_for_authorized, '1'); ?> />‏
|
|
<?php echo esc_html__('Yes', 'mailchimp-for-wp'); ?>
|
|
</label>
|
|
<label>
|
|
<input type="radio" name="mc4wp_integrations[prosopo-procaptcha][display_for_authorized]" value="0" <?php checked($display_for_authorized, '0'); ?> />‏
|
|
<?php echo esc_html__('No', 'mailchimp-for-wp'); ?>
|
|
</label>
|
|
<p class="description"><?php echo esc_html__('Select "yes" to require the captcha even from authorized users.', 'mailchimp-for-wp'); ?></p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<prosopo-procaptcha-settings></prosopo-procaptcha-settings>
|
|
|
|
<script type="module">
|
|
class ProsopoProcaptchaSettings extends HTMLElement {
|
|
connectedCallback(){
|
|
"loading" === document.readyState ?
|
|
document.addEventListener("DOMContentLoaded", this.setup.bind(this)) :
|
|
this.setup()
|
|
}
|
|
|
|
updateEnabledSetting(event){
|
|
let form = event.target;
|
|
let enabledInput = form.querySelector('.prosopo-procaptcha__enabled-setting');
|
|
let siteKey= form.querySelector('.prosopo-procaptcha__site-key').value.trim();
|
|
let secretKey = form.querySelector('.prosopo-procaptcha__secret-key').value.trim();
|
|
|
|
enabledInput.value = '' !== siteKey &&
|
|
'' !== secretKey?
|
|
1:
|
|
0;
|
|
}
|
|
|
|
setup(){
|
|
this.closest('form').addEventListener('submit', this.updateEnabledSetting.bind(this))
|
|
}
|
|
}
|
|
customElements.define('prosopo-procaptcha-settings', ProsopoProcaptchaSettings);
|
|
</script>
|