# contact-forms/trunk/admin/shortcode-button.php

Contact Forms by Cimatti, version trunk. 89 lines.

- Page: https://pluginprobe.com/plugins/contact-forms/trunk/code/admin/shortcode-button.php
- Raw: https://pluginprobe.com/plugins/contact-forms/trunk/raw/admin/shortcode-button.php
- Modified: 2026-08-21T08:39:40+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/contact-forms/trunk/code/admin/shortcode-button.php#L10-L20`.

```php
<?php
if ( ! defined( 'ABSPATH' ) ) exit;

function accua_forms_register_tinymce_buttons($buttons) {
	array_push($buttons, "|", "accua_fancy_button");
	return $buttons;
}

function accua_shortcode_buttons() {
	if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages') )
		return;

	if ( get_user_option('rich_editing') == 'true') {
		add_filter("mce_external_plugins", "accua_forms_add_tinymce_plugin");
		add_filter('mce_buttons', 'accua_forms_register_tinymce_buttons');
		add_action('admin_enqueue_scripts', 'accua_forms_enqueue_shortcode_modal_assets');
	}

	add_action('admin_footer', 'accua_add_nonces_to_js_on_form_editor');
}

// Enqueue modal CSS and localize form data - only on post editor screens
function accua_forms_enqueue_shortcode_modal_assets($hook) {
	if ( ! in_array($hook, array('post.php', 'post-new.php'), true) ) {
		return;
	}

	wp_enqueue_style('accua-forms-shortcode-modal', plugins_url('assets/css/shortcode-modal.css', ACCUA_FORMS_FILE), array(), ACCUA_FORMS_CSS_VERSION);

	do_action('accua_forms_nonces_output');

	$forms = get_option('accua_forms_saved_forms', array());
	$form_list = array();
	foreach ($forms as $fid => $form_data) {
		$title = !empty($form_data['title']) ? $form_data['title'] : __('(untitled)', 'contact-forms');
		$form_list[] = array(
			'text'  => $title,
			'value' => (string) $fid,
		);
	}
	usort($form_list, function($a, $b) {
		return (int) $b['value'] - (int) $a['value'];
	});

	// Use wp_add_inline_script on a script guaranteed to be on the page
	wp_add_inline_script('jquery-core', 'var accua_forms_shortcode = ' . wp_json_encode(array(
		'forms' => $form_list,
		'i18n'  => array(
			'title'      => __('Insert Contact Form', 'contact-forms'),
			'close'      => __('Close', 'contact-forms'),
			'insert'     => __('Insert', 'contact-forms'),
			'cancel'     => __('Cancel', 'contact-forms'),
			'search'     => __('Search forms', 'contact-forms'),
			'no_results' => __('No forms found.', 'contact-forms'),
		),
	)) . ';'
	. 'var accua_forms_nonces = { preview_nonce: ' . wp_json_encode(wp_create_nonce('accua_forms_preview')) . ' };'
	. 'var accua_forms_i18n = { saving: ' . wp_json_encode(__('Saving...', 'contact-forms')) . ', unsaved_changes: ' . wp_json_encode(__('The changes you made will be lost if you navigate away from this page.', 'contact-forms')) . ' };'
	, 'before');
}

// Add nonces only on Contact Forms admin pages (form editor needs preview_nonce)
function accua_add_nonces_to_js_on_form_editor() {
	$screen = get_current_screen();
	if (!$screen || strpos($screen->id, 'accua_forms') === false) {
		return;
	}
	if (did_action('accua_forms_nonces_output')) {
		return;
	}
	do_action('accua_forms_nonces_output');
	?>
	<script type="text/javascript">
		var accua_forms_nonces = accua_forms_nonces || {};
		accua_forms_nonces.preview_nonce = '<?php echo esc_js( wp_create_nonce('accua_forms_preview') ); ?>';
		var accua_forms_i18n = accua_forms_i18n || {};
		accua_forms_i18n.saving = '<?php echo esc_js(__('Saving...', 'contact-forms')); ?>';
		accua_forms_i18n.unsaved_changes = '<?php echo esc_js(__('The changes you made will be lost if you navigate away from this page.', 'contact-forms')); ?>';
	</script>
	<?php
}

add_action('init', 'accua_shortcode_buttons');

function accua_forms_add_tinymce_plugin($plugin_array) {
	$plugin_array['accua_fancy_button'] = plugins_url('assets/js/admin/shortcode-button.js?v='.ACCUA_FORMS_JS_VERSION, ACCUA_FORMS_FILE);
	return $plugin_array;
}

```
