PluginProbe
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services / 8.8.4
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services v8.8.4
8.8.4 8.8.3 8.8.2 8.8.1 8.8.0 8.7.9 8.7.8 8.7.7 8.7.6 8.7.5 8.7.4 8.7.3 8.7.2 8.7.1 8.7.0 8.6.9 8.6.8 8.6.7 8.6.6 8.6.5 8.6.4 8.6.2 8.6.1 8.6.0 8.5.9 All 540 releases
← All changes | includes/simple_text_response.php +836 -622 8.7.3 → 8.8.4 View file →
@@ -1,622 +1,836 @@
1 -<?php
2 -if ( ! defined( 'ABSPATH' ) ) {
3 - exit;
4 -}
5 -global $wpdb;
6 -?>
7 -
8 - <?php
9 - if(isset($_GET['opt']) && $_GET['opt']=='add'):
10 -
11 - do_action('qcld_str_add_category');
12 -
13 - elseif(isset($_GET['opt']) && $_GET['opt']=='edit'):
14 -
15 - do_action('qcld_str_edit_category');
16 -
17 - elseif(isset($_GET['page']) && $_GET['page']=='simple-text-response' && isset($_GET['action']) && $_GET['action']=='import'):
18 -
19 - do_action('qcld_str_import');
20 -
21 - elseif(isset($_GET['action']) && wp_unslash($_GET['action'])=='manage-categories'):
22 -
23 - include_once(QCLD_wpCHATBOT_PLUGIN_DIR_PATH.'/includes/templates/manage-categories.php');
24 -
25 - elseif(isset($_GET['action']) && wp_unslash($_GET['action'])=='edit'):
26 -
27 - if(class_exists('Qcld_str_pro')):
28 - do_action('qcld_str_pro_stredit');
29 - else:
30 -
31 - $hasEdit = false;
32 - if(isset($_GET['query']) && wp_unslash($_GET['query'])!=''){
33 - $hasEdit = true;
34 - $id = sanitize_text_field(wp_unslash($_GET['query']));
35 - $table = $wpdb->prefix.'wpbot_response';
36 - $data = $wpdb->get_row($wpdb->prepare("select * from {$table} where id = %d", $id)); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, PluginCheck.Security.DirectDB.UnescapedDBParameter
37 - }
38 - ?>
39 -<div class="qcld-wp-chatbot-wrap-header">
40 -
41 - <div class="qcld-wp-chatbot-wrap-header-logo"><a href="#" class="qcld-wp-chatbot-wrap-site__logo"><img src="<?php echo esc_url( QCLD_wpCHATBOT_IMG_URL . '/chatbot.png' ); ?>" alt="Dialogflow CX"> WPBot Control Panel </a>
42 - <p><strong>Core Version:</strong> v<?php echo esc_html( QCLD_wpCHATBOT_VERSION ); ?></p>
43 - </div>
44 - <ul class="qcld-wp-chatbot-wrap-version-wrapper">
45 - <li>
46 - <a class="wpchatbot-Upgrade" href="https://www.wpbot.pro/" target="_blank">Upgrade To Pro</a>
47 -
48 - </li>
49 - </ul>
50 -</div>
51 -<div class="TextResponsesoutside">
52 - <div class="qcwrap TextResponses">
53 - <div class="wp-chatbot-wrap">
54 - <div class="wpbot_dashboard_header "><h1><?php echo ($hasEdit?'Edit':'Add') ?> Response</h1></div>
55 - <form method="post" action="">
56 - <div class="wpbot_addons_section ">
57 - <div class="wpbot_single_addon_wrapper2">
58 - <p><b><?php esc_html_e('Please note the following ', 'chatbot'); ?></b></p>
59 - <ul>
60 - <li> <?php esc_html_e('1. The Query, Response and Keywords fields will be searched. Add Keywords for best matches', 'chatbot'); ?></li>
61 - <li> <?php esc_html_e('2. Please clear browser Cache and Cookies both before testing new responses', 'chatbot'); ?></li>
62 - </ul>
63 - <table class="form-table-str form-table">
64 - <tbody>
65 - <tr valign="top">
66 - <th scope="row"><?php esc_html_e('Query', 'chatbot'); ?></th>
67 - <td>
68 - <input name="str_nonce" type="hidden" value="<?php echo sanitize_key( wp_create_nonce('str-nonce') ); ?>" />
69 - <input type="text" name="qc_bot_str_query" value="<?php echo esc_attr($hasEdit?$data->query:''); ?>" style="width: 100%;" required />
70 - <br><i><?php esc_html_e('*Required. Add the query here. ', 'chatbot'); ?></i>
71 - </td>
72 - </tr>
73 -
74 - <tr valign="top">
75 - <th scope="row"> <?php esc_html_e('Response', 'chatbot'); ?></th>
76 - <td>
77 - <?php
78 -
79 - $content = ($hasEdit?$data->response:'');
80 - $editor_id = 'qc_bot_str_response';
81 - $settings = array( );
82 -
83 - wp_editor( $content, $editor_id, $settings );
84 -
85 - ?>
86 - <br><i><?php esc_html_e('*Required. Add the response here. ', 'chatbot'); ?></i>
87 - </td>
88 - </tr>
89 - <tr valign="top">
90 - <th scope="row">Keyword</th>
91 - <td>
92 - <input type="text" name="qc_bot_str_keyword" value="<?php echo esc_attr($hasEdit?$data->keyword:''); ?>" style="width: 100%;" />
93 - <br><i> <?php esc_html_e('Optional. Add multiple keyword or phrases as comma(,) seperated value. It will help to find the best match result.', 'chatbot'); ?></i>
94 - </td>
95 - </tr>
96 -
97 -
98 - <?php if($hasEdit): ?>
99 -
100 - <input type="hidden" name="qc_bot_str_id" value="<?php echo esc_attr($data->id); ?>" />
101 -
102 - <?php endif; ?>
103 - </tbody>
104 - </table>
105 - </div>
106 - <footer class="wp-chatbot-admin-footer">
107 - <div class="row">
108 - <div class="text-left col-sm-3 col-sm-offset-3">
109 -
110 - </div>
111 - <div class="text-right col-sm-6">
112 - <input type="submit" class="button button-primary" name="submit" id="submit" value="Save Settings">
113 - </div>
114 - </div>
115 - <!-- row-->
116 - </footer>
117 - </div></form>
118 - </div>
119 - </div>
120 - </div>
121 - <?php endif; ?>
122 -
123 -
124 - <?php else: ?>
125 -
126 -<div class="qcld-wp-chatbot-wrap-header">
127 -
128 - <a href="#" class="qcld-wp-chatbot-wrap-site__logo"><img src="<?php echo esc_url( QCLD_wpCHATBOT_IMG_URL . '/chatbot.png' ); ?>" alt="Dialogflow CX"> WPBot Control Panel </a>
129 - <p><strong>Core Version:</strong> v<?php echo esc_html( QCLD_wpCHATBOT_VERSION ); ?></p>
130 - <ul class="qcld-wp-chatbot-wrap-version-wrapper">
131 - <li>
132 - <a class="wpchatbot-Upgrade" href="https://www.wpbot.pro/" target="_blank">Upgrade To Pro</a>
133 -
134 - </li>
135 - </ul>
136 -</div>
137 -
138 -<div class="qcld-wp-chatbot-wrap-header_inn">
139 -<div class="qcld-wp-chatbot-wrap-header_inn_heading">
140 - <h1 class="wp-heading-inline"><?php esc_html_e('Simple Text Responses', 'chatbot'); ?></h1>
141 - <a style="visibility: hidden;" href="<?php echo esc_url( add_query_arg( 'action', 'edit', admin_url('admin.php?page=simple-text-response') ) ); ?>" class="button page-title-action"><?php esc_html_e('Add New', 'chatbot'); ?></a>
142 - </div>
143 - <?php if(class_exists('Qcld_str_pro')): ?>
144 -
145 - <a href="<?php echo esc_url( add_query_arg( 'action', 'manage-categories', admin_url('admin.php?page=simple-text-response') ) ); ?>" class="button page-title-action"><?php esc_html_e('Manage Categories', 'chatbot'); ?></a>
146 - <a href="<?php echo esc_url( admin_url( 'admin-post.php?action=qc_str_export' ) ); ?>" class="button page-title-action"><?php esc_html_e('Export', 'chatbot'); ?></a>
147 - <a href="<?php echo esc_url( add_query_arg( 'action', 'import', admin_url('admin.php?page=simple-text-response') ) ); ?>" class="button page-title-action"><?php esc_html_e('Import', 'chatbot'); ?></a>
148 - </div>
149 - <?php endif; ?>
150 - <div class="TextResponsesouter">
151 - <div class="wrap TextResponses">
152 -
153 -<div id="qcld-show-more-wrapper-box">
154 -<div class="qcld-show-more-text qcld-show-more-show-more-height">
155 -
156 - <div class="wrapTexttop">
157 - <p><?php esc_html_e('Create simple text responses and the ChatBot will use advanced search algorithm to answer user questions. This is a simpler alternative to OpenAI or DialogFlow.', 'chatbot'); ?><br>
158 - <b><?php esc_html_e('NB: Simple Text Responses require mySQL Client version 5.6+', 'chatbot'); ?></b></p>
159 - </div>
160 - <form method="post" action="">
161 - <table class="form-table-str form-table">
162 - <tbody>
163 - <tr valign="top">
164 - <th scope="row"><?php esc_html_e('Phrase matching accuracy', 'chatbot'); ?></th>
165 - <td>
166 - <input name="str_nonce" type="hidden" value="<?php echo sanitize_key( wp_create_nonce('str-nonce') ); ?>" />
167 - <input type="text" name="qc_bot_str_weight" value="<?php echo esc_attr( !empty(get_option('qc_bot_str_weight')) ? get_option('qc_bot_str_weight') : '0.4' ); ?>" style="width: 100%;" required />
168 - <br><i><?php esc_html_e('Please enter a value between 0 to 1. Higher value means more exact matching of phrases.', 'chatbot'); ?></i>
169 - </td>
170 - </tr>
171 - <tr valign="top">
172 - <th scope="row"><?php esc_html_e('Search Fields', 'chatbot'); ?></th>
173 - <td>
174 - <?php
175 - $fields = get_option('qc_bot_str_fields');
176 - ?>
177 -
178 - <label for="qc_bot_str_field_title"><?php esc_html_e('Title', 'chatbot'); ?></label>
179 - <input id="qc_bot_str_field_title" type="checkbox" name="qc_bot_str_fields[]" value="query" <?php echo (!$fields?'checked="checked"':''); ?> <?php echo ($fields && in_array('query', $fields)?'checked="checked"':''); ?> />
180 -
181 - <label for="qc_bot_str_field_keyword"><?php esc_html_e('Keyword', 'chatbot'); ?></label>
182 - <input id="qc_bot_str_field_keyword" type="checkbox" name="qc_bot_str_fields[]" value="keyword" <?php echo (!$fields?'checked="checked"':''); ?> <?php echo ($fields && in_array('keyword', $fields)?'checked="checked"':''); ?> />
183 -
184 - <label for="qc_bot_str_field_response"><?php esc_html_e('Response', 'chatbot'); ?></label>
185 - <input id="qc_bot_str_field_response" type="checkbox" name="qc_bot_str_fields[]" value="response" <?php echo (!$fields?'checked="checked"':''); ?> <?php echo ($fields && in_array('response', $fields)?'checked="checked"':''); ?> />
186 - <br><i><?php esc_html_e('Please check/uncheck to allow/disallow searching in that fields', 'chatbot'); ?></i>
187 - </td>
188 - </tr>
189 - <?php
190 - $current_user = wp_get_current_user();
191 - if ( in_array( 'administrator', $current_user->roles )) {
192 - ?>
193 - <tr valign="top">
194 - <th scope="row"><?php echo esc_html( 'Allow Author & Editor to edit STR' ); ?></th>
195 - <td>
196 - <input id="qc_bot_str_allow_author_editor" type="checkbox" name="qc_bot_str_allow_author_editor" value="1" <?php echo ( get_option( 'qc_bot_str_allow_author_editor' ) && get_option( 'qc_bot_str_allow_author_editor' ) == 1 ? 'checked="checked"' : '' ); ?> />
197 - <label for="qc_bot_str_allow_author_editor"><?php echo esc_html( 'Allow Author & Editor to edit STR' ); ?></label>
198 - <br><i><?php echo esc_html( 'Please enable to allow Author & Editor to edit STR.' ); ?></i>
199 - </td>
200 - </tr>
201 - <?php } ?>
202 - <tr valign="top">
203 - <th scope="row"></th>
204 - <td>
205 - <input type="submit" class="button button-primary" name="submit" id="submit" value="Save Settings">
206 - </td>
207 - </tr>
208 - </tbody>
209 - </table>
210 - </form>
211 - <form method="post" action="">
212 - <table class="form-table-str form-table">
213 - <tbody>
214 - <tr valign="top">
215 - <th scope="row"><?php esc_html_e('Re-Index STR', 'chatbot'); ?></th>
216 - <td>
217 - <input name="str_nonce" type="hidden" value="<?php echo sanitize_key( wp_create_nonce('str-nonce') ); ?>" />
218 - <input type="submit" class="button button-primary" name="qc-re-index" id="re-index" value="Re Index">
219 -
220 - <i><?php esc_html_e('Re-Index if results are not as expected.', 'chatbot'); ?></i>
221 - </td>
222 - </tr>
223 - </tbody>
224 - </table>
225 - </form>
226 -
227 -
228 -
229 - </div>
230 - <div class="qcld-show-more-show-more"><div class="Expandmore">Expand for More Options<span>+</span></div></div>
231 - </div>
232 -
233 - <div id="poststuff">
234 - <div id="post-body" class="metabox-holder">
235 - <div id="post-body-content-edit" class="str-form">
236 - <div class="meta-box-sortables ui-sortable">
237 - <form method="post">
238 -
239 - <a href="<?php echo esc_url( add_query_arg( 'action', 'edit', admin_url('admin.php?page=simple-text-response') ) ); ?>" class="button page-title-action str-addnew"><?php esc_html_e('Add New', 'chatbot'); ?></a>
240 - <?php
241 - $this->response_list->prepare_items();
242 - $this->response_list->display(); ?>
243 - </form>
244 - </div>
245 - </div>
246 - </div>
247 -
248 - </div>
249 - </div>
250 - </div>
251 - <?php endif; ?>
252 -
253 -
254 -
255 - <style>
256 -body {
257 - background-color: #F5F7FD;
258 - font-family: "DM Sans", sans-serif !important;
259 - font-optical-sizing: auto;
260 - font-size: 16px;
261 - font-weight: normal;
262 -}
263 -.qcld-wp-chatbot-wrap-header {
264 - display: flex;
265 - column-gap: 15px;
266 - row-gap: 10px;
267 - background: #fff;
268 - padding: 15px 15px;
269 - margin: 20px 20px 20px 0;
270 - border-radius: 16px;
271 - align-items: center;
272 - justify-content: space-between;
273 - width: 97%;
274 -}
275 -
276 -.qcld-wp-chatbot-wrap-header img{
277 - max-width: 50px;
278 -}
279 -
280 -.qcld-wp-chatbot-wrap-header ul, .qcld-wp-chatbot-wrap-header p, .qcld-wp-chatbot-wrap-header li{
281 - margin: 0;
282 -}
283 -.qcld-wp-chatbot-wrap-header a.wpchatbot-Upgrade {
284 - padding: 12px 25px;
285 - background: #ffffff;
286 - color: #5B4E96;
287 - border: 2px solid #5B4E96;
288 - border-radius: 6px;
289 - font-weight: bold;
290 -}
291 -
292 -.qcld-wp-chatbot-wrap-header a.wpchatbot-Upgrade:hover {
293 - padding: 12px 25px;
294 - background: #5B4E96;
295 - color: #fff;
296 - border: 2px solid #5B4E96;
297 - border-radius: 6px;
298 - font-weight: bold;
299 - text-decoration: none;
300 -}
301 -a.qcld-wp-chatbot-wrap-site__logo {
302 - font-size: 22px;
303 - color: #000;
304 - font-weight: bold;
305 - display: flex;
306 - align-items: center;
307 - gap: 12px;
308 - text-decoration: none;
309 - margin: 0;
310 - padding: 0;
311 -}
312 -
313 -a{
314 - text-decoration: none;
315 -}
316 -.qcld-wp-chatbot-wrap-header_inn {
317 - background: #fff;
318 - border-radius: 16px;
319 - margin: 0 20px 0 0;
320 - padding: 20px;
321 -}
322 -.TextResponsesoutside {
323 - background: #fff;
324 - border-radius: 16px;
325 - margin: 0 20px 0 0;
326 - padding: 20px;
327 -}
328 -
329 -
330 -.qcld-wp-chatbot-wrap-header_inn h1.wp-heading-inline {
331 - border-bottom: 1px solid #eee;
332 - padding: 0 0 15px 0;
333 - margin: 20px 0 12px 0;
334 - font-weight: bold;
335 - font-size: 22px !important;
336 -}
337 -
338 -.TextResponsesoutside h1 {
339 - border-bottom: 1px solid #eee;
340 - padding: 0 0 8px 0;
341 - margin: 20px 0 12px 0;
342 - font-weight: bold;
343 - font-size: 22px !important;
344 -}
345 -.TextResponsesoutside ul li {
346 - font-size: 14px;
347 -}
348 -.wpbot_single_addon_wrapper2 p {
349 - font-size: 16px;
350 -}
351 -.TextResponsesouter i {
352 - font-weight: normal;
353 - font-size: 12px;
354 - color: red;
355 -}
356 -.TextResponsesoutside i {
357 - font-weight: normal;
358 - font-size: 12px;
359 - color: red;
360 -}
361 -
362 -table.form-table-str.form-table tr {
363 - background: #fff;
364 - padding: 2px 10px !important;
365 - border-radius: 6px;
366 - margin: 0 0 8px 0;
367 - border: 5px solid #fff;
368 - vertical-align: middle;
369 - border: 1px solid #eee;
370 -}
371 -table.form-table-str.form-table {
372 - border: 1px solid #eee;
373 -}
374 -table.form-table-str.form-table tr {
375 - border: none;
376 -}
377 -table.form-table-str.form-table th {
378 - vertical-align: top;
379 - text-align: center;
380 - padding: 20px 10px 20px 0;
381 - width: 200px;
382 - line-height: 1.3;
383 - font-weight: 600;
384 - vertical-align: middle;
385 -}
386 -
387 -.TextResponsesoutside footer.wp-chatbot-admin-footer input#submit {
388 - padding: 12px 20px;
389 - width: 100%;
390 - font-size: 16px;
391 - font-weight: 500;
392 - color: #988FBD;
393 - border-radius: 8px;
394 - position: relative;
395 - display: flex;
396 - align-items: center;
397 - gap: 15px;
398 - background: #5B4E96;
399 - color: #ffffff;
400 - text-decoration: none;
401 - border: none;
402 - max-width: 220px;
403 - margin: 12px 0 0 0;
404 - line-height: 24px;
405 -}
406 -.qcld-wp-chatbot-wrap-header_inn a.button.page-title-action {
407 - padding: 3px 25px;
408 - background: #ffffff;
409 - color: #5B4E96;
410 - border: 2px solid #5B4E96;
411 - border-radius: 6px;
412 - font-weight: bold;
413 -}
414 -
415 -.qcld-wp-chatbot-wrap-header_inn a.button.page-title-action:hover {
416 - padding: 0px 15px;
417 - background: #5B4E96;
418 - color: #fff;
419 - border: 2px solid #5B4E96;
420 - border-radius: 6px;
421 - font-weight: bold;
422 - position: absolute;
423 - top: 36px;
424 - left: 280px;
425 -}
426 -.qcld-wp-chatbot-wrap-header_inn a.button.page-title-action {
427 - padding: 0px 15px;
428 - background: #ffffff;
429 - color: #5B4E96;
430 - border: 2px solid #5B4E96;
431 - border-radius: 6px;
432 - font-weight: bold;
433 - position: absolute;
434 - top: 36px;
435 - left: 280px;
436 -}
437 -
438 -.qcld-wp-chatbot-wrap-header_inn {
439 - position: relative;
440 -}
441 -.notice.is-dismissible.qcbot-str-top-notic {
442 - width: 95%;
443 -}
444 -
445 -.TextResponsesouter i {
446 - position: relative;
447 - top: 6px;
448 -}
449 -
450 -table.form-table-str.form-table th {
451 - text-align: left !important;
452 - padding: 20px 10px 20px 20px !important;
453 -}
454 -
455 -.qc-review-text img {
456 - width: 100%;
457 -}
458 -
459 -.TextResponsesouter input#submit {
460 - padding: 0px 15px;
461 - background: #ffffff;
462 - color: #5B4E96;
463 - border: 2px solid #5B4E96;
464 - border-radius: 6px;
465 - font-weight: bold;
466 -}
467 -.TextResponsesouter input#re-index {
468 - padding: 0px 15px;
469 - background: #ffffff;
470 - color: #5B4E96;
471 - border: 2px solid #5B4E96;
472 - border-radius: 6px;
473 - font-weight: bold;
474 -}
475 -
476 -
477 -#qcld-show-more-wrapper-box {
478 - margin-top: 0;
479 - position:relative;
480 -}
481 -#qcld-show-more-wrapper-box .qcld-show-more-text {
482 -/* width: 660px; */
483 - margin-bottom: 5px;
484 - padding: 0 0;
485 - position:relative;
486 - display: block;
487 -}
488 -#qcld-show-more-wrapper-box .qcld-show-more-show-more {
489 - color: #ffffff;
490 - position: relative;
491 - padding: 40px 0 0 0;
492 - height: 40px;
493 - text-align: center;
494 - background: #f1f1f1;
495 - cursor: pointer;
496 - background: linear-gradient(to bottom, rgb(255 255 255 / 53%) 0%, rgb(188 174 255) 100%);
497 - margin: -18px 0 0 0;
498 - border-radius: 0 0 15px 15px;
499 - z-index: 99999;
500 - font-weight: bold;
501 -
502 -}
503 -
504 -#qcld-show-more-wrapper-box .qcld-show-more-show-more-height {
505 - height: 112px;
506 - overflow:hidden;
507 -}
508 -
509 -#qcld-show-more-wrapper-box .qcld-show-more-show-more i {
510 - display: block;
511 - padding: 0 0 0 0;
512 - background: #5b4e96;
513 - width: 30px;
514 - height: 30px;
515 - line-height: 30px;
516 - border-radius: 50%;
517 - margin: -15px auto 0 auto;
518 - font-size: 18px !important;
519 - color: #fff;
520 -}
521 -.TextResponsesouter input#submit:hover {
522 - background: #5B4E96;
523 - color: #fff;
524 - border: 2px solid #5B4E96;
525 -}
526 -
527 -.TextResponsesouter input#re-index:hover {
528 - background: #5B4E96;
529 - color: #fff;
530 - border: 2px solid #5B4E96;
531 -}
532 -.TextResponsesouter table.widefat {
533 - border: 1px solid #ebebeb;
534 -}
535 -.TextResponsesouter .tablenav {
536 - padding: 8px;
537 - background: #5B4E96;
538 -}
539 -.TextResponsesouter span.displaying-num {
540 - color: #fff;
541 -}
542 -
543 -.TextResponsesouter .tablenav #doaction, .TextResponsesouter .tablenav #doaction2 {
544 - border: 1px solid #ffffff !important;
545 - color: #ffffff !important;
546 -}
547 -
548 -
549 -
550 -.qcld-wp-chatbot-wrap-header-logo {
551 - display: flex;
552 - align-items: center;
553 - gap: 10px;
554 -}
555 -
556 -.qcld-wp-chatbot-wrap-header_inn a.button.page-title-action {
557 - padding: 8px 15px;
558 - background: #ffffff;
559 - color: #5B4E96;
560 - border: 2px solid #5B4E96;
561 - border-radius: 6px;
562 - font-weight: bold;
563 - position: absolute;
564 - top: 30px;
565 - left: 280px;
566 - line-height: normal;
567 - min-height: unset;
568 -}
569 -.qcld-wp-chatbot-wrap-header_inn a.button.page-title-action:hover {
570 - padding: 8px 15px;
571 - background: #5B4E96;
572 - color: #fff;
573 - border: 2px solid #5B4E96;
574 - border-radius: 6px;
575 - font-weight: bold;
576 - position: absolute;
577 - top: 30px;
578 - left: 280px;
579 -}
580 -
581 -.Expandmore {
582 - background: #23ab10;
583 - display: inline-block;
584 - padding: 4px 10px;
585 - font-size: 14px;
586 - border-radius: 6px;
587 - position: relative;
588 - top: 0;
589 -}
590 -
591 -.Collapsemore {
592 - background: #ff0000;
593 - display: inline-block;
594 - padding: 4px 10px;
595 - font-size: 14px;
596 - border-radius: 6px;
597 - position: relative;
598 - top: 0;
599 -
600 -}
601 -
602 -.Expandmore span {
603 - color: #fff;
604 - margin: 0 0 0 8px;
605 - padding: 0 5px;
606 - font-size: 18px;
607 -}
608 - </style>
609 -
610 -<script type="text/javascript">
611 -jQuery(".qcld-show-more-show-more").click(function () {
612 - if(jQuery(".qcld-show-more-text").hasClass("qcld-show-more-show-more-height")) {
613 - jQuery(this).html('<div class="Collapsemore">Collapse Options</div>');
614 - } else {
615 - jQuery(this).html('<div class="Expandmore">Expand for More Options<span>+</span></div>');
616 - }
617 -
618 - jQuery(".qcld-show-more-text").toggleClass("qcld-show-more-show-more-height");
619 - });
620 -
621 -
622 -</script>
1 +<?php
2 +if ( ! defined( 'ABSPATH' ) ) {
3 + exit;
4 +}
5 +global $wpdb;
6 +?>
7 +
8 + <?php
9 + if(isset($_GET['opt']) && $_GET['opt']=='add'):
10 +
11 + do_action('qcld_str_add_category');
12 +
13 + elseif(isset($_GET['opt']) && $_GET['opt']=='edit'):
14 +
15 + do_action('qcld_str_edit_category');
16 +
17 + elseif(isset($_GET['page']) && $_GET['page']=='simple-text-response' && isset($_GET['action']) && $_GET['action']=='import'):
18 +
19 + do_action('qcld_str_import');
20 +
21 + elseif(isset($_GET['action']) && wp_unslash($_GET['action'])=='manage-categories'):
22 +
23 + include_once(QCLD_wpCHATBOT_PLUGIN_DIR_PATH.'/includes/templates/manage-categories.php');
24 +
25 + elseif(isset($_GET['action']) && wp_unslash($_GET['action'])=='edit'):
26 +
27 + if(class_exists('Qcld_str_pro')):
28 + do_action('qcld_str_pro_stredit');
29 + else:
30 +
31 + $hasEdit = false;
32 + if(isset($_GET['query']) && wp_unslash($_GET['query'])!=''){
33 + $hasEdit = true;
34 + $id = sanitize_text_field(wp_unslash($_GET['query']));
35 + $table = $wpdb->prefix.'wpbot_response';
36 + $data = $wpdb->get_row($wpdb->prepare("select * from {$table} where id = %d", $id)); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, PluginCheck.Security.DirectDB.UnescapedDBParameter
37 + }
38 + ?>
39 +<div class="wpbot-str-page">
40 +<div class="qcld-wp-chatbot-wrap-header">
41 + <div class="qcld-wp-chatbot-wrap-header-logo"><a href="#" class="qcld-wp-chatbot-wrap-site__logo"><img src="<?php echo esc_url( QCLD_wpCHATBOT_IMG_URL . '/chatbot.png' ); ?>" alt="<?php esc_attr_e( 'WPBot', 'chatbot' ); ?>"> WPBot Control Panel </a>
42 + <p><strong><?php esc_html_e( 'Core Version:', 'chatbot' ); ?></strong> v<?php echo esc_html( QCLD_wpCHATBOT_VERSION ); ?></p>
43 + </div>
44 + <ul class="qcld-wp-chatbot-wrap-version-wrapper">
45 + <li>
46 + <a class="wpchatbot-Upgrade" href="https://www.wpbot.pro/" target="_blank"><?php esc_html_e( 'Upgrade To Pro', 'chatbot' ); ?></a>
47 + </li>
48 + </ul>
49 +</div>
50 +
51 +<div class="wpbot-str-main">
52 + <div class="wpbot-str-hero">
53 + <div class="wpbot-str-hero-copy">
54 + <h1><?php echo $hasEdit ? esc_html__( 'Edit Response', 'chatbot' ) : esc_html__( 'Add Response', 'chatbot' ); ?></h1>
55 + <p><?php esc_html_e( 'Query, response, and keywords are all searched. Add keywords so the best match is easier to find.', 'chatbot' ); ?></p>
56 + </div>
57 + <a class="wpbot-str-btn" href="<?php echo esc_url( admin_url( 'admin.php?page=simple-text-response' ) ); ?>"><?php esc_html_e( 'Back to responses', 'chatbot' ); ?></a>
58 + </div>
59 +
60 + <div class="wpbot-str-card">
61 + <div class="wpbot-str-callout">
62 + <p><?php esc_html_e( 'Clear browser cache and cookies before testing a new response.', 'chatbot' ); ?></p>
63 + </div>
64 + <form method="post" action="">
65 + <input name="str_nonce" type="hidden" value="<?php echo esc_attr( sanitize_key( wp_create_nonce( 'str-nonce' ) ) ); ?>" />
66 + <?php if ( $hasEdit ) : ?>
67 + <input type="hidden" name="qc_bot_str_id" value="<?php echo esc_attr( $data->id ); ?>" />
68 + <?php endif; ?>
69 +
70 + <div class="wpbot-str-field">
71 + <span class="wpbot-str-label"><?php esc_html_e( 'Query', 'chatbot' ); ?></span>
72 + <div>
73 + <input class="wpbot-str-input" type="text" name="qc_bot_str_query" value="<?php echo esc_attr( $hasEdit ? $data->query : '' ); ?>" required />
74 + <p class="wpbot-str-hint"><?php esc_html_e( 'Required. Add the question or phrase a visitor might ask.', 'chatbot' ); ?></p>
75 + </div>
76 + </div>
77 +
78 + <div class="wpbot-str-field wpbot-str-field-editor">
79 + <span class="wpbot-str-label"><?php esc_html_e( 'Response', 'chatbot' ); ?></span>
80 + <div>
81 + <?php
82 + $content = ( $hasEdit ? $data->response : '' );
83 + $editor_id = 'qc_bot_str_response';
84 + wp_editor( $content, $editor_id, array() );
85 + ?>
86 + <p class="wpbot-str-hint"><?php esc_html_e( 'Required. Add the reply the chatbot should send.', 'chatbot' ); ?></p>
87 + </div>
88 + </div>
89 +
90 + <div class="wpbot-str-field">
91 + <span class="wpbot-str-label"><?php esc_html_e( 'Keyword', 'chatbot' ); ?></span>
92 + <div>
93 + <input class="wpbot-str-input" type="text" name="qc_bot_str_keyword" value="<?php echo esc_attr( $hasEdit ? $data->keyword : '' ); ?>" />
94 + <p class="wpbot-str-hint"><?php esc_html_e( 'Optional. Add multiple keywords or phrases, separated by commas, to improve matching.', 'chatbot' ); ?></p>
95 + </div>
96 + </div>
97 +
98 + <div class="wpbot-str-form-actions">
99 + <a class="wpbot-str-btn" href="<?php echo esc_url( admin_url( 'admin.php?page=simple-text-response' ) ); ?>"><?php esc_html_e( 'Cancel', 'chatbot' ); ?></a>
100 + <button type="submit" class="wpbot-str-btn wpbot-str-btn-primary" name="submit"><?php esc_html_e( 'Save Response', 'chatbot' ); ?></button>
101 + </div>
102 + </form>
103 + </div>
104 +</div>
105 +</div>
106 + <?php endif; ?>
107 +
108 +
109 + <?php else: ?>
110 +
111 +<div class="wpbot-str-page">
112 +<div class="qcld-wp-chatbot-wrap-header">
113 + <div class="qcld-wp-chatbot-wrap-header-logo"><a href="#" class="qcld-wp-chatbot-wrap-site__logo"><img src="<?php echo esc_url( QCLD_wpCHATBOT_IMG_URL . '/chatbot.png' ); ?>" alt="<?php esc_attr_e( 'WPBot', 'chatbot' ); ?>"> WPBot Control Panel </a>
114 + <p><strong><?php esc_html_e( 'Core Version:', 'chatbot' ); ?></strong> v<?php echo esc_html( QCLD_wpCHATBOT_VERSION ); ?></p>
115 + </div>
116 + <ul class="qcld-wp-chatbot-wrap-version-wrapper">
117 + <li>
118 + <a class="wpchatbot-Upgrade" href="https://www.wpbot.pro/" target="_blank"><?php esc_html_e( 'Upgrade To Pro', 'chatbot' ); ?></a>
119 + </li>
120 + </ul>
121 +</div>
122 +
123 +<div class="wpbot-str-main">
124 + <div class="wpbot-str-hero">
125 + <div class="wpbot-str-hero-copy">
126 + <h1><?php esc_html_e( 'Simple Text Responses', 'chatbot' ); ?></h1>
127 + <p><?php esc_html_e( 'Create simple text responses and the ChatBot will use an advanced search algorithm to answer user questions. This is a simpler alternative to OpenAI or DialogFlow.', 'chatbot' ); ?></p>
128 + <span class="wpbot-str-note"><?php esc_html_e( 'Requires MySQL client version 5.6+', 'chatbot' ); ?></span>
129 + </div>
130 + <?php if ( class_exists( 'Qcld_str_pro' ) ) : ?>
131 + <div class="wpbot-str-hero-actions">
132 + <a href="<?php echo esc_url( add_query_arg( 'action', 'manage-categories', admin_url( 'admin.php?page=simple-text-response' ) ) ); ?>" class="wpbot-str-btn"><?php esc_html_e( 'Manage Categories', 'chatbot' ); ?></a>
133 + <a href="<?php echo esc_url( admin_url( 'admin-post.php?action=qc_str_export' ) ); ?>" class="wpbot-str-btn"><?php esc_html_e( 'Export', 'chatbot' ); ?></a>
134 + <a href="<?php echo esc_url( add_query_arg( 'action', 'import', admin_url( 'admin.php?page=simple-text-response' ) ) ); ?>" class="wpbot-str-btn"><?php esc_html_e( 'Import', 'chatbot' ); ?></a>
135 + </div>
136 + <?php endif; ?>
137 + </div>
138 +
139 + <div class="wpbot-str-card">
140 + <div class="wpbot-str-card-head">
141 + <div>
142 + <h2><?php esc_html_e( 'Search settings', 'chatbot' ); ?></h2>
143 + <p><?php esc_html_e( 'Tune how closely a visitor’s phrase must match, and which fields are searched.', 'chatbot' ); ?></p>
144 + </div>
145 + </div>
146 +
147 + <form method="post" action="">
148 + <input name="str_nonce" type="hidden" value="<?php echo esc_attr( sanitize_key( wp_create_nonce( 'str-nonce' ) ) ); ?>" />
149 +
150 + <div class="wpbot-str-field">
151 + <span class="wpbot-str-label"><?php esc_html_e( 'Phrase matching accuracy', 'chatbot' ); ?></span>
152 + <div>
153 + <input class="wpbot-str-input wpbot-str-input-short" type="text" name="qc_bot_str_weight" value="<?php echo esc_attr( ! empty( get_option( 'qc_bot_str_weight' ) ) ? get_option( 'qc_bot_str_weight' ) : '0.4' ); ?>" required />
154 + <p class="wpbot-str-hint"><?php esc_html_e( 'Enter a value between 0 and 1. A higher value means phrases must match more exactly.', 'chatbot' ); ?></p>
155 + </div>
156 + </div>
157 +
158 + <div class="wpbot-str-field">
159 + <span class="wpbot-str-label"><?php esc_html_e( 'Search fields', 'chatbot' ); ?></span>
160 + <div>
161 + <?php $fields = get_option( 'qc_bot_str_fields' ); ?>
162 + <div class="wpbot-str-checks">
163 + <label for="qc_bot_str_field_title">
164 + <input id="qc_bot_str_field_title" type="checkbox" name="qc_bot_str_fields[]" value="query" <?php echo ( ! $fields ? 'checked="checked"' : '' ); ?> <?php echo ( $fields && in_array( 'query', $fields, true ) ? 'checked="checked"' : '' ); ?> />
165 + <?php esc_html_e( 'Title', 'chatbot' ); ?>
166 + </label>
167 + <label for="qc_bot_str_field_keyword">
168 + <input id="qc_bot_str_field_keyword" type="checkbox" name="qc_bot_str_fields[]" value="keyword" <?php echo ( ! $fields ? 'checked="checked"' : '' ); ?> <?php echo ( $fields && in_array( 'keyword', $fields, true ) ? 'checked="checked"' : '' ); ?> />
169 + <?php esc_html_e( 'Keyword', 'chatbot' ); ?>
170 + </label>
171 + <label for="qc_bot_str_field_response">
172 + <input id="qc_bot_str_field_response" type="checkbox" name="qc_bot_str_fields[]" value="response" <?php echo ( ! $fields ? 'checked="checked"' : '' ); ?> <?php echo ( $fields && in_array( 'response', $fields, true ) ? 'checked="checked"' : '' ); ?> />
173 + <?php esc_html_e( 'Response', 'chatbot' ); ?>
174 + </label>
175 + </div>
176 + <p class="wpbot-str-hint"><?php esc_html_e( 'Check a field to include it in search. Uncheck it to leave it out.', 'chatbot' ); ?></p>
177 + </div>
178 + </div>
179 +
180 + <div class="wpbot-str-extra" hidden>
181 + <?php
182 + $current_user = wp_get_current_user();
183 + if ( in_array( 'administrator', $current_user->roles, true ) ) :
184 + ?>
185 + <div class="wpbot-str-field">
186 + <span class="wpbot-str-label"><?php esc_html_e( 'Editor access', 'chatbot' ); ?></span>
187 + <div>
188 + <div class="wpbot-str-checks">
189 + <label for="qc_bot_str_allow_author_editor">
190 + <input id="qc_bot_str_allow_author_editor" type="checkbox" name="qc_bot_str_allow_author_editor" value="1" <?php echo ( get_option( 'qc_bot_str_allow_author_editor' ) && get_option( 'qc_bot_str_allow_author_editor' ) == 1 ? 'checked="checked"' : '' ); ?> />
191 + <?php esc_html_e( 'Allow Author & Editor to edit STR', 'chatbot' ); ?>
192 + </label>
193 + </div>
194 + <p class="wpbot-str-hint"><?php esc_html_e( 'Enable this so Authors and Editors can edit Simple Text Responses.', 'chatbot' ); ?></p>
195 + </div>
196 + </div>
197 + <?php endif; ?>
198 +
199 + <div class="wpbot-str-form-actions">
200 + <button type="submit" class="wpbot-str-btn wpbot-str-btn-primary" name="submit"><?php esc_html_e( 'Save Settings', 'chatbot' ); ?></button>
201 + </div>
202 + </div>
203 + </form>
204 +
205 + <form class="wpbot-str-reindex wpbot-str-extra" method="post" action="" hidden>
206 + <input name="str_nonce" type="hidden" value="<?php echo esc_attr( sanitize_key( wp_create_nonce( 'str-nonce' ) ) ); ?>" />
207 + <div class="wpbot-str-reindex-copy">
208 + <strong><?php esc_html_e( 'Re-index responses', 'chatbot' ); ?></strong>
209 + <p class="wpbot-str-hint"><?php esc_html_e( 'Run this if search results are not what you expect.', 'chatbot' ); ?></p>
210 + </div>
211 + <button type="submit" class="wpbot-str-btn" name="qc-re-index" id="re-index" value="1"><?php esc_html_e( 'Re-index', 'chatbot' ); ?></button>
212 + </form>
213 +
214 + <button type="button" class="wpbot-str-expand" aria-expanded="false">
215 + <span class="wpbot-str-expand-label"><?php esc_html_e( 'Expand for More Options', 'chatbot' ); ?></span>
216 + <span class="wpbot-str-expand-icon" aria-hidden="true">+</span>
217 + </button>
218 + </div>
219 +
220 + <div class="wpbot-str-card wpbot-str-list-card">
221 + <div class="wpbot-str-list-head">
222 + <div>
223 + <h2><?php esc_html_e( 'Responses', 'chatbot' ); ?></h2>
224 + <p><?php esc_html_e( 'Questions, keywords, and the replies your chatbot can send.', 'chatbot' ); ?></p>
225 + </div>
226 + <a href="<?php echo esc_url( add_query_arg( 'action', 'edit', admin_url( 'admin.php?page=simple-text-response' ) ) ); ?>" class="wpbot-str-btn wpbot-str-btn-primary"><?php esc_html_e( 'Add New', 'chatbot' ); ?></a>
227 + </div>
228 + <form method="post">
229 + <?php
230 + $this->response_list->prepare_items();
231 + $this->response_list->display();
232 + ?>
233 + </form>
234 + </div>
235 +</div>
236 +</div>
237 + <?php endif; ?>
238 +
239 + <style>
240 +/* Scoped to Simple Text Responses. Tokens match the WPBot admin UI. */
241 +.wpbot-str-page {
242 + --woobot-primary: #5B4E96;
243 + --woobot-primary-color: #5B4E96;
244 + --woobot-primary-dark: #463a7a;
245 + --woobot-primary-soft: #f3f1fa;
246 + --woobot-primary-border: #e4e0f2;
247 + --woobot-surface: #ffffff;
248 + --woobot-page-bg: #F5F7FD;
249 + --woobot-text: #2d2a3a;
250 + --woobot-muted: #6b6680;
251 + --woobot-danger: #e25563;
252 + --woobot-nav-muted: #988FBD;
253 + --woobot-primary-rgb: 91, 78, 150;
254 + display: block;
255 + width: calc(100% - 20px);
256 + max-width: calc(100% - 20px);
257 + margin: 20px 20px 36px 0;
258 + box-sizing: border-box;
259 + font-family: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
260 + color: var(--woobot-text);
261 + font-size: 14px;
262 +}
263 +
264 +body.wpbot-panel_page_simple-text-response,
265 +body.chatbot-wpbot-lite_page_simple-text-response,
266 +body:has(.wpbot-str-page) {
267 + background-color: #F5F7FD;
268 +}
269 +
270 +body:has(.wpbot-str-page) .notice.qcbot-feedback,
271 +body:has(.wpbot-str-page) .notice.qcbot-str-top-notic {
272 + width: calc(100% - 20px) !important;
273 + max-width: calc(100% - 20px) !important;
274 + margin-left: 0 !important;
275 + margin-right: 20px !important;
276 + box-sizing: border-box;
277 + float: none;
278 +}
279 +
280 +.wpbot-str-page .qcld-wp-chatbot-wrap-header {
281 + display: flex;
282 + align-items: center;
283 + justify-content: space-between;
284 + align-self: stretch;
285 + float: none;
286 + gap: 16px;
287 + width: 100%;
288 + max-width: 100%;
289 + margin: 0 0 16px;
290 + padding: 12px 18px;
291 + background: #fff;
292 + border: 1px solid var(--woobot-primary-border);
293 + border-radius: 16px;
294 + box-sizing: border-box;
295 +}
296 +
297 +.wpbot-str-page .qcld-wp-chatbot-wrap-header-logo {
298 + display: flex;
299 + align-items: center;
300 + gap: 14px;
301 + min-width: 0;
302 +}
303 +
304 +.wpbot-str-page .qcld-wp-chatbot-wrap-header img {
305 + width: 50px;
306 + height: 50px;
307 + max-width: 50px;
308 + flex: 0 0 50px;
309 + object-fit: contain;
310 +}
311 +
312 +.wpbot-str-page a.qcld-wp-chatbot-wrap-site__logo {
313 + display: flex;
314 + align-items: center;
315 + gap: 12px;
316 + margin: 0;
317 + padding: 0;
318 + color: #000;
319 + font-size: 22px;
320 + font-weight: 700;
321 + line-height: 1.2;
322 + text-decoration: none;
323 +}
324 +
325 +.wpbot-str-page .qcld-wp-chatbot-wrap-header p,
326 +.wpbot-str-page .qcld-wp-chatbot-wrap-header ul,
327 +.wpbot-str-page .qcld-wp-chatbot-wrap-header li {
328 + margin: 0;
329 + padding: 0;
330 + list-style: none;
331 +}
332 +
333 +.wpbot-str-page .qcld-wp-chatbot-wrap-header p {
334 + color: var(--woobot-text);
335 + font-size: 14px;
336 + white-space: nowrap;
337 +}
338 +
339 +.wpbot-str-page .qcld-wp-chatbot-wrap-version-wrapper {
340 + margin: 0;
341 + padding: 0;
342 + list-style: none;
343 +}
344 +
345 +.wpbot-str-page .qcld-wp-chatbot-wrap-header a.wpchatbot-Upgrade {
346 + display: inline-block;
347 + padding: 12px 25px;
348 + background: #fff;
349 + color: var(--woobot-primary);
350 + border: 2px solid var(--woobot-primary);
351 + border-radius: 6px;
352 + font-size: 14px;
353 + font-weight: 700;
354 + line-height: 1.2;
355 + text-decoration: none;
356 + white-space: nowrap;
357 +}
358 +
359 +.wpbot-str-page .qcld-wp-chatbot-wrap-header a.wpchatbot-Upgrade:hover,
360 +.wpbot-str-page .qcld-wp-chatbot-wrap-header a.wpchatbot-Upgrade:focus {
361 + background: var(--woobot-primary);
362 + border-color: var(--woobot-primary);
363 + color: #fff;
364 + text-decoration: none;
365 +}
366 +
367 +.wpbot-str-main {
368 + display: block;
369 + width: 100%;
370 + max-width: 100%;
371 + margin: 0;
372 + box-sizing: border-box;
373 +}
374 +
375 +.wpbot-str-hero,
376 +.wpbot-str-card {
377 + background: #fff;
378 + border: 1px solid var(--woobot-primary-border);
379 + border-radius: 16px;
380 + padding: 20px 22px;
381 + margin: 0 0 16px;
382 + box-sizing: border-box;
383 +}
384 +
385 +.wpbot-str-hero,
386 +.wpbot-str-list-head,
387 +.wpbot-str-card-head,
388 +.wpbot-str-hero-actions,
389 +.wpbot-str-form-actions,
390 +.wpbot-str-reindex {
391 + display: flex;
392 + align-items: flex-start;
393 + justify-content: space-between;
394 + gap: 16px;
395 +}
396 +
397 +.wpbot-str-hero-actions,
398 +.wpbot-str-form-actions {
399 + flex-wrap: wrap;
400 + justify-content: flex-start;
401 +}
402 +
403 +.wpbot-str-card-head {
404 + margin-bottom: 4px;
405 +}
406 +
407 +.wpbot-str-list-head {
408 + align-items: center;
409 + margin-bottom: 14px;
410 + padding-bottom: 14px;
411 + border-bottom: 1px solid var(--woobot-primary-border);
412 +}
413 +
414 +.wpbot-str-hero h1,
415 +.wpbot-str-card h2 {
416 + margin: 0 0 6px;
417 + padding: 0;
418 + border: 0;
419 + color: var(--woobot-primary);
420 + font-weight: 700;
421 + line-height: 1.3;
422 +}
423 +
424 +.wpbot-str-hero h1 {
425 + font-size: 24px;
426 +}
427 +
428 +.wpbot-str-card h2 {
429 + font-size: 18px;
430 +}
431 +
432 +.wpbot-str-hero p,
433 +.wpbot-str-card-head p,
434 +.wpbot-str-list-head p {
435 + margin: 0;
436 + max-width: 720px;
437 + color: var(--woobot-muted);
438 + font-size: 14px;
439 + line-height: 1.55;
440 +}
441 +
442 +.wpbot-str-note {
443 + display: inline-flex;
444 + margin-top: 12px;
445 + padding: 6px 12px;
446 + border-radius: 999px;
447 + background: var(--woobot-primary-soft);
448 + border: 1px solid var(--woobot-primary-border);
449 + color: var(--woobot-primary);
450 + font-size: 12px;
451 + font-weight: 600;
452 +}
453 +
454 +.wpbot-str-callout {
455 + margin: 0 0 4px;
456 + padding: 12px 14px;
457 + background: var(--woobot-primary-soft);
458 + border: 1px solid var(--woobot-primary-border);
459 + border-radius: 10px;
460 +}
461 +
462 +.wpbot-str-callout p {
463 + margin: 0;
464 + color: var(--woobot-text);
465 + font-size: 13px;
466 +}
467 +
468 +.wpbot-str-field {
469 + display: grid;
470 + grid-template-columns: 220px minmax(0, 1fr);
471 + gap: 8px 24px;
472 + align-items: start;
473 + padding: 16px 0;
474 + border-bottom: 1px solid #eef0f6;
475 +}
476 +
477 +.wpbot-str-label {
478 + padding-top: 10px;
479 + color: var(--woobot-text);
480 + font-size: 14px;
481 + font-weight: 600;
482 +}
483 +
484 +.wpbot-str-hint {
485 + margin: 6px 0 0;
486 + color: var(--woobot-muted);
487 + font-size: 12px;
488 + font-style: italic;
489 + font-weight: 400;
490 +}
491 +
492 +.wpbot-str-page .wpbot-str-input {
493 + width: 100%;
494 + max-width: 100%;
495 + min-height: 40px;
496 + margin: 0;
497 + padding: 8px 12px;
498 + border: 1px solid var(--woobot-primary-border);
499 + border-radius: 8px;
500 + background: #fff;
501 + color: var(--woobot-text);
502 + box-shadow: none;
503 +}
504 +
505 +.wpbot-str-page .wpbot-str-input-short {
506 + max-width: 160px;
507 +}
508 +
509 +.wpbot-str-page .wpbot-str-input:focus {
510 + border-color: var(--woobot-primary);
511 + box-shadow: 0 0 0 3px rgba(var(--woobot-primary-rgb), 0.15);
512 + outline: none;
513 +}
514 +
515 +.wpbot-str-checks {
516 + display: flex;
517 + flex-wrap: wrap;
518 + gap: 8px;
519 +}
520 +
521 +.wpbot-str-checks label {
522 + display: inline-flex;
523 + align-items: center;
524 + gap: 8px;
525 + margin: 0;
526 + padding: 8px 12px;
527 + border: 1px solid var(--woobot-primary-border);
528 + border-radius: 10px;
529 + background: var(--woobot-primary-soft);
530 + color: var(--woobot-text);
531 + font-size: 13px;
532 + font-weight: 500;
533 +}
534 +
535 +.wpbot-str-page input[type="checkbox"] {
536 + accent-color: var(--woobot-primary);
537 +}
538 +
539 +.wpbot-str-form-actions {
540 + padding-top: 16px;
541 +}
542 +
543 +.wpbot-str-reindex {
544 + align-items: center;
545 + margin-top: 8px;
546 + padding-top: 16px;
547 + border-top: 1px solid var(--woobot-primary-border);
548 +}
549 +
550 +.wpbot-str-reindex-copy strong {
551 + display: block;
552 + color: var(--woobot-text);
553 + font-size: 14px;
554 +}
555 +
556 +.wpbot-str-page .wpbot-str-btn {
557 + display: inline-flex;
558 + align-items: center;
559 + justify-content: center;
560 + gap: 6px;
561 + margin: 0;
562 + padding: 0 16px;
563 + height: auto;
564 + min-height: 36px;
565 + border: 2px solid var(--woobot-primary);
566 + border-radius: 8px;
567 + background: #fff;
568 + color: var(--woobot-primary);
569 + font-family: inherit;
570 + font-size: 13px;
571 + font-weight: 600;
572 + line-height: 1.2;
573 + text-decoration: none;
574 + cursor: pointer;
575 + box-shadow: none;
576 +}
577 +
578 +.wpbot-str-page .wpbot-str-btn:hover,
579 +.wpbot-str-page .wpbot-str-btn:focus {
580 + background: var(--woobot-primary);
581 + border-color: var(--woobot-primary);
582 + color: #fff;
583 + box-shadow: none;
584 + outline: none;
585 +}
586 +
587 +.wpbot-str-page .wpbot-str-btn-primary {
588 + background: var(--woobot-primary);
589 + color: #fff;
590 +}
591 +
592 +.wpbot-str-page .wpbot-str-btn-primary:hover,
593 +.wpbot-str-page .wpbot-str-btn-primary:focus {
594 + background: var(--woobot-primary-dark);
595 + border-color: var(--woobot-primary-dark);
596 + color: #fff;
597 +}
598 +
599 +.wpbot-str-page .wpbot-str-extra[hidden] {
600 + display: none !important;
601 +}
602 +
603 +.wpbot-str-page .wpbot-str-expand {
604 + display: flex;
605 + align-items: center;
606 + justify-content: center;
607 + gap: 8px;
608 + width: 100%;
609 + margin-top: 16px;
610 + padding: 10px 14px;
611 + border: 2px solid var(--woobot-primary);
612 + border-radius: 8px;
613 + background: #fff;
614 + color: var(--woobot-primary);
615 + font-family: inherit;
616 + font-size: 13px;
617 + font-weight: 600;
618 + line-height: 1.2;
619 + cursor: pointer;
620 + box-shadow: none;
621 + box-sizing: border-box;
622 + /* max-width: 220px; */
623 + margin: 20px auto 0 auto;
624 + color: #ffffff;
625 + position: relative;
626 + padding: 40px 0 0 0;
627 + height: 80px;
628 + text-align: center;
629 + background: #f1f1f1;
630 + cursor: pointer;
631 + background: linear-gradient(to bottom, rgb(255 255 255 / 53%) 0%, rgb(84 68 157) 100%);
632 + margin: -77px 0 0 0;
633 + border-radius: 0 0 15px 15px;
634 + z-index: 99999;
635 + font-weight: bold;
636 + border: none;
637 +}
638 +
639 +.wpbot-str-page .wpbot-str-expand:hover,
640 +.wpbot-str-page .wpbot-str-expand:focus {
641 + background: linear-gradient(to bottom, rgb(255 255 255 / 53%) 0%, rgb(84 68 157) 100%);
642 + color: #fff;
643 + outline: none;
644 +}
645 +
646 +.wpbot-str-page .wpbot-str-expand[aria-expanded="true"] {
647 + margin: 0 0 0 0;
648 +}
649 +
650 +
651 +.wpbot-str-page .wpbot-str-expand-icon {
652 + font-size: 16px;
653 + line-height: 1;
654 +}
655 +
656 +.wpbot-str-page .wp-editor-wrap {
657 + border: 1px solid var(--woobot-primary-border);
658 + border-radius: 10px;
659 +}
660 +
661 +.wpbot-str-page .tablenav {
662 + height: auto;
663 + margin: 0 0 12px;
664 + padding: 0;
665 + background: transparent;
666 +}
667 +
668 +.wpbot-str-page .tablenav.bottom {
669 + margin: 12px 0 0;
670 +}
671 +
672 +.wpbot-str-page .tablenav .actions select,
673 +.wpbot-str-page .tablenav .tablenav-pages .current-page {
674 + min-height: 36px;
675 + border: 1px solid var(--woobot-primary-border);
676 + border-radius: 8px;
677 + box-shadow: none;
678 +}
679 +
680 +.wpbot-str-page .tablenav .button,
681 +.wpbot-str-page .tablenav .tablenav-pages a,
682 +.wpbot-str-page .tablenav .tablenav-pages span.button {
683 + min-height: 32px;
684 + border: 1px solid var(--woobot-primary-border);
685 + border-radius: 8px;
686 + background: #fff;
687 + color: var(--woobot-primary);
688 + font-weight: 600;
689 + box-shadow: none;
690 +}
691 +
692 +.wpbot-str-page .tablenav .button:hover,
693 +.wpbot-str-page .tablenav .tablenav-pages a:hover {
694 + border-color: var(--woobot-primary);
695 + background: var(--woobot-primary);
696 + color: #fff;
697 +}
698 +
699 +.wpbot-str-page .displaying-num {
700 + color: var(--woobot-muted);
701 + font-size: 13px;
702 +}
703 +
704 +.wpbot-str-page .wp-list-table {
705 + border: 1px solid var(--woobot-primary-border);
706 + border-radius: 12px;
707 + border-collapse: separate;
708 + border-spacing: 0;
709 + background: #fff;
710 + overflow: hidden;
711 +}
712 +
713 +.wpbot-str-page .wp-list-table thead th,
714 +.wpbot-str-page .wp-list-table thead td,
715 +.wpbot-str-page .wp-list-table tfoot th,
716 +.wpbot-str-page .wp-list-table tfoot td {
717 + padding: 12px 10px;
718 + border: none;
719 + background: var(--woobot-primary);
720 + color: #fff;
721 + font-weight: 600;
722 +}
723 +
724 +.wpbot-str-page .wp-list-table thead a,
725 +.wpbot-str-page .wp-list-table tfoot a {
726 + color: #fff;
727 +}
728 +
729 +.wpbot-str-page .wp-list-table thead .sorting-indicator:before,
730 +.wpbot-str-page .wp-list-table thead th.sorted.asc .sorting-indicator.asc:before,
731 +.wpbot-str-page .wp-list-table thead th.sorted.desc .sorting-indicator.desc:before,
732 +.wpbot-str-page .wp-list-table thead th.sorted:hover .sorting-indicator:before,
733 +.wpbot-str-page .wp-list-table thead th.sorted a:hover .sorting-indicator:before {
734 + color: #fff;
735 +}
736 +
737 +.wpbot-str-page .wp-list-table tfoot {
738 + display: none;
739 +}
740 +
741 +.wpbot-str-page .wp-list-table.striped > tbody > tr,
742 +.wpbot-str-page .wp-list-table.striped > tbody > :nth-child(odd),
743 +.wpbot-str-page .wp-list-table.striped > tbody > :nth-child(even) {
744 + background: #fff;
745 +}
746 +
747 +.wpbot-str-page .wp-list-table tbody tr:hover {
748 + background: var(--woobot-primary-soft);
749 +}
750 +
751 +.wpbot-str-page .wp-list-table td {
752 + padding: 12px 10px;
753 + border-bottom: 1px solid #eef0f6;
754 + color: var(--woobot-text);
755 + vertical-align: middle;
756 +}
757 +
758 +.wpbot-str-page .wp-list-table tr:last-child td {
759 + border-bottom: none;
760 +}
761 +
762 +.wpbot-str-page .wp-list-table .row-actions {
763 + position: static;
764 + left: auto;
765 + padding-top: 4px;
766 + visibility: visible;
767 +}
768 +
769 +.wpbot-str-page .wp-list-table .row-actions a {
770 + color: var(--woobot-primary);
771 + font-weight: 600;
772 +}
773 +
774 +.wpbot-str-page .wp-list-table .row-actions .delete a {
775 + color: var(--woobot-danger);
776 +}
777 +
778 +.wpbot-str-page .no-items td {
779 + padding: 28px 16px;
780 + color: var(--woobot-muted);
781 + text-align: center;
782 +}
783 +
784 +form.wpbot-str-reindex.wpbot-str-extra {
785 + display: flex;
786 + flex-direction: column;
787 + align-content: flex-start;
788 + align-items: flex-start;
789 +}
790 +
791 +@media (max-width: 782px) {
792 + .wpbot-str-page .qcld-wp-chatbot-wrap-header,
793 + .wpbot-str-page .qcld-wp-chatbot-wrap-header-logo,
794 + .wpbot-str-hero,
795 + .wpbot-str-list-head,
796 + .wpbot-str-reindex,
797 + .wpbot-str-form-actions {
798 + flex-direction: column;
799 + align-items: flex-start;
800 + }
801 +
802 + .wpbot-str-field {
803 + grid-template-columns: 1fr;
804 + gap: 6px;
805 + }
806 +
807 + .wpbot-str-label {
808 + padding-top: 0;
809 + }
810 +
811 + .wpbot-str-page .wpbot-str-input-short {
812 + max-width: 100%;
813 + }
814 +}
815 + </style>
816 +<script>
817 +jQuery(function ($) {
818 + $(document).on('click', '.wpbot-str-page .wpbot-str-expand', function () {
819 + var $button = $(this);
820 + var $card = $button.closest('.wpbot-str-card');
821 + var isOpen = $button.attr('aria-expanded') === 'true';
822 +
823 + if (isOpen) {
824 + $card.find('.wpbot-str-extra').attr('hidden', 'hidden');
825 + $button.attr('aria-expanded', 'false');
826 + $button.find('.wpbot-str-expand-label').text('<?php echo esc_js( __( 'Expand for More Options', 'chatbot' ) ); ?>');
827 + $button.find('.wpbot-str-expand-icon').text('+');
828 + } else {
829 + $card.find('.wpbot-str-extra').removeAttr('hidden');
830 + $button.attr('aria-expanded', 'true');
831 + $button.find('.wpbot-str-expand-label').text('<?php echo esc_js( __( 'Collapse Options', 'chatbot' ) ); ?>');
832 + $button.find('.wpbot-str-expand-icon').text('\u2212');
833 + }
834 + });
835 +});
836 +</script>