1: <?php
2:
3: 4: 5:
6: class Quform_Admin_InsertForm
7: {
8: 9: 10:
11: protected $repository;
12:
13: 14: 15:
16: protected $options;
17:
18: 19: 20:
21: protected $printedAssets = false;
22:
23: 24: 25: 26:
27: public function __construct(Quform_Repository $repository, Quform_Options $options)
28: {
29: $this->repository = $repository;
30: $this->options = $options;
31: }
32:
33: 34: 35:
36: public function registerScripts()
37: {
38: wp_register_style('quform-insert-form', Quform::adminUrl('css/insert-form.min.css'), array(), QUFORM_VERSION);
39: }
40:
41: 42: 43:
44: public function button()
45: {
46: if ( ! $this->options->get('insertFormButton') || ! current_user_can('quform_list_forms')) {
47: return;
48: }
49:
50:
51: if (isset($_GET['page']) && $_GET['page'] == 'quform.forms') {
52: return;
53: }
54:
55: if ( ! $this->printedAssets) {
56: wp_print_styles('quform-insert-form');
57: $this->printedAssets = true;
58: }
59:
60: printf(
61: '<button type="button" class="button qfb-insert-form-trigger" onclick="%s" data-l10n="%s"><span></span>%s</button>',
62: sprintf("!function(o){window.quformInsertForm?window.quformInsertForm.loadPopup():jQuery.getScript('%s',function(){window.quformInsertForm.init(o)})}(this);", esc_js(esc_url(Quform::adminUrl('js/insert-form.min.js')))),
63: Quform::escape(wp_json_encode(array(
64: 'ajaxUrl' => admin_url('admin-ajax.php'),
65: 'quformEnablePopupNonce' => wp_create_nonce('quform_enable_popup'),
66: 'selectForm' => __('Please select a form first', 'quform'),
67: 'couldNotSendToEditor' => __('The shortcode could not be sent to the editor, please copy it from the preview area and paste it into the editor', 'quform')
68: ))),
69: esc_html__('Add Form', 'quform')
70: );
71: }
72:
73: 74: 75:
76: public function display()
77: {
78: $orderBy = get_user_meta(get_current_user_id(), 'quform_forms_order_by', true);
79: $order = get_user_meta(get_current_user_id(), 'quform_forms_order', true);
80: $forms = $this->repository->formsToSelectArray(null, $orderBy, $order);
81: ?>
82: <div class="qfb-popup qfb-insert-form-popup">
83: <div class="qfb-popup-content">
84: <span class="qfb-insert-form-cancel"><span></span></span>
85: <div class="qfb-settings-heading"><?php esc_html_e('Insert a form', 'quform'); ?></div>
86: <?php if (count($forms)) : ?>
87: <div class="qfb-sub-setting">
88: <select id="qfb-insert-form-id">
89: <option value=""><?php esc_html_e('Select a form', 'quform'); ?></option>
90: <?php foreach ($forms as $id => $name) : ?>
91: <option value="<?php echo Quform::escape($id); ?>"><?php echo Quform::escape($name); ?></option>
92: <?php endforeach; ?>
93: </select>
94: </div>
95: <div class="qfb-sub-setting">
96: <div class="qfb-sub-setting-label">
97: <label for="qfb-insert-form-show-title"><?php esc_html_e('Show form title', 'quform'); ?></label>
98: </div>
99: <div class="qfb-sub-setting-inner">
100: <div class="qfb-sub-setting-input">
101: <input type="checkbox" id="qfb-insert-form-show-title" class="qfb-mini-toggle" checked>
102: <label for="qfb-insert-form-show-title"></label>
103: </div>
104: </div>
105: </div>
106: <div class="qfb-sub-setting">
107: <div class="qfb-sub-setting-label">
108: <label for="qfb-insert-form-show-description"><?php esc_html_e('Show form description', 'quform'); ?></label>
109: </div>
110: <div class="qfb-sub-setting-inner">
111: <div class="qfb-sub-setting-input">
112: <input type="checkbox" id="qfb-insert-form-show-description" class="qfb-mini-toggle" checked>
113: <label for="qfb-insert-form-show-description"></label>
114: </div>
115: </div>
116: </div>
117: <div class="qfb-sub-setting">
118: <div class="qfb-sub-setting-label">
119: <label for="qfb-insert-form-popup"><?php esc_html_e('Popup form', 'quform'); ?></label>
120: </div>
121: <div class="qfb-sub-setting-inner">
122: <div class="qfb-sub-setting-input">
123: <input type="checkbox" id="qfb-insert-form-popup" class="qfb-mini-toggle">
124: <label for="qfb-insert-form-popup"></label>
125: </div>
126: </div>
127: </div>
128: <div class="qfb-sub-setting">
129: <div class="qfb-sub-setting-label">
130: <label for="qfb-insert-form-content"><?php esc_html_e('Content', 'quform'); ?></label>
131: </div>
132: <div class="qfb-sub-setting-inner">
133: <div class="qfb-sub-setting-input">
134: <textarea id="qfb-insert-form-content"></textarea>
135: <p class="qfb-description"><?php esc_html_e('The text or HTML to trigger the popup, shortcodes can also be used.', 'quform'); ?></p>
136: </div>
137: </div>
138: </div>
139: <div class="qfb-sub-setting">
140: <div class="qfb-sub-setting-label">
141: <label for="qfb-insert-form-width"><?php esc_html_e('Width (optional)', 'quform'); ?></label>
142: </div>
143: <div class="qfb-sub-setting-inner">
144: <div class="qfb-sub-setting-input">
145: <input type="text" id="qfb-insert-form-width">
146: <p class="qfb-description"><?php esc_html_e('The width of the popup, any CSS width or number is accepted.', 'quform'); ?></p>
147: </div>
148: </div>
149: </div>
150: <div class="qfb-sub-setting">
151: <div class="qfb-sub-setting-label">
152: <label for="qfb-insert-form-options"><?php esc_html_e('Options (optional)', 'quform'); ?></label>
153: </div>
154: <div class="qfb-sub-setting-inner">
155: <div class="qfb-sub-setting-input">
156: <input type="text" id="qfb-insert-form-options">
157: <p class="qfb-description">
158: <?php
159: printf(
160:
161: esc_html__('JSON encoded options to pass to the popup script, %1$sexamples%2$s.', 'quform'),
162: '<a href="https://support.themecatcher.net/quform-wordpress-v2/guides/customization/popup-script-options" target="_blank">',
163: '</a>'
164: );
165: ?>
166: </p>
167: </div>
168: </div>
169: </div>
170: <div class="qfb-insert-form-button-wrap qfb-cf">
171: <button type="button" class="button button-primary qfb-insert-form-go"><?php esc_html_e('Insert', 'quform'); ?></button>
172: </div>
173: <div class="qfb-insert-form-preview">
174: <p><?php esc_html_e('If you are having trouble inserting the form, copy and paste the code below into the page content.', 'quform'); ?></p>
175: <input type="text" id="qfb-insert-form-preview" readonly>
176: </div>
177: <?php else : ?>
178: <?php
179: if (current_user_can('quform_add_forms')) {
180:
181: printf(esc_html__('No forms found, %1$sclick here to create one%2$s.', 'quform'), '<a href="' . esc_url(admin_url('admin.php?page=quform.forms&sp=add')) . '">', '</a>');
182: } else {
183: esc_html_e('No forms found.', 'quform');
184: }
185: ?>
186: <?php endif; ?>
187: </div>
188: <div class="qfb-popup-overlay"></div>
189: </div>
190: <?php
191: wp_die();
192: }
193: }
194: