PluginProbe
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services / 8.7.5
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services v8.7.5
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 8.5.8 8.5.7 8.5.6 8.5.5 8.5.4 8.5.3 8.5.2 All 533 releases
chatbot / js / qcld-wp-chatbot-admin.js

qcld-wp-chatbot-admin.js in WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services 8.7.5, at js/qcld-wp-chatbot-admin.js

2,416 lines 131.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 jQuery(function ($) {
2
3 $(document).ready(function () {
4 var wpChatbotTabSections = {
5 started: '#section-flip-1',
6 general: '#section-flip-2',
7 themes: '#section-flip-3',
8 social: '#section-flip-51',
9 language: '#section-flip-5',
10 support: '#section-flip-4',
11 startmenu: '#section-flip-6',
12 ai: '#section-flip-7',
13 rpl: '#section-flip-9',
14 custom_css: '#section-flip-13'
15 };
16
17 function wpChatbotShowTabSection(tabData, fallbackIndex, sectionSelector) {
18 $(".content-wrap section").removeClass('content-current');
19
20 if (sectionSelector) {
21 $(sectionSelector).addClass('content-current');
22 return;
23 }
24
25 if (wpChatbotTabSections[tabData]) {
26 $(wpChatbotTabSections[tabData]).addClass('content-current');
27 return;
28 }
29
30 $(".content-wrap section").eq(fallbackIndex).addClass('content-current');
31 }
32
33 var sbdstoredNoticeId = localStorage.getItem('qcld_wpbot_Notice_set');
34 var qcld_chatbot_Notice_time_set = localStorage.getItem('qcld_wpbot_Notice_time_set');
35 var notice_current_time = Math.round(new Date().getTime() / 1000);
36 if ('promotion-wpchatbot' == sbdstoredNoticeId && qcld_chatbot_Notice_time_set > notice_current_time ) {
37 $('#promotion-wpchatbot').css({'display': 'none'});
38 }
39 $(document).on('click', '#promotion-wpchatbot .notice-dismiss', function(e){
40 var currentDom = $(this);
41 var currentWrap = currentDom.closest('.notice');
42 currentWrap.css({'display': 'none'});
43 localStorage.setItem('qcld_wpbot_Notice_set', 'promotion-wpchatbot');
44 var ts = Math.round(new Date().getTime() / 1000);
45 var tsYesterday = ts + (24 * 3600);
46 localStorage.setItem('qcld_wpbot_Notice_time_set', tsYesterday);
47 });
48
49
50 [].slice.call(document.querySelectorAll('.wp-chatbot-tabs')).forEach(function (el) {
51
52 new CBPFWTabs(el);
53
54 });
55
56 if(localStorage.getItem('tabData')){
57
58 $(".wp-chatbot-tabs nav ul li").each(function (index, elm) {
59
60 if(localStorage.getItem('tabData')==$(this).attr('tab-data')){
61
62 $(this).addClass('tab-current');
63
64 wpChatbotShowTabSection($(this).attr('tab-data'), index, $(this).attr('data-section'));
65
66 }else{
67
68 $(this).removeClass('tab-current');
69
70 }
71
72 })
73
74 /*$(".content-wrap section").each(function (el) {
75
76
77
78 });*/
79
80 }
81
82 $(".wp-chatbot-tabs nav ul li a ").on('click',function () {
83
84 // Remove others tab and contents
85
86 $(".wp-chatbot-tabs nav ul li").removeClass('tab-current');
87
88 // add current tab and contents
89
90 $(this).parent().addClass('tab-current');
91
92 wpChatbotShowTabSection($(this).parent().attr('tab-data'), $(".wp-chatbot-tabs nav ul li a ").index(this), $(this).parent().attr('data-section'));
93
94 //Change action url , set add localStorge and url change.
95
96 $('#wp-chatbot-admin-form').attr('action',$(this).attr('href'));
97
98 localStorage.setItem('tabData',$(this).parent().attr('tab-data'));
99
100 window.history.pushState("changeUrl", "wpwBot", $(this).attr('href'));
101
102
103
104 });
105 $('.wp-chatbot-hours input').timepicker({ 'timeFormat': 'H:i' });
106 //Drag and drop support builders
107 $('#wp-chatbot-support-builder').sortable({
108 cursor: 'move',
109 revert: true,
110 start: function (e, ui) {
111 $(ui.item).find('textarea').each(function () {
112 tinymce.execCommand('mceRemoveEditor', false, $(this).attr('id'));
113 });
114 },
115 stop: function (e, ui) {
116 $(ui.item).find('textarea').each(function () {
117 tinymce.execCommand('mceAddEditor', true, $(this).attr('id'));
118 });
119 }
120 });
121 $("#wp-chatbot-support-builder" ).disableSelection();
122
123 $('#wp_chatbot_floatingiconbg_color').wpColorPicker();
124 if( (document.getElementById('skip_wp_greetings') != null)){
125
126 if (document.getElementById('ask_email_wp_greetings') != null) {
127 if (document.getElementById('skip_wp_greetings').checked || document.getElementById('skip_wp_greetings_donot_show_menu').checked) {
128 document.getElementById("ask_email_wp_greetings").checked = false;
129 document.getElementById("ask_email_wp_greetings").disabled = true;
130 }
131 }
132 if (document.getElementById('enable_asking_for_email') != null) {
133 if (document.getElementById('skip_wp_greetings').checked || document.getElementById('skip_wp_greetings_donot_show_menu').checked) {
134 document.getElementById("enable_asking_for_email").checked = false;
135 document.getElementById("enable_asking_for_email").disabled = true;
136 }
137 }
138
139 document.getElementById('skip_wp_greetings').addEventListener('change', (event) => {
140 if (event.currentTarget.checked) {
141 document.getElementById("skip_wp_greetings_donot_show_menu").checked = false;
142 document.getElementById("show_menu_after_greetings").checked = false;
143 var intetns = document.getElementsByClassName("qc_wp_intent_select");
144 Array.prototype.map.call(intetns, (x) => x.style = "display:none" )
145 if (document.getElementById("ask_email_wp_greetings") != null) {
146 document.getElementById("ask_email_wp_greetings").checked = false;
147 document.getElementById("ask_email_wp_greetings").disabled = true;
148 }
149 if (document.getElementById("enable_asking_for_email") != null) {
150 document.getElementById("enable_asking_for_email").checked = false;
151 document.getElementById("enable_asking_for_email").disabled = true;
152 }
153 } else {
154 if (document.getElementById("ask_email_wp_greetings") != null && !document.getElementById("skip_wp_greetings_donot_show_menu").checked) {
155 document.getElementById("ask_email_wp_greetings").disabled = false;
156 }
157 if (document.getElementById("enable_asking_for_email") != null && !document.getElementById("skip_wp_greetings_donot_show_menu").checked) {
158 document.getElementById("enable_asking_for_email").disabled = false;
159 }
160 }
161 })
162 document.getElementById('skip_wp_greetings_donot_show_menu').addEventListener('change', (event) => {
163 if (event.currentTarget.checked) {
164 document.getElementById("skip_wp_greetings").checked = false;
165 document.getElementById("show_menu_after_greetings").checked = false;
166 var intetns = document.getElementsByClassName("qc_wp_intent_select");
167 Array.prototype.map.call(intetns, (x) => x.style = "display:none" )
168 if (document.getElementById("ask_email_wp_greetings") != null) {
169 document.getElementById("ask_email_wp_greetings").checked = false;
170 document.getElementById("ask_email_wp_greetings").disabled = true;
171 }
172 if (document.getElementById("enable_asking_for_email") != null) {
173 document.getElementById("enable_asking_for_email").checked = false;
174 document.getElementById("enable_asking_for_email").disabled = true;
175 }
176 } else {
177 if (document.getElementById("ask_email_wp_greetings") != null && !document.getElementById("skip_wp_greetings").checked) {
178 document.getElementById("ask_email_wp_greetings").disabled = false;
179 }
180 if (document.getElementById("enable_asking_for_email") != null && !document.getElementById("skip_wp_greetings").checked) {
181 document.getElementById("enable_asking_for_email").disabled = false;
182 }
183 }
184 })
185 document.getElementById('show_menu_after_greetings').addEventListener('change', (event) => {
186 if (event.currentTarget.checked) {
187 document.getElementById("skip_wp_greetings").checked = false;
188 var intetns = document.getElementsByClassName("qc_wp_intent_select");
189 Array.prototype.map.call(intetns, (x) => x.style = "display:none" )
190 document.getElementById("skip_wp_greetings_donot_show_menu").checked = false;
191 if (document.getElementById("ask_email_wp_greetings") != null && !document.getElementById("skip_wp_greetings").checked && !document.getElementById("skip_wp_greetings_donot_show_menu").checked) {
192 document.getElementById("ask_email_wp_greetings").disabled = false;
193 }
194 if (document.getElementById("enable_asking_for_email") != null && !document.getElementById("skip_wp_greetings").checked && !document.getElementById("skip_wp_greetings_donot_show_menu").checked) {
195 document.getElementById("enable_asking_for_email").disabled = false;
196 }
197 }
198 })
199
200 }
201 $('#disable_wp_chatbot_site_search').on('change', function() {
202
203 if($(this).is(':checked')) {
204 $('#enable_wp_chatbot_post_content').prop('checked', false);
205 }
206 });
207 jQuery("#qcld-show-more-wrapper-box").on('click','.qcld-show-more-show-more', function () {
208 if(jQuery(".qcld-show-more-text").hasClass("qcld-show-more-show-more-height")) {
209 jQuery(this).html('<div class="Collapsemore">Collapse Options</div>');
210 } else {
211 jQuery(this).html('<div class="Expandmore">Expand for More Options<span>+</span></div>');
212 }
213
214 jQuery(".qcld-show-more-text").toggleClass("qcld-show-more-show-more-height");
215 });
216 });
217
218 /*
219
220 Support building from admin panel.
221
222 */
223
224 //Add Support query.
225 var supportBlocks=$("#add-more-support-query").parent().parent().parent().find('textarea').length;
226 $("#add-more-support-query").on('click',function () {
227 console.log('blocks :',supportBlocks);
228 supportBlocks=parseInt(supportBlocks+1)
229 var textarea_id='chatbot-query-builder'+supportBlocks;
230
231 var firsBlock='<div class="row">'+
232
233 '<div class="col-xs-12">'+
234 '<button type="button" class="btn btn-danger btn-sm wp-chatbot-remove-support pull-right"><i class="dashicons dashicons dashicons-remove" aria-hidden="true"></i></button>'+
235
236 '<div class="cxsc-settings-blocks">'+
237
238 '<p class="qc-opt-dcs-font qc-opt-dcs-font-faq">FAQ Query </p>'+
239
240 '<input type="text" class="form-control" name="support_query[]" placeholder="FAQ Query">'+
241
242 '<p class="qc-opt-dcs-font"><br><strong>FAQ answer</strong></p>'+
243
244 '<textarea id="'+textarea_id+'" name="support_ans[]" class="form-control chatbot-query-builder" cols="30" rows="2"></textarea>'+
245
246 '</div>'+
247
248 '</div>'+
249
250 '</div>';
251
252 $(".block-inner").append(firsBlock);
253 setTimeout(function (e) {
254 //quicktags({id : ed_id,buttons:"strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,dfw"});
255 tinyMCE.execCommand('mceAddEditor', false, textarea_id);
256 },500);
257
258 });
259
260 //Remove Support query.
261
262 $(document).on('click','.wp-chatbot-remove-support',function () {
263
264 if(confirm('Are you sure to delete this support query block?')){
265
266 $(this).parent().parent().remove();
267
268 }
269
270 });
271
272
273 //for downloading gc-client
274 $('#qc_wpbot_gc_download').on('click', function(e){
275 e.preventDefault();
276 $.ajax(
277 {
278 type: 'POST', // 'POST' here so that _upload_ progress _also_ makes sense;
279 // Change to 'GET' if you need.
280 url: qcld_gemini_admin_data.ajax_url, data: {
281 'action': 'qcld_wp_chatbot_gc_client_download',
282 'nonce': qcld_gemini_admin_data.ajax_nonce,
283 },
284 beforeSend: function()
285 {
286 $('.qcld_wpbot_download_statuses').append('<p>Downloading...</p>');
287
288 },
289 success: function(data){
290 $('.qcld_wpbot_download_statuses').append('<p>'+data.content+'</p>');
291 if(data.status=='success'){
292
293 $.ajax(
294 {
295 type: 'POST', // 'POST' here so that _upload_ progress _also_ makes sense;
296 // Change to 'GET' if you need.
297 url: qcld_gemini_admin_data.ajax_url, data: {
298 'action': 'qcld_wp_chatbot_gc_client_extract',
299 'nonce': qcld_gemini_admin_data.ajax_nonce
300 },
301 beforeSend: function()
302 {
303 $('.qcld_wpbot_download_statuses').append('<p>Extracting files...</p>');
304
305 },
306 success: function(data){
307 $('.qcld_wpbot_download_statuses').append('<p>'+data.content+'</p>');
308 if(data.status=='success'){
309 $('.qcld_wpbot_download_statuses').append('<p>Done.</p>');
310 }
311
312 }
313 });
314 }
315
316 }
317 });
318
319 })
320
321
322 /*
323
324 Notification building from admin panel.
325
326 */
327
328 //Add Support query.
329 var notification_blocks=$(this).parent().parent().parent().find('.notification-block-inner').length;
330 $("#add-more-notification-message").on('click',function () {
331 notification_blocks=parseInt(notification_blocks+1);
332 var notification_text_area_id='notification_text_area_'+notification_blocks;
333 tinyMCE.triggerSave();
334 var lastChildVal=$(this).parent().parent().parent().find('.notification-block-inner').children('.row').last().find('textarea').val();
335
336 var firsBlock='<div class="row">'+
337
338 '<div class="col-xs-12">'+
339
340 '<button type="button" class="btn btn-danger btn-sm wp-chatbot-remove-notification pull-right"><i class="dashicons dashicons-remove" aria-hidden="true"></i></button><br>'+
341
342 '<div class="cxsc-settings-blocks">'+
343
344 '<textarea id="'+notification_text_area_id+'" name="qlcd_wp_chatbot_notifications[]" placeholder="Notification Message" class="form-control qlcd_wp_chatbot_notifications" cols="30" rows="2"></textarea>'+
345
346 '</div><br>'+
347
348 '</div>'+
349
350 '</div>';
351
352 if(lastChildVal!=""){
353
354 $(".notification-block-inner").append(firsBlock);
355 setTimeout(function (e) {
356 //quicktags({id : ed_id,buttons:"strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,dfw"});
357 tinyMCE.execCommand('mceAddEditor', false, notification_text_area_id);
358 },500);
359
360 } else{
361
362 alert('Please fill up last notification message first');
363
364 }
365 });
366
367 //Remove Support query.
368
369 $(document).on('click','.wp-chatbot-remove-notification',function () {
370
371 if(confirm('Are you sure to delete this support query block?')){
372
373
374
375 var langItems=$(this).parent().parent().parent().children('.row');
376
377 if(langItems.length<=3){
378
379 alert('At least one item is required.');
380
381 }else{
382
383 $(this).parent().parent().remove();
384
385 }
386
387 }
388
389 });
390
391 /*
392
393 Multiple option for Language setting
394
395 */
396
397
398
399 $(document).on('click','.wp-chatbot-lng-item-add',function () {
400
401 //checking last input is not empty
402
403 var lastChildVal=$(this).parent().parent().parent().find('.wp-chatbot-lng-items').children('.row').last().find('input').val();
404
405 if(lastChildVal!=""){
406
407 var child=$(this).parent().parent().parent().find('.wp-chatbot-lng-items').children('.row').last().clone();
408
409 child.find('input').val("");
410
411 } else{
412
413 alert('Please fill up last item first');
414
415 }
416
417 $(this).parent().parent().parent().find('.wp-chatbot-lng-items').append(child);
418
419 });
420
421
422
423 $(document).on('click','.wp-chatbot-lng-item-remove',function () {
424
425 var langItems=$(this).parent().parent().parent().children('.row');
426
427 if(langItems.length<=1){
428
429 alert('At least one item is required.');
430
431 }else{
432
433 $(this).parent().parent().remove();
434
435 }
436
437
438
439 });
440
441 /***
442
443 * wpwBot Theme background
444
445 *
446
447 */
448
449 $(document).on('change','#qcld_wb_chatbot_change_bg',function (e) {
450
451 if($(this).is(':checked')){
452
453 $('.qcld-wp-chatbot-board-bg-container').show();
454
455 }else{
456
457 $('.qcld-wp-chatbot-board-bg-container').hide();
458
459 }
460
461 });
462
463
464
465 //Reset to defualt all options
466
467 $('#qcld-wp-chatbot-reset-option').on('click',function () {
468
469 var returnDefualt = confirm("Are you sure you want to reset all options to Default? Resetting Will Delete All Saved Settings, Custom Messages, Languages etc.");
470
471 if (returnDefualt == true) {
472
473 var data = {
474
475 'action': 'qcld_wb_chatboot_delete_all_options',
476 'wpnonce': qcld_gemini_admin_data.ajax_nonce,
477 };
478
479 jQuery.post(qcld_gemini_admin_data.ajax_url, data, function (response) {
480
481 alert(response);
482
483 window.location.reload();
484
485 });
486
487 }
488
489 });
490
491 var stopWordsList={
492
493 english:"a,able,about,above,abst,accordance,according,accordingly,across,act,actually,added,adj,affected,affecting,affects,after,afterwards,again,against,ah,all,almost,alone,along,already,also,although,always,am,among,amongst,an,and,announce,another,any,anybody,anyhow,anymore,anyone,anything,anyway,anyways,anywhere,apparently,approximately,are,aren,arent,arise,around,as,aside,ask,asking,at,auth,available,away,awfully,b,back,be,became,because,become,becomes,becoming,been,before,beforehand,begin,beginning,beginnings,begins,behind,being,believe,below,beside,besides,between,beyond,biol,both,brief,briefly,but,by,c,ca,came,can,cannot,can't,cause,causes,certain,certainly,co,com,come,comes,contain,containing,contains,could,couldnt,d,date,did,didn't,different,do,does,doesn't,doing,done,don't,down,downwards,due,during,e,each,ed,edu,effect,eg,eight,eighty,either,else,elsewhere,end,ending,enough,especially,et,et-al,etc,even,ever,every,everybody,everyone,everything,everywhere,ex,except,f,far,few,ff,fifth,first,five,fix,followed,following,follows,for,former,formerly,forth,found,four,from,further,furthermore,g,gave,get,gets,getting,give,given,gives,giving,go,goes,gone,got,gotten,h,had,happens,hardly,has,hasn't,have,haven't,having,he,hed,hence,her,here,hereafter,hereby,herein,heres,hereupon,hers,herself,hes,hi,hid,him,himself,his,hither,home,how,howbeit,however,hundred,i,id,ie,if,i'll,im,immediate,immediately,importance,important,in,inc,indeed,index,information,instead,into,invention,inward,is,isn't,it,itd,it'll,its,itself,i've,j,just,k,keep,keeps,kept,kg,km,know,known,knows,l,largely,last,lately,later,latter,latterly,least,less,lest,let,lets,like,liked,likely,line,little,'ll,look,looking,looks,ltd,m,made,mainly,make,makes,many,may,maybe,me,mean,means,meantime,meanwhile,merely,mg,might,million,miss,ml,more,moreover,most,mostly,mr,mrs,much,mug,must,my,myself,n,na,name,namely,nay,nd,near,nearly,necessarily,necessary,need,needs,neither,never,nevertheless,new,next,nine,ninety,no,nobody,non,none,nonetheless,noone,nor,normally,nos,not,noted,nothing,now,nowhere,o,obtain,obtained,obviously,of,off,often,oh,ok,okay,old,omitted,on,once,one,ones,only,onto,or,ord,other,others,otherwise,ought,our,ours,ourselves,out,outside,over,overall,owing,own,p,page,pages,part,particular,particularly,past,per,perhaps,placed,please,plus,poorly,possible,possibly,potentially,pp,predominantly,present,previously,primarily,probably,promptly,proud,provides,put,q,que,quickly,quite,qv,r,ran,rather,rd,re,readily,really,recent,recently,ref,refs,regarding,regardless,regards,related,relatively,research,respectively,resulted,resulting,results,right,run,s,said,same,saw,say,saying,says,sec,section,see,seeing,seem,seemed,seeming,seems,seen,self,selves,sent,seven,several,shall,she,shed,she'll,shes,should,shouldn't,show,showed,shown,showns,shows,significant,significantly,similar,similarly,since,six,slightly,so,some,somebody,somehow,someone,somethan,something,sometime,sometimes,somewhat,somewhere,soon,sorry,specifically,specified,specify,specifying,still,stop,strongly,sub,substantially,successfully,such,sufficiently,suggest,sup,sure,t,take,taken,taking,tell,tends,th,than,thank,thanks,thanx,that,that'll,thats,that've,the,their,theirs,them,themselves,then,thence,there,thereafter,thereby,thered,therefore,therein,there'll,thereof,therere,theres,thereto,thereupon,there've,these,they,theyd,they'll,theyre,they've,think,this,those,thou,though,thoughh,thousand,throug,through,throughout,thru,thus,til,tip,to,together,too,took,toward,towards,tried,tries,truly,try,trying,ts,twice,two,u,un,under,unfortunately,unless,unlike,unlikely,until,unto,up,upon,ups,us,use,used,useful,usefully,usefulness,uses,using,usually,v,value,various,'ve,very,via,viz,vol,vols,vs,w,want,wants,was,wasnt,way,we,wed,welcome,we'll,went,were,werent,we've,what,whatever,what'll,whats,when,whence,whenever,where,whereafter,whereas,whereby,wherein,wheres,whereupon,wherever,whether,which,while,whim,whither,who,whod,whoever,whole,who'll,whom,whomever,whos,whose,why,widely,willing,wish,with,within,without,wont,words,world,would,wouldnt,www,x,y,yes,yet,you,youd,you'll,your,youre,yours,yourself,yourselves,you've,z,zero",
494
495 arabic:"فى,في,كل,ل�
496 ,لن,له,�
497 ن,هو,هي,قوة,ك�
498 ا,لها,�
499 نذ,وقد,ولا,نفسه,لقاء,�
500 قابل,هناك,وقال,وكان,نهاية,وقالت,وكانت,للا�
501
502 ,فيه,كل�
503 ,لكن,وفي,وقف,ول�
504 ,و�
505 ن,وهو,وهي,يو�
506 ,فيها,�
507 نها,�
508 ليار,لوكالة,يكون,ي�
509 كن,�
510 ليون,حيث,اكد,الا,ا�
511 ا,ا�
512 س,السابق,التى,التي,اكثر,ايار,ايضا,ثلاثة,الذاتي,الاخيرة,الثاني,الثانية,الذى,الذي,الان,ا�
513 ا�
514 ,ايا�
515 ,خلال,حوالى,الذين,الاول,الاولى,بين,ذلك,دون,حول,حين,الف,الى,انه,اول,ض�
516 ن,انها,ج�
517 يع,ال�
518 اضي,الوقت,ال�
519 قبل,اليو�
520 ,ـ,ف,و,و6,قد,لا,�
521 ا,�
522 ع,�
523 ساء,هذا,واحد,واضاف,واضافت,فان,قبل,قال,كان,لدى,نحو,هذه,وان,واكد,كانت,واوضح,�
524 ايو,ب,ا,أ,،,عشر,عدد,عدة,عشرة,عد�
525 ,عا�
526 ,عا�
527 ا,عن,عند,عند�
528 ا,على,عليه,عليها,زيارة,سنة,سنوات,ت�
529 ,ضد,بعد,بعض,اعادة,اعلنت,بسبب,حتى,اذا,احد,اثر,برس,باس�
530 ,غدا,شخصا,صباح,اطار,اربعة,اخرى,بان,اجل,غير,بشكل,حاليا,بن,به,ث�
531 ,اف,ان,او,اي,بها,صفر",
532
533 bulgarian:"а,автентичен,аз,ако,ала,бе,без,беше,би,бивш,бивша,бившо,бил,била,били,било,благодаря,близо,бъдат,бъде,бя�
534 а,в,вас,ваш,ваша,вероятно,вече,взема,ви,вие,винаги,внимава,време,все,всеки,всички,всичко,всяка,във,въпреки,вър�
535 у,г,ги,главен,главна,главно,глас,го,година,години,годишен,д,да,дали,два,двама,двамата,две,двете,ден,днес,дни,до,добра,добре,добро,добър,докато,докога,дори,досега,доста,друг,друга,други,е,евтин,едва,един,една,еднаква,еднакви,еднакъв,едно,екип,ето,живот,за,забавям,зад,заедно,заради,засега,заспал,затова,защо,защото,и,из,или,им,има,имат,иска,й,каза,как,каква,какво,както,какъв,като,кога,когато,което,които,кой,който,колко,която,къде,където,към,лесен,лесно,ли,лош,м,май,малко,ме,между,мек,мен,месец,ми,много,мнозина,мога,могат,може,мокър,моля,момента,му,н,на,над,назад,най,направи,напред,например,нас,не,него,нещо,нея,ни,ние,никой,нито,нищо,но,нов,нова,нови,новина,някои,някой,няколко,няма,обаче,около,освен,особено,от,отгоре,отново,още,пак,по,повече,повечето,под,поне,поради,после,почти,прави,пред,преди,през,при,пък,първата,първи,първо,пъти,равен,равна,с,са,сам,само,се,сега,си,син,скоро,след,следващ,сме,смя�
536 ,според,сред,срещу,сте,съм,със,също,т,тази,така,такива,такъв,там,твой,те,тези,ти,т.н.,то,това,тогава,този,той,толкова,точно,три,трябва,тук,тъй,тя,тя�
537 ,у,утре,�
538 аресва,�
539 иляди,ч,часа,че,често,чрез,ще,щом,юмрук,я,як",
540
541 catalan:"a,abans,algun,alguna,algunes,alguns,altre,amb,ambdós,anar,ans,aquell,aquelles,aquells,aquí,bastant,bé,cada,com,consegueixo,conseguim,conseguir,consigueix,consigueixen,consigueixes,dalt,de,des de,dins,el,elles,ells,els,en,ens,entre,era,erem,eren,eres,es,és,éssent,està,estan,estat,estava,estem,esteu,estic,ets,fa,faig,fan,fas,fem,fer,feu,fi,haver,i,inclòs,jo,la,les,llarg,llavors,mentre,meu,mode,molt,molts,nosaltres,o,on,per,per,per que,però,perquè,podem,poden,poder,podeu,potser,primer,puc,quan,quant,qui,sabem,saben,saber,sabeu,sap,saps,sense,ser,seu,seus,si,soc,solament,sols,som,sota,també,te,tene,tenim,tenir,teniu,teu,tinc,tot,últim,un,un,una,unes,uns,ús,va,vaig,van,vosaltres",
542
543 czech:"ačkoli,ahoj,ale,anebo,ano,asi,aspoň,během,bez,beze,blízko,bohužel,brzo,bude,budeme,budeš,budete,budou,budu,byl,byla,byli,bylo,byly,bys,čau,chce,chceme,chceš,chcete,chci,chtějí,chtít,chut',chuti,co,čtrnáct,čtyři,dál,dále,daleko,děkovat,děkujeme,děkuji,den,deset,devatenáct,devět,do,dobrý,docela,dva,dvacet,dvanáct,dvě,hodně,já,jak,jde,je,jeden,jedenáct,jedna,jedno,jednou,jedou,jeho,její,jejich,jemu,jen,jenom,ještě,jestli,jestliže,jí,jich,jím,jimi,jinak,jsem,jsi,jsme,jsou,jste,kam,kde,kdo,kdy,když,ke,kolik,kromě,která,které,kteří,který,kvůli,má,mají,málo,mám,máme,máš,máte,mé,mě,mezi,mí,mít,mně,mnou,moc,mohl,mohou,moje,moji,možná,můj,musí,může,my,na,nad,nade,nám,námi,naproti,nás,náš,naše,naši,ne,ně,nebo,nebyl,nebyla,nebyli,nebyly,něco,nedělá,nedělají,nedělám,neděláme,neděláš,neděláte,nějak,nejsi,někde,někdo,nemají,nemáme,nemáte,neměl,němu,není,nestačí,nevadí,než,nic,nich,ním,nimi,nula,od,ode,on,ona,oni,ono,ony,osm,osmnáct,pak,patnáct,pět,po,pořád,potom,pozdě,před,přes,přese,pro,proč,prosím,prostě,proti,protože,rovně,se,sedm,sedmnáct,šest,šestnáct,skoro,smějí,smí,snad,spolu,sta,sté,sto,ta,tady,tak,takhle,taky,tam,tamhle,tamhleto,tamto,tě,tebe,tebou,ted',tedy,ten,ti,tisíc,tisíce,to,tobě,tohle,toto,třeba,tři,třináct,trošku,tvá,tvé,tvoje,tvůj,ty,určitě,už,vám,vámi,vás,váš,vaše,vaši,ve,večer,vedle,vlastně,všechno,všichni,vůbec,vy,vždy,za,zač,zatímco,ze,že",
544
545 danish:"ad,af,alle,alt,anden,at,blev,blive,bliver,da,de,dem,den,denne,der,deres,det,dette,dig,din,disse,dog,du,efter,eller,en,end,er,et,for,fra,ham,han,hans,har,havde,have,hende,hendes,her,hos,hun,hvad,hvis,hvor,i,ikke,ind,jeg,jer,jo,kunne,man,mange,med,meget,men,mig,min,mine,mit,mod,ned,noget,nogle,nu,når,og,også,om,op,os,over,på,selv,sig,sin,sine,sit,skal,skulle,som,sådan,thi,til,ud,under,var,vi,vil,ville,vor,være,været",
546
547 dutch:"aan,al,alles,als,altijd,andere,ben,bij,daar,dan,dat,de,der,deze,die,dit,doch,doen,door,dus,een,eens,en,er,ge,geen,geweest,haar,had,heb,hebben,heeft,hem,het,hier,hij,hoe,hun,iemand,iets,ik,in,is,ja,je,kan,kon,kunnen,maar,me,meer,men,met,mij,mijn,moet,na,naar,niet,niets,nog,nu,of,om,omdat,onder,ons,ook,op,over,reeds,te,tegen,toch,toen,tot,u,uit,uw,van,veel,voor,want,waren,was,wat,werd,wezen,wie,wil,worden,wordt,zal,ze,zelf,zich,zij,zijn,zo,zonder,zou",
548
549 finnish:"ei,eivät,emme,en,et,ette,että,he,heidän,heidät,heihin,heille,heillä,heiltä,heissä,heistä,heitä,hän,häneen,hänelle,hänellä,häneltä,hänen,hänessä,hänestä,hänet,häntä,itse,ja,johon,joiden,joihin,joiksi,joilla,joille,joilta,joina,joissa,joista,joita,joka,joksi,jolla,jolle,jolta,jona,jonka,jos,jossa,josta,jota,jotka,kanssa,keiden,keihin,keiksi,keille,keillä,keiltä,keinä,keissä,keistä,keitä,keneen,keneksi,kenelle,kenellä,keneltä,kenen,kenenä,kenessä,kenestä,kenet,ketkä,ketkä,ketä,koska,kuin,kuka,kun,me,meidän,meidät,meihin,meille,meillä,meiltä,meissä,meistä,meitä,mihin,miksi,mikä,mille,millä,miltä,minkä,minkä,minua,minulla,minulle,minulta,minun,minussa,minusta,minut,minuun,minä,minä,missä,mistä,mitkä,mitä,mukaan,mutta,ne,niiden,niihin,niiksi,niille,niillä,niiltä,niin,niin,niinä,niissä,niistä,niitä,noiden,noihin,noiksi,noilla,noille,noilta,noin,noina,noissa,noista,noita,nuo,nyt,näiden,näihin,näiksi,näille,näillä,näiltä,näinä,näissä,näistä,näitä,nämä,ole,olemme,olen,olet,olette,oli,olimme,olin,olisi,olisimme,olisin,olisit,olisitte,olisivat,olit,olitte,olivat,olla,olleet,ollut,on,ovat,poikki,se,sekä,sen,siihen,siinä,siitä,siksi,sille,sillä,sillä,siltä,sinua,sinulla,sinulle,sinulta,sinun,sinussa,sinusta,sinut,sinuun,sinä,sinä,sitä,tai,te,teidän,teidät,teihin,teille,teillä,teiltä,teissä,teistä,teitä,tuo,tuohon,tuoksi,tuolla,tuolle,tuolta,tuon,tuona,tuossa,tuosta,tuota,tähän,täksi,tälle,tällä,tältä,tämä,tämän,tänä,tässä,tästä,tätä,vaan,vai,vaikka,yli",
550
551 french:"a,ai,aie,aient,aies,ait,alors,as,au,aucun,aura,aurai,auraient,aurais,aurait,auras,aurez,auriez,aurions,aurons,auront,aussi,autre,aux,avaient,avais,avait,avant,avec,avez,aviez,avions,avoir,avons,ayant,ayez,ayons,bon,car,ce,ceci,cela,ces,cet,cette,ceux,chaque,ci,comme,comment,d,dans,de,dedans,dehors,depuis,des,deux,devoir,devrait,devrez,devriez,devrions,devrons,devront,dois,doit,donc,dos,droite,du,dès,début,dù,elle,elles,en,encore,es,est,et,eu,eue,eues,eurent,eus,eusse,eussent,eusses,eussiez,eussions,eut,eux,eûmes,eût,eûtes,faire,fais,faisez,fait,faites,fois,font,force,furent,fus,fusse,fussent,fusses,fussiez,fussions,fut,fûmes,fût,fûtes,haut,hors,ici,il,ils,j,je,juste,l,la,le,les,leur,leurs,lui,là,m,ma,maintenant,mais,me,mes,moi,moins,mon,mot,même,n,ne,ni,nom,nommé,nommée,nommés,nos,notre,nous,nouveau,nouveaux,on,ont,ou,où,par,parce,parole,pas,personne,personnes,peu,peut,plupart,pour,pourquoi,qu,quand,que,quel,quelle,quelles,quels,qui,sa,sans,se,sera,serai,seraient,serais,serait,seras,serez,seriez,serions,serons,seront,ses,seulement,si,sien,soi,soient,sois,soit,sommes,son,sont,sous,soyez,soyons,suis,sujet,sur,t,ta,tandis,te,tellement,tels,tes,toi,ton,tous,tout,trop,très,tu,un,une,valeur,voient,vois,voit,vont,vos,votre,vous,vu,y,à,ça,étaient,étais,était,étant,état,étiez,étions,été,étés,êtes,être",
552
553 german:"aber,alle,allem,allen,aller,alles,als,also,am,an,ander,andere,anderem,anderen,anderer,anderes,anderm,andern,anders,auch,auf,aus,bei,bin,bis,bist,da,damit,dann,das,dass,dasselbe,dazu,daß,dein,deine,deinem,deinen,deiner,deines,dem,demselben,den,denn,denselben,der,derer,derselbe,derselben,des,desselben,dessen,dich,die,dies,diese,dieselbe,dieselben,diesem,diesen,dieser,dieses,dir,doch,dort,du,durch,ein,eine,einem,einen,einer,eines,einig,einige,einigem,einigen,einiger,einiges,einmal,er,es,etwas,euch,euer,eure,eurem,euren,eurer,eures,für,gegen,gewesen,hab,habe,haben,hat,hatte,hatten,hier,hin,hinter,ich,ihm,ihn,ihnen,ihr,ihre,ihrem,ihren,ihrer,ihres,im,in,indem,ins,ist,jede,jedem,jeden,jeder,jedes,jene,jenem,jenen,jener,jenes,jetzt,kann,kein,keine,keinem,keinen,keiner,keines,können,könnte,machen,man,manche,manchem,manchen,mancher,manches,mein,meine,meinem,meinen,meiner,meines,mich,mir,mit,muss,musste,nach,nicht,nichts,noch,nun,nur,ob,oder,ohne,sehr,sein,seine,seinem,seinen,seiner,seines,selbst,sich,sie,sind,so,solche,solchem,solchen,solcher,solches,soll,sollte,sondern,sonst,um,und,uns,unser,unsere,unserem,unseren,unserer,unseres,unter,viel,vom,von,vor,war,waren,warst,was,weg,weil,weiter,welche,welchem,welchen,welcher,welches,wenn,werde,werden,wie,wieder,will,wir,wird,wirst,wo,wollen,wollte,während,würde,würden,zu,zum,zur,zwar,zwischen,über",
554
555 hindi:"�
556 त,�
557 पना,�
558 पनी,�
559 पने,�
560 भी,�
561 दर,आदि,आप,इत्यादि,इन ,इनका,इन्हीं,इन्हें,इन्हों,इस,इसका,इसकी,इसके,इसमें,इसी,इसे,उन,उनका,उनकी,उनके,उनको,उन्हीं,उन्हें,उन्हों,उस,उसके,उसी,उसे,एक,एवं,एस,ऐसे,और,कई,कर,करता,करते,करना,करने,करें,कहते,कहा,का,काफ़ी,कि,कितना,किन्हें,किन्हों,किया,कि,कि,किसी,किसे,की,कु,कु,के,को,को,कौ,कौनसा,गया,घर,जब,जहाँ,जा,जितना,जि,जिन्हें,जिन्हों,जि,जिसे,जीधर,जैसा,जैसे,जो,तक,तब,तरह,ति,तिन्हें,तिन्हों,ति,तिसे,तो,था,थी,थे,दबारा,दिया,दुसरा,दूसरे,दो,द्वारा,,नके,नहीं,ना,निहायत,नीचे,ने,पर,पहले,पूरा,पे,फि,बनी,बही,बहु,बा,बाला,बिलकु,भी,भीतर,मगर,मानो,मे,में,यदि,यह,यहाँ,यही,या,यि,ये,रखें,रहा,रहे,ऱ्वासा,लि,लिये,लेकि,,वग़ैरह,वर्,वह,वहाँ,वहीं,वाले,वु,वे,सकता,सकते,सबसे,सभी,सा,साबु,सा,सारा,से,सो,सं,ही,हु,हु,हु,है,हैं,हो,होता,होती,होते,होना,होने",
562
563 hungarian:"a,abban,ahhoz,ahogy,ahol,aki,akik,akkor,alatt,amely,amelyek,amelyekben,amelyeket,amelyet,amelynek,ami,amikor,amit,amolyan,amíg,annak,arra,arról,az,azok,azon,azonban,azt,aztán,azután,azzal,azért,be,belül,benne,bár,cikk,cikkek,cikkeket,csak,de,e,ebben,eddig,egy,egyes,egyetlen,egyik,egyre,egyéb,egész,ehhez,ekkor,el,ellen,elsõ,elég,elõ,elõször,elõtt,emilyen,ennek,erre,ez,ezek,ezen,ezt,ezzel,ezért,fel,felé,hanem,hiszen,hogy,hogyan,igen,ill,ill.,illetve,ilyen,ilyenkor,ismét,ison,itt,jobban,jó,jól,kell,kellett,keressünk,keresztül,ki,kívül,között,közül,legalább,legyen,lehet,lehetett,lenne,lenni,lesz,lett,maga,magát,majd,majd,meg,mellett,mely,melyek,mert,mi,mikor,milyen,minden,mindenki,mindent,mindig,mint,mintha,mit,mivel,miért,most,már,más,másik,még,míg,nagy,nagyobb,nagyon,ne,nekem,neki,nem,nincs,néha,néhány,nélkül,olyan,ott,pedig,persze,rá,s,saját,sem,semmi,sok,sokat,sokkal,szemben,szerint,szinte,számára,talán,tehát,teljes,tovább,továbbá,több,ugyanis,utolsó,után,utána,vagy,vagyis,vagyok,valaki,valami,valamint,való,van,vannak,vele,vissza,viszont,volna,volt,voltak,voltam,voltunk,által,általában,át,én,éppen,és,így,õ,õk,õket,össze,úgy,új,újabb,újra",
564
565 indonesian:"ada,adanya,adalah,adapun,agak,agaknya,agar,akan,akankah,akhirnya,aku,akulah,amat,amatlah,anda,andalah,antar,diantaranya,antara,antaranya,diantara,apa,apaan,mengapa,apabila,apakah,apalagi,apatah,atau,ataukah,ataupun,bagai,bagaikan,sebagai,sebagainya,bagaimana,bagaimanapun,sebagaimana,bagaimanakah,bagi,bahkan,bahwa,bahwasanya,sebaliknya,banyak,sebanyak,beberapa,seberapa,begini,beginian,beginikah,beginilah,sebegini,begitu,begitukah,begitulah,begitupun,sebegitu,belum,belumlah,sebelum,sebelumnya,sebenarnya,berapa,berapakah,berapalah,berapapun,betulkah,sebetulnya,biasa,biasanya,bila,bilakah,bisa,bisakah,sebisanya,boleh,bolehkah,bolehlah,buat,bukan,bukankah,bukanlah,bukannya,cuma,percuma,dahulu,dalam,dan,dapat,dari,daripada,dekat,demi,demikian,demikianlah,sedemikian,dengan,depan,di,dia,dialah,dini,diri,dirinya,terdiri,dong,dulu,enggak,enggaknya,entah,entahlah,terhadap,terhadapnya,hal,hampir,hanya,hanyalah,harus,haruslah,harusnya,seharusnya,hendak,hendaklah,hendaknya,hingga,sehingga,ia,ialah,ibarat,ingin,inginkah,inginkan,ini,inikah,inilah,itu,itukah,itulah,jangan,jangankan,janganlah,jika,jikalau,juga,justru,kala,kalau,kalaulah,kalaupun,kalian,kami,kamilah,kamu,kamulah,kan,kapan,kapankah,kapanpun,dikarenakan,karena,karenanya,ke,kecil,kemudian,kenapa,kepada,kepadanya,ketika,seketika,khususnya,kini,kinilah,kiranya,sekiranya,kita,kitalah,kok,lagi,lagian,selagi,lah,lain,lainnya,melainkan,selaku,lalu,melalui,terlalu,lama,lamanya,selama,selama,selamanya,lebih,terlebih,bermacam,macam,semacam,maka,makanya,makin,malah,malahan,mampu,mampukah,mana,manakala,manalagi,masih,masihkah,semasih,masing,mau,maupun,semaunya,memang,mereka,merekalah,meski,meskipun,semula,mungkin,mungkinkah,nah,namun,nanti,nantinya,nyaris,oleh,olehnya,seorang,seseorang,pada,padanya,padahal,paling,sepanjang,pantas,sepantasnya,sepantasnyalah,para,pasti,pastilah,per,pernah,pula,pun,merupakan,rupanya,serupa,saat,saatnya,sesaat,saja,sajalah,saling,bersama,sama,sesama,sambil,sampai,sana,sangat,sangatlah,saya,sayalah,se,sebab,sebabnya,sebuah,tersebut,tersebutlah,sedang,sedangkan,sedikit,sedikitnya,segala,segalanya,segera,sesegera,sejak,sejenak,sekali,sekalian,sekalipun,sesekali,sekaligus,sekarang,sekarang,sekitar,sekitarnya,sela,selain,selalu,seluruh,seluruhnya,semakin,sementara,sempat,semua,semuanya,sendiri,sendirinya,seolah,seperti,sepertinya,sering,seringnya,serta,siapa,siapakah,siapapun,disini,disinilah,sini,sinilah,sesuatu,sesuatunya,suatu,sesudah,sesudahnya,sudah,sudahkah,sudahlah,supaya,tadi,tadinya,tak,tanpa,setelah,telah,tentang,tentu,tentulah,tentunya,tertentu,seterusnya,tapi,tetapi,setiap,tiap,setidaknya,tidak,tidakkah,tidaklah,toh,waduh,wah,wahai,sewaktu,walau,walaupun,wong,yaitu,yakni,yang",
566
567 italian:"a,abbia,abbiamo,abbiano,abbiate,ad,adesso,agl,agli,ai,al,all,alla,alle,allo,allora,altre,altri,altro,anche,ancora,avemmo,avendo,avere,avesse,avessero,avessi,avessimo,aveste,avesti,avete,aveva,avevamo,avevano,avevate,avevi,avevo,avrai,avranno,avrebbe,avrebbero,avrei,avremmo,avremo,avreste,avresti,avrete,avrà,avrò,avuta,avute,avuti,avuto,c,che,chi,ci,coi,col,come,con,contro,cui,da,dagl,dagli,dai,dal,dall,dalla,dalle,dallo,degl,degli,dei,del,dell,della,delle,dello,dentro,di,dov,dove,e,ebbe,ebbero,ebbi,ecco,ed,era,erano,eravamo,eravate,eri,ero,essendo,faccia,facciamo,facciano,facciate,faccio,facemmo,facendo,facesse,facessero,facessi,facessimo,faceste,facesti,faceva,facevamo,facevano,facevate,facevi,facevo,fai,fanno,farai,faranno,fare,farebbe,farebbero,farei,faremmo,faremo,fareste,faresti,farete,farà,farò,fece,fecero,feci,fino,fosse,fossero,fossi,fossimo,foste,fosti,fra,fu,fui,fummo,furono,giù,gli,ha,hai,hanno,ho,i,il,in,io,l,la,le,lei,li,lo,loro,lui,ma,me,mi,mia,mie,miei,mio,ne,negl,negli,nei,nel,nell,nella,nelle,nello,no,noi,non,nostra,nostre,nostri,nostro,o,per,perché,però,più,pochi,poco,qua,quale,quanta,quante,quanti,quanto,quasi,quella,quelle,quelli,quello,questa,queste,questi,questo,qui,quindi,sarai,saranno,sarebbe,sarebbero,sarei,saremmo,saremo,sareste,saresti,sarete,sarà,sarò,se,sei,senza,si,sia,siamo,siano,siate,siete,sono,sopra,sotto,sta,stai,stando,stanno,starai,staranno,stare,starebbe,starebbero,starei,staremmo,staremo,stareste,staresti,starete,starà,starò,stava,stavamo,stavano,stavate,stavi,stavo,stemmo,stesse,stessero,stessi,stessimo,stesso,steste,stesti,stette,stettero,stetti,stia,stiamo,stiano,stiate,sto,su,sua,sue,sugl,sugli,sui,sul,sull,sulla,sulle,sullo,suo,suoi,te,ti,tra,tu,tua,tue,tuo,tuoi,tutti,tutto,un,una,uno,vai,vi,voi,vostra,vostre,vostri,vostro,è",
568
569 norwegian:"alle,at,av,bare,begge,ble,blei,bli,blir,blitt,både,båe,da,de,deg,dei,deim,deira,deires,dem,den,denne,der,dere,deres,det,dette,di,din,disse,ditt,du,dykk,dykkar,då,eg,ein,eit,eitt,eller,elles,en,enn,er,et,ett,etter,for,fordi,fra,før,ha,hadde,han,hans,har,hennar,henne,hennes,her,hjå,ho,hoe,honom,hoss,hossen,hun,hva,hvem,hver,hvilke,hvilken,hvis,hvor,hvordan,hvorfor,i,ikke,ikkje,ingen,ingi,inkje,inn,inni,ja,jeg,kan,kom,korleis,korso,kun,kunne,kva,kvar,kvarhelst,kven,kvi,kvifor,man,mange,me,med,medan,meg,meget,mellom,men,mi,min,mine,mitt,mot,mykje,ned,no,noe,noen,noka,noko,nokon,nokor,nokre,nå,når,og,også,om,opp,oss,over,på,samme,seg,selv,si,sia,sidan,siden,sin,sine,sitt,sjøl,skal,skulle,slik,so,som,somme,somt,så,sånn,til,um,upp,ut,uten,var,vart,varte,ved,vere,verte,vi,vil,ville,vore,vors,vort,være,vært,vår,å",
570
571 persian:"نداشته,شناسی,خواهی�
572 ,آباد,داشتن,نظیر,ه�
573 چون,باره,نکرده,شان,سابق,هفت,دانند,جایی,بی,جز,زیرِ,رویِ,سریِ,تویِ,جلویِ,پیشِ,عقبِ,بالایِ,خارجِ,وسطِ,بیرونِ,سویِ,کنارِ,پاعینِ,نزدِ,نزدیکِ,دنبالِ,حدودِ,برابرِ,طبقِ,�
574 انندِ,ضدِّ,هنگا�
575 ِ,برایِ,�
576 ثلِ,باره,اثرِ,تولِ,علّتِ,س�
577 تِ,عنوانِ,قصدِ,روب,جدا,کی,که,چیست,هست,کجا,کجاست,کَی,چطور,کدا�
578 ,آیا,�
579 گر,چندین,یک,چیزی,دیگر,کسی,بعری,هیچ,چیز,جا,کس,هرگز,یا,تنها,بلکه,خیاه,بله,بلی,آره,آری,�
580 رسی,البتّه,لطفاً,ّه,انکه,وقتیکه,ه�
581 ین,پیش,�
582 دّتی,هنگا�
583 ی,�
584 ان,تان,براساس,شدند,ترین,ا�
585 روز,باشند,ندارد,چون,قابل,گوید,دیگری,ه�
586 ان,خواهند,قبل,آ�
587 ده,اکنون,تحت,طریق,گیری,جای,هنوز,چرا,البته,کنید,سازی,سو�
588 ,کن�
589 ,بلکه,زیر,توانند,ض�
590 ن,فقط,بودن,حق,آید,وقتی,اش,یابد,نخستین,�
591 قابل,خد�
592 ات,ا�
593 سال,تاکنون,�
594 انند,تازه,آورد,فکر,آنچه,نخست,نشده,شاید,چهار,جریان,پنج,ساخته,زیرا,نزدیک,برداری,کسی,ریزی,رفت,گردد,�
595 ثل,آ�
596 د,ا�
597 ,بهترین,دانست,ک�
598 تر,دادن,ت�
599 ا�
600 ی,جلوگیری,بیشتری,ای�
601 ,ناشی,چیزی,آنکه,بالا,بنابراین,ایشان,بعضی,دادند,داشتند,برخوردار,نخواهد,هنگا�
602 ,نباید,غیر,نبود,دیده,وگو,داری�
603 ,چگونه,بندی,خواست,فوق,ده,نوعی,هستی�
604 ,دیگران,ه�
605 چنان,سراسر,ندارند,گروهی,سعی,روزهای,آنجا,یکدیگر,کرد�
606 ,بیست,بروز,سپس,رفته,آورده,ن�
607 اید,باشی�
608 ,گویند,زیاد,خویش,ه�
609 واره,گذاشته,شش,تر,کل,ت�
610 ا�
611 ,بدون,�
612 یلیارد,بودند,طی,بسیاری,گذاری,دهند,گرفت,طور,بار,آنان,گفته,ش�
613 ا,گیرد,�
614 ختلف,بعد,درباره,دو�
615 ,دیروز,نه,برخی,چنین,توسط,ولی,اینکه,حتی,نشان,کنی�
616 ,کردن,شدن,بیش,جدید,چند,هیچ,نا�
617 ,اول,تواند,هایی,گرفته,روی,بسیار,بیشتر,شوند,سوی,�
618 یلیون,ه�
619 ین,دارند,بوده,داده,کردند,ه�
620 چنین,چه,داشت,راه,داشته,داد,استفاده,نیست,هزار,دهد,�
621 ن,بی,هستند,یکی,صورت,ه�
622 ه,اگر,پس,پیش,بین,ن�
623 ی,�
624 رد�
625 ,دیگر,باشد,آنها,�
626 ورد,او,خواهد,هر,اند,دو,باید,ا�
627 ا,یا,کرده,�
628 ا,دارد,کنند,ه�
629 ,وی,نیز,گفت,بود,بر,کند,تا,ای,شد,کرد,ها,خود,شده,شود,یک,آن,برای,های,با,را,است,این,�
630 ی,که,از,به,در,و",
631 polish:"ach,aj,albo,bardzo,bez,bo,być,ci,cię,ciebie,co,czy,daleko,dla,dlaczego,dlatego,do,dobrze,dok�
632 d,dość,dużo,dwa,dwaj,dwie,dwoje,dziś,dzisiaj,gdyby,gdzie,go,ich,ile,im,inny,ja,j�
633 ,jak,jakby,jaki,je,jeden,jedna,jedno,jego,jej,jemu,jeśli,jest,jestem,jeżeli,już,każdy,kiedy,kierunku,kto,ku,lub,ma,maj�
634 ,mam,mi,mn�
635 ,mnie,moi,mój,moja,moje,może,mu,my,na,nam,nami,nas,nasi,nasz,nasza,nasze,natychmiast,ni�
636 ,nic,nich,nie,niego,niej,niemu,nigdy,nim,nimi,niż,obok,od,około,on,ona,one,oni,ono,owszem,po,pod,ponieważ,przed,przedtem,s�
637 ,sam,sama,się,sk�
638 d,tak,taki,tam,ten,to,tob�
639 ,tobie,tu,tutaj,twoi,twój,twoja,twoje,ty,wam,wami,was,wasi,wasz,wasza,wasze,we,więc,wszystko,wtedy,wy,żaden,zawsze,że",
640
641 portuguese:"a,ao,aos,aquela,aquelas,aquele,aqueles,aquilo,as,até,com,como,da,das,de,dela,delas,dele,deles,depois,do,dos,e,ela,elas,ele,eles,em,entre,era,eram,essa,essas,esse,esses,esta,estamos,estas,estava,estavam,este,esteja,estejam,estejamos,estes,esteve,estive,estivemos,estiver,estivera,estiveram,estiverem,estivermos,estivesse,estivessem,estivéramos,estivéssemos,estou,está,estávamos,estão,eu,foi,fomos,for,fora,foram,forem,formos,fosse,fossem,fui,fôramos,fôssemos,haja,hajam,hajamos,havemos,hei,houve,houvemos,houver,houvera,houveram,houverei,houverem,houveremos,houveria,houveriam,houvermos,houverá,houverão,houveríamos,houvesse,houvessem,houvéramos,houvéssemos,há,hão,isso,isto,já,lhe,lhes,mais,mas,me,mesmo,meu,meus,minha,minhas,muito,na,nas,nem,no,nos,nossa,nossas,nosso,nossos,num,numa,não,nós,o,os,ou,para,pela,pelas,pelo,pelos,por,qual,quando,que,quem,se,seja,sejam,sejamos,sem,serei,seremos,seria,seriam,será,serão,seríamos,seu,seus,somos,sou,sua,suas,são,só,também,te,tem,temos,tenha,tenham,tenhamos,tenho,terei,teremos,teria,teriam,terá,terão,teríamos,teu,teus,teve,tinha,tinham,tive,tivemos,tiver,tivera,tiveram,tiverem,tivermos,tivesse,tivessem,tivéramos,tivéssemos,tu,tua,tuas,tém,tínhamos,um,uma,você,vocês,vos,à,às,éramos",
642
643 romanian:"vreo,acelea,cita,degraba,lor,alta,tot,ai,dat,x,despre,peste,bine,dar,foarte,z,avea,multi,cit,alt,mai,sa,fie,tu,multe,e,orice,dintr,se,g,intr,niste,multa,insa,il,fost,a,abia,nimic,sub,acel,in,altceva,si,avem,altfel,c,ea,acest,li,parca,fi,dintre,unele,m,acestei,mare,cel,este,pe,atitia,uneori,acela,iti,astazi,acestui,o,imi,ele,ceilalti,pai,fata,noua,sa-ti,altul,au,i,prin,conform,aceste,anume,azi,k,unul,ala,unei,fara,ei,la,aceeasi,u,inapoi,acestea,acesta,catre,sale,asupra,as,aceea,ba,ale,da,le,apoi,aia,suntem,cum,isi,inainte,s,de,cind,cumva,chiar,acestia,daca,sunt,care,al,numai,cui,sus,tocmai,prea,cu,mi,eu,doar,niciodata,exact,putini,aiurea,tuturor,celor,astfel,atunci,citeva,cat,sau,fel,intre,acolo,nostri,ma,mult,una,ceea,iar,sintem,ati,din,geaba,sai,caruia,adica,inca,are,aici,ca,ia,nici,d,oricum,asta,carora,face,citiva,voi,unor,f,atat,toata,alaturi,cea,nu,totusi,ce,altii,acum,sint,capat,mod,deasupra,cam,vom,b,toate,careia,aceasta,atit,nimeni,ii,ci,unde,ul,plus,era,sa-mi,l,spre,dupa,nou,cele,acea,un,incit,n,cei,or,va,deci,acelasi,atatea,h,vor,decit,noi,cineva,desi,ceva,j,ului,atitea,avut,ar,pina,t,atata,unui,el,citi,asa,totul,pentru,atita,v,alti,asemenea,atatia,te,ne,deja,unii,p,atare,cite,cine,cand,toti,vreun,ori,r,alte,lui,ti,ni,aceia,am",
644
645 russian:"а,в,г,е,ж,и,к,м,о,с,т,у,я,бы,во,вы,да,до,ее,ей,ею,её,же,за,из,им,и�
646 ,ли,мы,на,не,ни,но,ну,н�
647 ,об,он,от,по,со,та,те,то,ту,ты,уж,без,был,вам,вас,ваш,вон,вот,все,всю,вся,всё,где,год,два,две,дел,для,его,ему,еще,ещё,или,ими,имя,как,кем,ком,кто,лет,мне,мог,мож,мои,мой,мор,моя,моё,над,нам,нас,наш,нее,ней,нем,нет,нею,неё,ни�
648 ,оба,она,они,оно,под,пор,при,про,раз,сам,си�
649 ,так,там,тем,те�
650 ,том,тот,тою,три,тут,уже,чем,что,эта,эти,это,эту,алло,буду,будь,бывь,была,были,было,быть,вами,ваша,ваше,ваши,ведь,весь,вниз,всем,все�
651 ,всею,года,году,даже,дву�
652 ,день,если,есть,зато,кого,кому,куда,лишь,люди,мало,меля,меня,мимо,мира,мной,мною,мочь,надо,нами,наша,наше,наши,него,нему,ниже,ними,один,пока,пора,пять,рано,сама,сами,само,саму,свое,свои,свою,себе,себя,семь,стал,суть,твой,твоя,твоё,тебе,тебя,теми,того,тоже,тому,туда,�
653 оть,�
654 отя,чаще,чего,чему,чтоб,чуть,этим,эти�
655 ,этой,этом,этот,более,будем,будет,будто,будут,ввер�
656 ,вдали,вдруг,везде,внизу,время,всего,всеми,всему,всюду,давно,даром,долго,друго,жизнь,занят,затем,зачем,здесь,иметь,какая,какой,когда,кроме,лучше,между,менее,много,могут,может,можно,мож�
657 о,назад,низко,нужно,одной,около,опять,очень,перед,позже,после,потом,почти,пятый,разве,рядом,самим,сами�
658 ,самой,самом,своей,свои�
659 ,сеаой,снова,собой,собою,такая,также,такие,такое,такой,тобой,тобою,тогда,тысяч,уметь,часто,через,чтобы,шесть,этими,этого,этому,близко,больше,будете,будешь,бывает,важная,важное,важные,важный,вокруг,восемь,всегда,второй,далеко,дальше,девять,десять,должно,другая,другие,други�
660 ,другое,другой,занята,занято,заняты,значит,именно,иногда,каждая,каждое,каждые,каждый,кругом,меньше,начала,нельзя,нибудь,никуда,ничего,обычно,однако,одного,отсюда,первый,потому,почему,просто,против,раньше,самими,самого,самому,своего,сейчас,сказал,совсем,теперь,только,третий,�
661 орошо,�
662 отеть,�
663 очешь,четыре,шестой,восьмой,впрочем,времени,говорил,говорит,девятый,десятый,кажется,конечно,которая,которой,которые,который,которы�
664 ,навер�
665 у,наконец,недавно,немного,нередко,никогда,однажды,посреди,сегодня,седьмой,сказала,сказать,сколько,слишком,сначала,спасибо,человек,двадцать,довольно,которого,наиболее,недалеко,особенно,отовсюду,двадцатый,миллионов,несколько,прекрасно,процентов,четвертый,двенадцать,непрерывно,пожалуйста,пятнадцать,семнадцать,тринадцать,двенадцатый,одиннадцать,пятнадцатый,семнадцатый,тринадцатый,шестнадцать,восемнадцать,девятнадцать,одиннадцатый,четырнадцать,шестнадцатый,восемнадцатый,девятнадцатый,действительно,четырнадцатый,многочисленная,многочисленное,многочисленные,многочисленный",
666
667 slovak:"a,aby,aj,ak,ako,ale,alebo,and,ani,áno,asi,až,bez,bude,budem,budeš,budeme,budete,budú,by,bol,bola,boli,bolo,byť,cez,čo,či,ďalší,ďalšia,ďalšie,dnes,do,ho,ešte,for,i,ja,je,jeho,jej,ich,iba,iné,iný,som,si,sme,sú,k,kam,každý,každá,každé,každí,kde,keď,kto,ktorá,ktoré,ktorou,ktorý,ktorí,ku,lebo,len,ma,mať,má,máte,medzi,mi,mna,mne,mnou,musieť,môcť,môj,môže,my,na,nad,nám,náš,naši,nie,nech,než,nič,niektorý,nové,nový,nová,nové,noví,o,od,odo,of,on,ona,ono,oni,ony,po,pod,podľa,pokiaľ,potom,práve,pre,prečo,preto,pretože,prvý,prvá,prvé,prví,pred,predo,pri,pýta,s,sa,so,si,svoje,svoj,svojich,svojím,svojími,ta,tak,takže,táto,teda,te,tě,ten,tento,the,tieto,tým,týmto,tiež,to,toto,toho,tohoto,tom,tomto,tomuto,toto,tu,tú,túto,tvoj,ty,tvojími,už,v,vám,váš,vaše,vo,viac,však,všetok,vy,z,za,zo,že",
668
669 spanish:"a,al,algo,algunas,algunos,ante,antes,como,con,contra,cual,cuando,de,del,desde,donde,durante,e,el,ella,ellas,ellos,en,entre,era,erais,eran,eras,eres,es,esa,esas,ese,eso,esos,esta,estaba,estabais,estaban,estabas,estad,estada,estadas,estado,estados,estamos,estando,estar,estaremos,estará,estarán,estarás,estaré,estaréis,estaría,estaríais,estaríamos,estarían,estarías,estas,este,estemos,esto,estos,estoy,estuve,estuviera,estuvierais,estuvieran,estuvieras,estuvieron,estuviese,estuvieseis,estuviesen,estuvieses,estuvimos,estuviste,estuvisteis,estuviéramos,estuviésemos,estuvo,está,estábamos,estáis,están,estás,esté,estéis,estén,estés,fue,fuera,fuerais,fueran,fueras,fueron,fuese,fueseis,fuesen,fueses,fui,fuimos,fuiste,fuisteis,fuéramos,fuésemos,ha,habida,habidas,habido,habidos,habiendo,habremos,habrá,habrán,habrás,habré,habréis,habría,habríais,habríamos,habrían,habrías,habéis,había,habíais,habíamos,habían,habías,han,has,hasta,hay,haya,hayamos,hayan,hayas,hayáis,he,hemos,hube,hubiera,hubierais,hubieran,hubieras,hubieron,hubiese,hubieseis,hubiesen,hubieses,hubimos,hubiste,hubisteis,hubiéramos,hubiésemos,hubo,la,las,le,les,lo,los,me,mi,mis,mucho,muchos,muy,más,mí,mía,mías,mío,míos,nada,ni,no,nos,nosotras,nosotros,nuestra,nuestras,nuestro,nuestros,o,os,otra,otras,otro,otros,para,pero,poco,por,porque,que,quien,quienes,qué,se,sea,seamos,sean,seas,seremos,será,serán,serás,seré,seréis,sería,seríais,seríamos,serían,serías,seáis,sido,siendo,sin,sobre,sois,somos,son,soy,su,sus,suya,suyas,suyo,suyos,sí,también,tanto,te,tendremos,tendrá,tendrán,tendrás,tendré,tendréis,tendría,tendríais,tendríamos,tendrían,tendrías,tened,tenemos,tenga,tengamos,tengan,tengas,tengo,tengáis,tenida,tenidas,tenido,tenidos,teniendo,tenéis,tenía,teníais,teníamos,tenían,tenías,ti,tiene,tienen,tienes,todo,todos,tu,tus,tuve,tuviera,tuvierais,tuvieran,tuvieras,tuvieron,tuviese,tuvieseis,tuviesen,tuvieses,tuvimos,tuviste,tuvisteis,tuviéramos,tuviésemos,tuvo,tuya,tuyas,tuyo,tuyos,tú,un,una,uno,unos,vosotras,vosotros,vuestra,vuestras,vuestro,vuestros,y,ya,yo,él,éramos",
670
671 swedish:"alla,allt,att,av,blev,bli,blir,blivit,de,dem,den,denna,deras,dess,dessa,det,detta,dig,din,dina,ditt,du,där,då,efter,ej,eller,en,er,era,ert,ett,från,för,ha,hade,han,hans,har,henne,hennes,hon,honom,hur,här,i,icke,ingen,inom,inte,jag,ju,kan,kunde,man,med,mellan,men,mig,min,mina,mitt,mot,mycket,ni,nu,när,någon,något,några,och,om,oss,på,samma,sedan,sig,sin,sina,sitta,själv,skulle,som,så,sådan,sådana,sådant,till,under,upp,ut,utan,vad,var,vara,varför,varit,varje,vars,vart,vem,vi,vid,vilka,vilkas,vilken,vilket,vår,våra,vårt,än,är,åt,över",
672
673 turkish:"mu,onlar,seksen,ama,trilyon,buna,bizim,þeyden,yirmi,altý,iki,seni,doksan,dört,bunun,ki,nereye,altmýþ,hem,milyon,kez,otuz,beþ,elli,bizi,da,sekiz,ve,çok,bu,veya,ya,kýrk,onlarýn,ona,bana,yetmiþ,milyar,þunu,senden,birþeyi,dokuz,yani,kimi,þeyler,kim,neden,senin,yedi,niye,üç,þey,mý,tüm,onlari,bunda,ise,þundan,hep,þuna,bin,ben,ondan,kimden,bazý,belki,ne,bundan,gibi,de,onlardan,sizi,sizin,daha,niçin,þunda,INSERmi,bunu,beni,ile,þu,þeyi,sizden,defa,biz,için,dahi,siz,nerde,kime,birþey,birkez,her,biri,on,mü,diye,acaba,sen,en,hepsi,bir,bizden,sanki,benim,nerede,onu,benden,yüz,birkaç,çünkü,nasýl,hiç,katrilyon",
674
675 ukrainian:"a,б,в,г,е,ж,з,м,т,у,я,є,і,аж,ви,де,до,за,зі,ми,на,не,ну,н�
676 ,ні,по,та,ти,то,ту,ті,це,цю,ця,ці,чи,ще,що,як,їй,їм,ї�
677 ,її,або,але,ало,без,був,вам,вас,ваш,вже,все,всю,вся,від,він,два,дві,для,ким,мож,моя,моє,мої,міг,між,мій,над,нам,нас,наш,нею,неї,ни�
678 ,ніж,ній,ось,при,про,під,пір,раз,рік,сам,си�
679 ,сім,так,там,теж,тим,ти�
680 ,той,тою,три,тут,�
681 оч,�
682 то,цей,цим,ци�
683 ,час,щоб,яка,які,адже,буде,буду,будь,була,були,було,бути,вами,ваша,ваше,ваші,весь,вниз,вона,вони,воно,всею,всім,всі�
684 ,втім,геть,далі,дво�
685 ,день,дуже,зате,його,йому,каже,кого,коли,кому,крім,куди,лише,люди,мало,мати,мене,мені,миру,мною,може,нами,наша,наше,наші,ними,ніби,один,поки,пора,рано,року,році,сама,саме,саму,самі,свою,своє,свої,себе,собі,став,суть,така,таке,такі,твоя,твоє,твій,тебе,тими,тобі,того,тоді,тому,туди,�
686 оча,�
687 іба,цими,цієї,часу,чого,чому,який,яки�
688 ,якої,якщо,ім'я,інша,інше,інші,буває,будеш,більш,вгору,вміти,внизу,вісім,давно,даром,добре,довго,друго,дякую,життя,зараз,знову,какая,кожен,кожна,кожне,кожні,краще,ледве,майже,менше,могти,можна,назад,немає,нижче,нього,однак,п'ять,перед,поруч,потім,проти,після,років,самим,сами�
689 ,самій,свого,своєї,свої�
690 ,собою,справ,такий,також,тепер,тисяч,тобою,треба,тро�
691 и,усюди,усіма,�
692 очеш,цього,цьому,часто,через,шість,якого,іноді,інший,інши�
693 ,багато,будемо,будете,будуть,більше,всього,всьому,далеко,десять,досить,другий,дійсно,завжди,звідси,зовсім,кругом,кілька,людина,можуть,навіть,навіщо,нагорі,небудь,низько,ніколи,нікуди,нічого,обидва,одного,однієї,п'ятий,перший,просто,раніше,раптом,самими,самого,самому,сказав,скрізь,сьомий,третій,тільки,�
694 отіти,чотири,чудово,шостий,близько,важлива,важливе,важливі,вдалині,восьмий,говорив,дев'ять,десятий,зайнята,зайнято,зайняті,занадто,значить,навколо,нарешті,нерідко,повинно,посеред,початку,пізніше,сказала,сказати,скільки,спасибі,частіше,важливий,двадцять,дев'ятий,зазвичай,зайнятий,звичайно,здається,найбільш,не можна,недалеко,особливо,потрібно,спочатку,сьогодні,численна,численне,численні,відсотків,двадцятий,звідусіль,мільйонів,нещодавно,прекрасно,четвертий,численний,будь ласка,дванадцять,одинадцять,сімнадцять,тринадцять,безперервно,дванадцятий,одинадцятий,одного разу,п'ятнадцять,сімнадцятий,тринадцятий,шістнадцять,вісімнадцять,п'ятнадцятий,чотирнадцять,шістнадцятий,вісімнадцятий,дев'ятнадцять,чотирнадцятий,дев'ятнадцятий",
695
696 };
697
698 //change the to defualt Stop word language options
699
700 $('#qlcd_wp_chatbot_stop_words_name').on('change',function () {
701
702 var lang=$(this).val();
703
704 var stopWords=stopWordsList[lang];
705
706 $("#qlcd_wp_chatbot_stop_words").val(stopWords);
707
708
709
710 });
711
712 //Custom Icon
713
714 $('.qcld_chatbot_custom_icon_button').click(function(e) {
715
716 e.preventDefault();
717
718 var image = wp.media({
719
720 title: 'Custom Icon',
721
722 // mutiple: true if you want to upload multiple files at once
723
724 multiple: false
725
726 })
727
728 .open()
729
730 .on('select', function(e){
731
732 // This will return the selected image from the Media Uploader, the result is an object
733
734 var uploaded_image = image.state().get('selection').first();
735
736 var image_url = uploaded_image.toJSON().url;
737
738 // Let's assign the url value to the hidden field value and img src.
739
740 $('#wp_chatbot_custom_icon_src').attr('src',image_url);
741
742 $('#wp_chatbot_custom_icon_path').val(image_url);
743
744 });
745
746 });
747
748
749 $('#qc_wpbot_df_status').on('click', function(e){
750 e.preventDefault();
751
752 $.ajax(
753 {
754 type: 'POST', // 'POST' here so that _upload_ progress _also_ makes sense;
755 // Change to 'GET' if you need.
756 url: qcld_gemini_admin_data.ajax_url, data: {
757 'action': 'qcld_wp_df_api_call',
758 'dfquery': 'hi',
759 'nonce': qcld_gemini_admin_data.ajax_nonce,
760 'sessionid': 'wpwBot_df_201sdf8071'
761 },
762 beforeSend: function()
763 {
764 $('.qcwp_df_status').append('<p>Connecting...</p>');
765
766 },
767 success: function(data){
768 var response = $.parseJSON(JSON.parse(data));
769 if(typeof response.responseId !== "undefined"){
770 $('.qcwp_df_status').html('<p>Dialogflow is connected successfully!</p>');
771 }else{
772 $('.qcwp_df_status').html('<p>Connecton Failed. '+response.error.message+'</p><p class="df-connect-error">If DialogFlow connection is not working, please check <a href="'+document.location.pathname+'?page=wpbot_help_page#general_debugging">Debugging Steps</a> or <a href="https://www.wpbot.pro/free-support/" target="_blank">contact us</a> for support.</p>');
773 }
774
775 }
776 });
777
778 })
779
780 //Custom Agent Icon
781
782 $('.wp_chatbot_custom_agent_button').click(function(e) {
783
784 e.preventDefault();
785
786 var image = wp.media({
787
788 title: 'Custom Agent',
789
790 // mutiple: true if you want to upload multiple files at once
791
792 multiple: false
793
794 })
795
796 .open()
797
798 .on('select', function(e){
799
800 // This will return the selected image from the Media Uploader, the result is an object
801
802 var uploaded_image = image.state().get('selection').first();
803
804 var image_url = uploaded_image.toJSON().url;
805
806 // Let's assign the url value to the hidden field value and img src.
807
808 $('#wp_chatbot_custom_agent_src').attr('src',image_url);
809
810 $('#wp_chatbot_custom_agent_path').val(image_url);
811
812 });
813
814 });
815
816 //Custom Backgroud image
817
818 $('.qcld_wb_chatbot_board_bg_button').click(function(e) {
819
820 e.preventDefault();
821
822 var image = wp.media({
823
824 title: 'Custom Agent',
825
826 // mutiple: true if you want to upload multiple files at once
827
828 multiple: false
829
830 })
831
832 .open()
833
834 .on('select', function(e){
835
836 // This will return the selected image from the Media Uploader, the result is an object
837
838 var uploaded_image = image.state().get('selection').first();
839
840 var image_url = uploaded_image.toJSON().url;
841
842 // Let's assign the url value to the hidden field value and img src.
843
844 $('#qcld_wb_chatbot_board_bg_image').attr('src',image_url);
845
846 $('#qcld_wb_chatbot_board_bg_path').val(image_url);
847
848 });
849
850 });
851
852 //wpwBot Load Control handler.
853
854 jQuery("input[name='wp_chatbot_df_api']").on('change', function(e){
855 e.preventDefault();
856 if($(this).val()=='v1'){
857 $('#wp-chatbot-df-section-v1').show('slow');
858 $('#wp-chatbot-df-section-v2').hide('slow');
859 }else{
860 $('#wp-chatbot-df-section-v1').hide('slow');
861 $('#wp-chatbot-df-section-v2').show('slow');
862 }
863 })
864
865 if($("input[type=radio][name='wp_chatbot_df_api']:checked").val()=='v1'){
866 $('#wp-chatbot-df-section-v1').show('slow');
867 }else{
868 $('#wp-chatbot-df-section-v1').hide();
869 }
870
871 if($("input[type=radio][name='wp_chatbot_df_api']:checked").val()=='v2'){
872 $('#wp-chatbot-df-section-v2').show('slow');
873 }else{
874 $('#wp-chatbot-df-section-v2').hide();
875 }
876
877
878 if($("input[type=radio][name='wp_chatbot_show_pages']:checked").val()=='off'){
879
880 $('#wp-chatbot-show-pages-list').show('slow');
881
882 }else{
883
884 $('#wp-chatbot-show-pages-list').hide('slow');
885
886 }
887
888 //on change.
889
890 $('.wp-chatbot-show-pages').on('change',function (e) {
891
892 if( $(this).val()=='off'){
893
894 $('#wp-chatbot-show-pages-list').show('slow');
895
896 }else{
897
898 $('#wp-chatbot-show-pages-list').hide('slow');
899
900 }
901
902 })
903
904 //Search options
905
906 if($('#wp-chatbot-search-option').val()=='standard'){
907
908 $('#wp-chatbot-standard-search').show();
909
910 $('#wp-chatbot-advanced-search').hide();
911
912
913
914 } else if($('#wp-chatbot-search-option').val()=='advanced'){
915
916 $('#wp-chatbot-advanced-search').show();
917
918 $('#wp-chatbot-standard-search').hide();
919
920 }
921
922 $('#wp-chatbot-search-option').on('change',function (e) {
923
924 if($(this).val()=='standard'){
925
926 $('#wp-chatbot-standard-search').show();
927
928 $('#wp-chatbot-advanced-search').hide();
929
930 } else if($(this).val()=='advanced'){
931
932 $('#wp-chatbot-advanced-search').show();
933
934 $('#wp-chatbot-standard-search').hide();
935
936 }
937
938 });
939
940
941
942 //Product Index for categories & Tag search
943
944
945
946 var wpChatbotIndexBtn=$('#qlcd_wp_chatbot_index');
947
948 var wpChatbotIndexProcess = $('#qlcd_wp_chatbot_index_process');
949
950 var wpChatbotIndexProgress = $('#qlcd_wp_chatbot_index_progress');
951
952 var wpChatbotIndexLoader = $('#qlcd_wp_chatbot_index_loader');
953
954 var wpChatbotSyncStatus;
955
956 var wpChatbotIndexProcessed;
957
958 var wpChatbotIndexToProcess;
959
960 // Reindex table
961
962 wpChatbotIndexBtn.on( 'click', function(e) {
963
964 e.preventDefault();
965
966 wpChatbotIndexProcess.html('');
967
968 wpChatbotIndexProgress.text('');
969
970
971
972 wpChatbotSyncStatus = 'sync';
973
974 wpChatbotIndexToProcess = 0;
975
976 wpChatbotIndexProcessed = 0;
977
978
979
980 wpChatbotIndexLoader.html('<img class="wp-chatbot-comment-loader" src="'+qcld_gemini_admin_data.image_path+'comment.gif" alt="..." />');
981
982 wpChatbotIndexProcess.html( wpChatbotIndexProcessed + '%' );
983
984
985
986 qcld_wb_chatbot_sync();
987
988
989
990 });
991
992
993
994
995
996 function qcld_wb_chatbot_sync() {
997
998
999
1000 $.ajax({
1001
1002 type: 'POST',
1003
1004 url: qcld_gemini_admin_data.ajax_url,
1005
1006 data: {
1007
1008 action: 'qcld-wp-chabot-reindex',
1009 'nonce': qcld_gemini_admin_data.ajax_nonce
1010
1011 },
1012
1013 dataType: "json",
1014
1015 success: function (response) {
1016
1017 // console.log('begining : ',response);
1018
1019 if ( 'sync' !== wpChatbotSyncStatus ) {
1020
1021 return;
1022
1023 }
1024
1025
1026
1027 wpChatbotIndexToProcess = response.data.found_posts;
1028
1029 wpChatbotIndexProcessed = response.data.offset;
1030
1031
1032
1033 wpChatbotIndexProcessed = Math.floor( wpChatbotIndexProcessed / wpChatbotIndexToProcess * 100 );
1034
1035
1036
1037 if ( 0 === response.data.offset && ! response.data.start ) {
1038
1039
1040
1041 // Sync finished
1042
1043 wpChatbotSyncStatus = 'finished';
1044
1045
1046
1047 //console.log('first : '+ response.data );
1048
1049 //console.log( "Reindex finished!" );
1050
1051
1052
1053 // $reindexBlock.removeClass('loading');
1054
1055 setTimeout(function () {
1056
1057 wpChatbotIndexProgress.text('Complete and '+response.data.found_posts+' Products found!' );
1058
1059 wpChatbotIndexLoader.html('');
1060
1061 },1000);
1062
1063
1064
1065
1066
1067 } else {
1068
1069
1070
1071 // console.log('2nd : '+ response.data );
1072
1073
1074
1075 wpChatbotIndexProcess.html ( wpChatbotIndexProcessed + '% ' );
1076
1077
1078
1079
1080
1081 // We are starting a sync
1082
1083 wpChatbotSyncStatus = 'sync';
1084
1085
1086
1087 qcld_wb_chatbot_sync();
1088
1089 }
1090
1091
1092
1093 },
1094
1095 error : function( jqXHR, textStatus ) {
1096 //console.log( "Request failed: " + textStatus );
1097 qcld_wb_chatbot_cancelSync();
1098 },
1099 complete: function () {
1100
1101 }
1102
1103 });
1104 }
1105
1106
1107
1108 function qcld_wb_chatbot_cancelSync() {
1109 $.ajax( {
1110 method: 'post',
1111 url: qcld_gemini_admin_data.ajax_url,
1112 data: {
1113 action: 'qcld-wp-chabot-cancel-index',
1114 'nonce': qcld_gemini_admin_data.ajax_nonce
1115 }
1116 });
1117 }
1118
1119 //Messenger Color scheme.
1120
1121 $('#qlcd_wp_chatbot_fb_color').wpColorPicker();
1122 $('#wp_chatbot_proactive_bg_color').wpColorPicker();
1123
1124
1125 // Sub category for parent category
1126 $(document).on('change','#wp_chatbot_show_parent_category',function (e) {
1127 if($(this).is(':checked')){
1128 $('#wp_chatbot_sub_cats_container').show();
1129 }else{
1130 $('#wp_chatbot_sub_cats_container').hide();
1131 }
1132 })
1133 //Opening hours
1134 if($('#enable_wp_chatbot_opening_hour').is(':checked')){
1135 $('#wp-chatbot-hours-wrapper').show();
1136 }else{
1137 $('#wp-chatbot-hours-wrapper').hide();
1138 }
1139 $(document).on('change','#enable_wp_chatbot_opening_hour',function (e) {
1140 if($(this).is(':checked')){
1141 $('#wp-chatbot-hours-wrapper').show();
1142 }else{
1143 $('#wp-chatbot-hours-wrapper').hide();
1144 }
1145 })
1146
1147 $(".wp-chatbot-hours-add-btn").on('click',function () {
1148 var elNumber=$(this).parent().parent().find('.wp-chatbot-hours-container').length;
1149 var dayName=$(this).attr('data-day');
1150 var hourSet='<div class="wp-chatbot-hours-container">'+
1151 '<div class="wp-chatbot-hours">'+
1152 '<input type="text" name="wpwbot_hours['+dayName+']['+elNumber+'][]" value="00:00" > <input type="text" name="wpwbot['+dayName+']['+elNumber+'][]" value="00:00">'+
1153 '</div>'+
1154 '<div class="wp-chatbot-hours-remove">'+
1155 '<button type="button" class="btn btn-danger btn-sm wp-chatbot-hours-remove-btn ">'+
1156 '<i class="dashicons dashicons-remove" aria-hidden="true"></i>'+
1157 '</button>'+
1158 '</div>'+
1159 '</div>';
1160 $(this).parent().parent().find('.wp-chatbot-day').append(hourSet);
1161 $('.wp-chatbot-hours input').timepicker({ 'timeFormat': 'H:i' });
1162 });
1163
1164 $(document).on('click','.wp-chatbot-hours-remove-btn',function () {
1165 var elNumbers=$(this).parent().parent().parent().find('.wp-chatbot-hours-container').length;
1166 if(elNumbers>1){
1167 if(confirm('Are you sure to delete this support query block?')){
1168 $(this).parent().parent().remove();
1169 }
1170 }else{
1171 alert('At least one opening hours set is required');
1172 }
1173
1174 });
1175 //DialogFlow
1176 if($('#enable_wp_chatbot_dailogflow').is(':checked')){
1177 $('#wp-chatbot-dialflow-section').show();
1178 }else{
1179 $('#wp-chatbot-dialflow-section').hide();
1180 }
1181 $(document).on('change','#enable_wp_chatbot_dailogflow',function (e) {
1182 if($(this).is(':checked')){
1183 $('#wp-chatbot-dialflow-section').show();
1184 }else{
1185 $('#wp-chatbot-dialflow-section').hide();
1186 }
1187 })
1188
1189 $('#submit').click(function(){
1190
1191 if( jQuery('#section-flip-6:visible').length > 0 ){
1192 /* Perform some button action ... */
1193 if($('#enable_wp_chatbot_dailogflow').is(':checked')){
1194
1195 if( $('input[name ="qlcd_wp_chatbot_dialogflow_project_id"]').val() =='' ){
1196 alert("Please provide the Dialogflow Project ID!");
1197 return false;
1198 }
1199
1200 if( $('input[name="qlcd_wp_chatbot_dialogflow_agent_language"]').val() == '' ){
1201 alert("Please provide the Dialogflow Agent Language!");
1202 return false;
1203 }
1204
1205
1206 }
1207
1208 }
1209
1210 });
1211
1212 jQuery( ".qc_menu_list_container ul li" ).dblclick(function(e) {
1213 e.preventDefault();
1214 var html = jQuery(this).html().trim();
1215 jQuery('#qc_menu_area').append(html);
1216 jQuery('#qc_wpbot_menu_order').val(jQuery('#qc_menu_area').html().trim());
1217 });
1218
1219
1220 jQuery(document).on("dblclick", "#qc_menu_area span", function(e) {
1221 e.preventDefault();
1222 jQuery(this).remove();
1223 jQuery('#qc_wpbot_menu_order').val(jQuery('#qc_menu_area').html().trim());
1224 });
1225
1226
1227 jQuery( "#qc_menu_area" ).sortable({
1228 update: function( event, ui ) {
1229 jQuery('#qc_wpbot_menu_order').val(jQuery('#qc_menu_area').html().trim());
1230 }
1231 });
1232 jQuery( "#qc_menu_area" ).disableSelection();
1233
1234
1235 jQuery('.qc_menu_list_area span').draggable({
1236 revert: "invalid",
1237 helper: 'clone'
1238 });
1239
1240
1241
1242
1243 jQuery('.qc_menu_area_container').droppable({
1244 accept: ".qc_draggable_item",
1245 drop: function(event, ui) {
1246 var droppable = $(this);
1247 var draggable = ui.draggable;
1248 // Move draggable into droppable
1249 draggable.clone().removeClass("qc_draggable_item").addClass("qc_draggable_item_remove").removeAttr("style").appendTo(droppable);
1250 jQuery('#qc_wpbot_menu_order').val(jQuery('#qc_menu_area').html().trim());
1251 }
1252 });
1253 $('#wp_chatbot_floatingiconbg_color, #wp_chatbot_text_color, #wp_chatbot_link_color,#wp_chatbot_link_hover_color,#wp_chatbot_bot_msg_bg_color,#wp_chatbot_bot_msg_text_color,#wp_chatbot_user_msg_bg_color,#wp_chatbot_header_background_color,#wp_chatbot_user_msg_text_color,#wp_chatbot_buttons_bg_color,#wp_chatbot_buttons_text_color,#wp_chatbot_theme_primary_color,#wp_chatbot_theme_secondary_color').wpColorPicker();
1254 jQuery('.qc_menu_list_area').droppable({
1255 accept: ".qc_draggable_item_remove",
1256 drop: function(event, ui) {
1257 var droppable = $(this);
1258 var draggable = ui.draggable;
1259 // Move draggable into droppable
1260 draggable.remove();
1261 jQuery('#qc_wpbot_menu_order').val(jQuery('#qc_menu_area').html().trim());
1262 }
1263 });
1264
1265
1266 jQuery('.qc_menu_area_container .qcld-chatbot-form').each(function(){
1267 var obj = $(this);
1268 obj.text(jQuery('.qc_menu_list_container .qcld-chatbot-form[data-form="'+obj.attr('data-form')+'"]').text());
1269 })
1270
1271 setTimeout(function(){
1272 if( jQuery('#qc_wpbot_menu_order').length > 0 ){
1273 jQuery('#qc_wpbot_menu_order').val(jQuery('#qc_menu_area').html().trim());
1274 }
1275 }, 2000)
1276
1277 jQuery('.qc_accordion_title').on('click', function(e){
1278 e.preventDefault();
1279 var obj = $(this);
1280
1281 jQuery('.qc_accordion_content_third').hide();
1282
1283 if($( "h3[data-accordion='qc_accordion_content_third']" ).find('i').hasClass("fa-minus")){
1284 $( "h3[data-accordion='qc_accordion_content_third']" ).find('i').removeClass("fa-minus");
1285 $( "h3[data-accordion='qc_accordion_content_third']" ).find('i').addClass("fa-plus");
1286 }
1287 jQuery('.qc_accordion_content_second').hide();
1288 if($( "h3[data-accordion='qc_accordion_content_second']" ).find('i').hasClass("fa-minus")){
1289 $( "h3[data-accordion='qc_accordion_content_second']" ).find('i').removeClass("fa-minus");
1290 $( "h3[data-accordion='qc_accordion_content_second']" ).find('i').addClass("fa-plus");
1291 }
1292 jQuery('.qc_accordion_content_first').hide();
1293 if($( "h3[data-accordion='qc_accordion_content_first']" ).find('i').hasClass("fa-minus")){
1294 $( "h3[data-accordion='qc_accordion_content_first']" ).find('i').removeClass("fa-minus");
1295 $( "h3[data-accordion='qc_accordion_content_first']" ).find('i').addClass("fa-plus");
1296 }
1297 setTimeout(function(){
1298 jQuery('.'+obj.attr('data-accordion')).show();
1299 obj.find('i').toggleClass("fa-plus fa-minus");
1300 }, 200)
1301 })
1302
1303 $(document).ready(function () {
1304 var flieElementOpenAi = document.getElementById("openfileinput");
1305
1306 if(flieElementOpenAi){
1307 $('.error-message').hide();
1308 $('.success-message').hide();
1309 $(".file_form").on('change','#openfileinput',function(){
1310 var file_data = $('#openfileinput').prop('files')[0];
1311 var form_data = new FormData();
1312 form_data.append('file', file_data);
1313 form_data.append('action', 'openai_file_upload');
1314 form_data.append('purpose','answers');
1315 $('.success-message').html('File is Proccesing');
1316 $('.success-message').show();
1317 $.ajax({
1318 url: qcld_gemini_admin_data.ajax_url,
1319 type: 'post',
1320 contentType: false,
1321 processData: false,
1322 data: form_data,
1323 success: function (response) {
1324 if(response[0].status == "success"){
1325 // $('.success').html(response.message)
1326 $('.success-message').hide();
1327 $('.success-message').html(response[0].message);
1328 $('.success-message').show();
1329 setTimeout(function(){
1330 $('.success-message').hide();
1331 },5000);
1332 location.reload();
1333 }
1334 if(response[0].status === "error"){
1335 //$('.success-message').html(response.message)
1336 jQuery('.success-message').hide();
1337 jQuery('.error-message').show();
1338 jQuery('.error-message').html(response[0].message);
1339 setTimeout(function(){
1340 jQuery('.error-message').hide();
1341 },5000);
1342 location.reload();
1343 }
1344 },
1345 });
1346
1347 });
1348
1349 $("#openaiFileList").on('click','.remove_file_openai',function(){
1350 $(this).hide();
1351 var file_id = $('.remove_file_openai').attr('data-id');
1352 jQuery('.error-message').show();
1353 jQuery('.error-message').html(file_id+'is deleting');
1354 setTimeout(function(){
1355 jQuery('.error-message').hide();
1356 },5000);
1357 $.ajax({
1358 url: qcld_gemini_admin_data.ajax_url,
1359 type: 'POST',
1360 dataType: "JSON",
1361 data: {
1362 action : 'openai_file_delete',
1363 file_id: file_id
1364 },
1365 success: function (response) {
1366 location.reload();
1367 },
1368 });
1369
1370 });
1371 $.ajax({
1372 url: qcld_gemini_admin_data.ajax_url,
1373 type: "POST",
1374 dataType: "JSON",
1375 data: {
1376 action : 'openai_file_list',
1377 },
1378 success: function(res) {
1379
1380 if((res.data != undefined)){
1381 data = res.data;
1382 let text = "";
1383 data.forEach(itemfunction);
1384 function itemfunction(item) {
1385 text += '<tr><td>'+item.filename +'</td><td>' +item.id+'</td><td><a class="btn-success btn floated create_ft_model_modal" data-id="'+item.id+'">Create FT Model</a> <a class="btn-danger btn floated remove_file_openai" data-id="'+item.id+'">Remove</a></td></tr>';
1386 }
1387 document.getElementById("openaiFileList").innerHTML = text;
1388 }
1389 }
1390 });
1391 $('#openaiFileList').on('click','.create_ft_model_modal',function(){
1392
1393 var ft_id = $(this).attr('data-id');
1394 $('#qcld_openai_ft_fileid').val(ft_id);
1395 $('#qcld-ft-modal').modal();
1396 })
1397 $.ajax({
1398 url: qcld_gemini_admin_data.ajax_url,
1399 type: "POST",
1400 dataType: "JSON",
1401 data: {
1402 action : 'openai_finetune_list',
1403 },
1404 success: function(res) {
1405 data = res;
1406 let text = "";
1407 data.forEach(itemfunction);
1408 function itemfunction(item) {
1409 text += '<tr> <td>'+item[0] +'</td> <td>' +item[1]+'</td> <td>'+item[2]+'</td> <td>'+item[3]+'</td> <td>'+item[4]+'</td> <td> <a class="btn-danger btn floated remove_ft_model_openai" data-id="'+item[1]+'">Remove</a></td> </tr>';
1410 }
1411 document.getElementById("openaiFTList").innerHTML = text;
1412
1413 }
1414 });
1415 }
1416
1417 $("#wp-chatbot-data_post_converter").on('click','.qcld_convert_data', function(){
1418 var list = $("input[name='wp_chatbot_data_converter_list[]']:checked").map(function () {
1419 return this.value;
1420 }).get();
1421 $.ajax({
1422 url: qcld_gemini_admin_data.ajax_url,
1423 type: "POST",
1424 dataType: "JSON",
1425 data: {
1426 action : 'qcld_openai_post_data_converter_count',
1427 data: list,
1428 },
1429 success: function(res) {
1430 location.reload();
1431 }
1432 });
1433 });
1434
1435
1436
1437 // $('').on('click', '#save_setting', function(){
1438
1439
1440 // })
1441 var file_save = document.getElementById("save_file_id");
1442 if(file_save){
1443 $('.qcl-openai').on('click', '#save_file_id', function(){
1444 var file_id = $("input[name='file_id']" ).val();
1445
1446 $.ajax({
1447 url: qcld_gemini_admin_data.ajax_url,
1448 type:'POST',
1449 data: ({action : '',nonce: qcld_gemini_admin_data.ajax_nonce,file_id:file_id}),
1450 success: function(data){
1451 $('#result').html(data);
1452 location.reload();
1453
1454 }
1455 });
1456 })
1457 }
1458 var settingsOpenAi = document.getElementById("save_setting");
1459 if(settingsOpenAi){
1460
1461
1462 $('.qcl-openai').on('change','#qcld_openai_prompt', function() {
1463
1464 if( ($("[id*='qcld_openai_prompt'] :selected").val()) == 'custom_prompt'){
1465 $('#custom_prompt_wrapper').html('<input type="field" id="qcld_openai_prompt_custom" class="form-control my-2" placeholder="Add custom prompt here. Custom prompt will be appended before the user`s queries"/>');
1466 }else{
1467 $('#custom_prompt_wrapper').empty('')
1468 }
1469 })
1470 setTimeout(() => {
1471 var custom_promt_value =$("#custom_promt_value").val();
1472 if( $("[id*='qcld_openai_prompt'] :selected").val() == 'custom_prompt' ){
1473
1474 // $("#custom_promt_value").filter('[value=any_command]').prop('selected', true);
1475 $('select option[value="custom_prompt"]').attr('selected', 'selected');
1476 // $('select option[value="any_command"]').attr('selected', 'selected');
1477
1478 $('#custom_prompt_wrapper').html('<input type="field" id="qcld_openai_prompt_custom" class="form-control my-2" />');
1479 $('#qcld_openai_prompt_custom').val(custom_promt_value)
1480
1481 }
1482 }, 500);
1483 $('.qcl-openai').on('change', 'input[name="qcld_openai_system_content_preset"]', function(){
1484 var systemContent = $(this).closest('.qcld-openai-system-preset').find('.qcld-openai-system-preset-value').val();
1485 $('.qcld-openai-system-preset').removeClass('is-selected');
1486 $(this).closest('.qcld-openai-system-preset').addClass('is-selected');
1487 $('#qcld_openai_system_content').val(systemContent).trigger('input');
1488 });
1489
1490 if (!$('input[name="qcld_openai_system_content_preset"]:checked').length) {
1491 $('.qcld-openai-system-preset').first().find('input[name="qcld_openai_system_content_preset"]').prop('checked', true).trigger('change');
1492 }
1493 $('.qcl-openai').on('input', '#qcld_openai_system_content', function(){
1494 var normalizeSpace = function(str) { return (str || '').replace(/\s+/g, ' ').trim(); };
1495 var currentSystemContent = normalizeSpace($(this).val());
1496 var hasMatchingPreset = false;
1497
1498 $('input[name="qcld_openai_system_content_preset"]').each(function(){
1499 var systemContent = normalizeSpace($(this).closest('.qcld-openai-system-preset').find('.qcld-openai-system-preset-value').val());
1500 if (systemContent === currentSystemContent) {
1501 $(this).prop('checked', true);
1502 $('.qcld-openai-system-preset').removeClass('is-selected');
1503 $(this).closest('.qcld-openai-system-preset').addClass('is-selected');
1504 hasMatchingPreset = true;
1505 return false;
1506 }
1507 });
1508
1509 if (!hasMatchingPreset) {
1510 $('input[name="qcld_openai_system_content_preset"]').prop('checked', false);
1511 $('.qcld-openai-system-preset').removeClass('is-selected');
1512 }
1513 });
1514 $('.qcl-openai').on('click', '#save_setting', function(){
1515 if ($('#is_ai_enabled').is(":checked")){
1516 var is_ai_enabled = 1;
1517 }else{
1518 var is_ai_enabled = 0;
1519 }
1520 if($('#is_ai_only_mode').is(":checked")){
1521 var is_ai_only_mode = 1;
1522 }else{
1523 var is_ai_only_mode = 0;
1524 }
1525 if($('#conversation_continuity').is(":checked")){
1526 var conversation_continuity = 1;
1527 }else{
1528 var conversation_continuity = 0;
1529 }
1530 if($('#is_relevant_enabled').is(":checked")){
1531 var is_relevant_enabled = 1;
1532 }else{
1533 var is_relevant_enabled = 0;
1534 }
1535 if($('#is_page_suggestion_enabled').is(":checked")){
1536 var is_page_suggestion_enabled = 1;
1537 }else{
1538 var is_page_suggestion_enabled = 0;
1539 }
1540 if($('#is_context_awareness_enabled').is(":checked")){
1541 var is_context_awareness_enabled = 1;
1542 }else{
1543 var is_context_awareness_enabled = 0;
1544 }
1545 if($('#is_page_rag_enabled').is(":checked")){
1546 var is_page_rag_enabled = 1;
1547 }else{
1548 var is_page_rag_enabled = 0;
1549 }
1550 if($('#is_stream_enabled').is(":checked")){
1551 var is_stream_enabled = 1;
1552 }else{
1553 var is_stream_enabled = 0;
1554 }
1555 var post_types = $.map($('input[name="site_search_posttypes[]"]:checked'), function(c){return c.value; });
1556 var api_key = $( "input[name='api_key']" ).val();
1557 var openai_engines = $("[id*='openai_engines'] :selected").val();
1558 var qcld_openai_prompt = $("[id*='qcld_openai_prompt'] :selected").val();
1559 var max_tokens = $("input[name='max_tokens']" ).val();
1560 var file_id = $("input[name='file_id']" ).val();
1561 var temperature = $("input[name='temperature']" ).val();
1562 var presence_penalty = $("input[name='presence_penalty']" ).val();
1563 var openai_exclude_keyword = jQuery('#qcld_openai_exclude_keyword').val();
1564 var openai_include_keyword = jQuery('#qcld_openai_include_keyword').val();
1565 var qcld_openai_system_content = jQuery('#qcld_openai_system_content').val();
1566 var qcld_openai_append_content = jQuery('#qcld_openai_append_content').val();
1567 if(qcld_openai_prompt == "custom_prompt"){
1568 var qcld_openai_prompt_custom = $("#qcld_openai_prompt_custom").val();
1569 }
1570 var frequency_penalty = $("input[name='frequency_penalty']" ).val();
1571 var openai_post_type = $("input[name='site_search_posttypes[]']:checked").map(function () {
1572 return this.value;
1573 }).get();
1574
1575 Swal.fire({
1576 html: '<div class="qcld-save-settings-spinner"></div>',
1577 allowOutsideClick: false,
1578 allowEscapeKey: false,
1579 showConfirmButton: false,
1580 background: 'transparent',
1581 customClass: {
1582 popup: 'qcld-swal-loading-only'
1583 }
1584 });
1585
1586 $.ajax({
1587 url: qcld_gemini_admin_data.ajax_url,
1588 type:'POST',
1589 data: ({action : 'openai_settings_option',nonce: qcld_gemini_admin_data.ajax_nonce,api_key: api_key,openai_engines:openai_engines,qcld_openai_prompt: qcld_openai_prompt,max_tokens:max_tokens,file_id:file_id,temperature:temperature,presence_penalty:presence_penalty,frequency_penalty:frequency_penalty,qcld_openai_prompt_custom: qcld_openai_prompt_custom,openai_exclude_keyword:openai_exclude_keyword,is_relevant_enabled:is_relevant_enabled,openai_include_keyword:openai_include_keyword,ai_enabled:is_ai_enabled,is_page_suggestion_enabled:is_page_suggestion_enabled,is_context_awareness_enabled:is_context_awareness_enabled,qcld_openai_system_content:qcld_openai_system_content,qcld_openai_append_content:qcld_openai_append_content,ai_only_mode: is_ai_only_mode,conversation_continuity:conversation_continuity,openai_post_type:openai_post_type,is_page_rag_enabled:is_page_rag_enabled,is_stream_enabled:is_stream_enabled}),
1590
1591 success: function(data){
1592 $('#result').html(data);
1593 if(data.icon == "success"){
1594 var color = "color: green";
1595 }else if(data.icon == "error"){
1596 var color = "color: red";
1597 }
1598 Swal.fire({
1599 title: 'Your settings are saved.',
1600 html: '<p style=font-size:14px>Please clear your browser <b>cache</b> and <b>cookies</b> both and reload the front end before testing. Alternatively, you can launch a new browser window in <b>Incognito</b>/Private mode (Ctrl+Shift+N in chrome) to test.</p></b><p><span style="'+ color +'">'+ data.msg+'</span></p>',
1601 width: 450,
1602 icon: 'success',
1603 confirmButtonText: 'Got it',
1604 confirmButtonWidth: 100,
1605 confirmButtonClass: 'btn btn-lg'
1606 }).then((result) => {
1607 if (result.isConfirmed) {
1608 $.ajax({
1609 url: qcld_gemini_admin_data.ajax_url,
1610 type: 'POST',
1611 data: {
1612 action: 'update_settings_option',
1613 nonce: qcld_gemini_admin_data.ajax_nonce,
1614 disable_ss: 1
1615 },
1616
1617 });
1618 }
1619 });
1620 }
1621 });
1622
1623 })
1624
1625 //Additional Code - 04-12-2023
1626 //For AI Enabled + Site Search Disabling
1627 $('.qcl-openai').on('click', '#save_setting_disable_ss', function(){
1628
1629 console.log($('#conversation_continuity').is(":checked"))
1630 if ($('#is_ai_enabled').is(":checked")){
1631 var is_ai_enabled = 1;
1632 }else{
1633 var is_ai_enabled = 0;
1634 }
1635 if($('#is_ai_only_mode').is(":checked")){
1636 var is_ai_only_mode = 1;
1637 }else{
1638 var is_ai_only_mode = 0;
1639 }
1640 if($('#conversation_continuity').is(":checked")){
1641 var conversation_continuity = 1;
1642 }else{
1643 var conversation_continuity = 0;
1644 }
1645 console.log(conversation_continuity)
1646 if($('#is_relevant_enabled').is(":checked")){
1647 var is_relevant_enabled = 1;
1648 }else{
1649 var is_relevant_enabled = 0;
1650 }
1651 if($('#is_page_suggestion_enabled').is(":checked")){
1652 var is_page_suggestion_enabled = 1;
1653 }else{
1654 var is_page_suggestion_enabled = 0;
1655 }
1656 if($('#is_context_awareness_enabled').is(":checked")){
1657 var is_context_awareness_enabled = 1;
1658 }else{
1659 var is_context_awareness_enabled = 0;
1660 }
1661
1662 var api_key = $( "input[name='api_key']" ).val();
1663 var openai_engines = $("[id*='openai_engines'] :selected").val();
1664 var qcld_openai_prompt = $("[id*='qcld_openai_prompt'] :selected").val();
1665 var max_tokens = $("input[name='max_tokens']" ).val();
1666 var file_id = $("input[name='file_id']" ).val();
1667 var temperature = $("input[name='temperature']" ).val();
1668 var presence_penalty = $("input[name='presence_penalty']" ).val();
1669 var openai_exclude_keyword = jQuery('#qcld_openai_exclude_keyword').val();
1670 var openai_include_keyword = jQuery('#qcld_openai_include_keyword').val();
1671 if(qcld_openai_prompt == "custom_prompt"){
1672 var qcld_openai_prompt_custom = $("#qcld_openai_prompt_custom").val();
1673 }
1674 var frequency_penalty = $("input[name='frequency_penalty']" ).val();
1675
1676 $.ajax({
1677 url: qcld_gemini_admin_data.ajax_url,
1678 type:'POST',
1679 data: ({action : 'openai_settings_option',nonce: qcld_gemini_admin_data.ajax_nonce,api_key: api_key,openai_engines:openai_engines,qcld_openai_prompt: qcld_openai_prompt,max_tokens:max_tokens,file_id:file_id,temperature:temperature,presence_penalty:presence_penalty,frequency_penalty:frequency_penalty,qcld_openai_prompt_custom: qcld_openai_prompt_custom,openai_exclude_keyword:openai_exclude_keyword,is_relevant_enabled:is_relevant_enabled,openai_include_keyword:openai_include_keyword,ai_enabled:is_ai_enabled,is_page_suggestion_enabled:is_page_suggestion_enabled,is_context_awareness_enabled:is_context_awareness_enabled,ai_only_mode: is_ai_only_mode,conversation_continuity:conversation_continuity, disable_ss: 1,openai_post_type:post_types}),
1680 success: function(data){
1681 $('#result').html(data);
1682 location.reload();
1683 }
1684 });
1685
1686
1687
1688 }) //Additional Code - 04-12-2023 ends here
1689 }
1690 var settingsRag = document.getElementById("save_rag_setting");
1691 if (settingsRag) {
1692 $('.qcl-openai').on('change', '.rag_auto_sync_enabled', function () {
1693 $('.rag_auto_sync_enabled').prop('checked', this.checked);
1694 });
1695
1696 $('.qcl-openai').on('click', '#save_rag_setting', function () {
1697
1698 var rag_embed_pages = $('#rag_embed_pages').is(':checked') ? 1 : 0;
1699 var rag_embed_posts = $('#rag_embed_posts').is(':checked') ? 1 : 0;
1700 var rag_auto_sync_enabled = $('.rag_auto_sync_enabled').first().is(':checked') ? 1 : 0;
1701 var rag_embed_str = $('#rag_embed_str').is(':checked') ? 1 : 0;
1702
1703 var rag_embed_cpts = [];
1704 $('.rag_embed_cpts_checkbox:checked').each(function() {
1705 rag_embed_cpts.push($(this).val());
1706 });
1707
1708 $.ajax({
1709 url: qcld_gemini_admin_data.ajax_url,
1710 type: 'POST',
1711 data: ({
1712 action: 'qcld_rag_settings_option',
1713 nonce: qcld_gemini_admin_data.ajax_nonce,
1714 rag_embed_pages: rag_embed_pages,
1715 rag_embed_posts: rag_embed_posts,
1716 rag_auto_sync_enabled: rag_auto_sync_enabled,
1717 rag_embed_str: rag_embed_str,
1718 rag_embed_cpts: rag_embed_cpts
1719 }),
1720 success: function (data) {
1721 $('#result').html(data);
1722 Swal.fire({
1723 title: 'Your settings are saved.',
1724 html: '<p style=font-size:14px>Please clear your browser <b>cache</b> and <b>cookies</b> both and reload the front end before testing. Alternatively, you can launch a new browser window in <b>Incognito</b>/Private mode (Ctrl+Shift+N in chrome) to test.</p>',
1725 width: 450,
1726 icon: 'success',
1727 confirmButtonText: 'Got it',
1728 confirmButtonWidth: 100,
1729 confirmButtonClass: 'btn btn-lg'
1730 }).then((result) => {
1731 if (result.isConfirmed) {
1732 $.ajax({
1733 url: qcld_gemini_admin_data.ajax_url,
1734 type: 'POST',
1735 data: {
1736 action: '',
1737 nonce: qcld_gemini_admin_data.ajax_nonce,
1738 disable_ss: 1
1739 },
1740
1741 });
1742 }
1743 });
1744
1745 location.reload();
1746 }
1747 });
1748 })
1749
1750 $('.qcl-openai').on('click', '#rag_embed_btn', function (e) {
1751 e.preventDefault();
1752 var btn = $(this);
1753 var originalText = btn.text();
1754 btn.text('Saving settings...');
1755
1756 var rag_embed_pages = $('#rag_embed_pages').is(':checked') ? 1 : 0;
1757 var rag_embed_posts = $('#rag_embed_posts').is(':checked') ? 1 : 0;
1758 var rag_auto_sync_enabled = $('.rag_auto_sync_enabled').first().is(':checked') ? 1 : 0;
1759 var rag_embed_str = $('#rag_embed_str').is(':checked') ? 1 : 0;
1760
1761 var rag_embed_cpts = [];
1762 $('.rag_embed_cpts_checkbox:checked').each(function() {
1763 rag_embed_cpts.push($(this).val());
1764 });
1765
1766 $.ajax({
1767 url: qcld_gemini_admin_data.ajax_url,
1768 type: 'POST',
1769 data: ({
1770 action: 'qcld_rag_settings_option',
1771 nonce: qcld_gemini_admin_data.ajax_nonce,
1772 rag_embed_pages: rag_embed_pages,
1773 rag_embed_posts: rag_embed_posts,
1774 rag_auto_sync_enabled: rag_auto_sync_enabled,
1775 rag_embed_str: rag_embed_str,
1776 rag_embed_cpts: rag_embed_cpts
1777 }),
1778 success: function (data) {
1779 console.log(data);
1780 btn.text('Embedding...');
1781 $('#rag_embed_form').submit();
1782 }
1783 });
1784 })
1785
1786 // Delete Document
1787 $('.qcl-openai').on('click', '.rag-delete-doc', function () {
1788 var id = $(this).data('id');
1789
1790 Swal.fire({
1791 title: 'Are you sure?',
1792 text: "You won't be able to revert this!",
1793 icon: 'warning',
1794 showCancelButton: true,
1795 confirmButtonColor: '#3085d6',
1796 cancelButtonColor: '#d33',
1797 confirmButtonText: 'Yes, delete it!'
1798 }).then((result) => {
1799 if (result.isConfirmed) {
1800 $.ajax({
1801 url: qcld_gemini_admin_data.ajax_url,
1802 type: 'POST',
1803 data: {
1804 action: 'qcld_rag_delete_document',
1805 nonce: qcld_gemini_admin_data.ajax_nonce,
1806 id: id
1807 },
1808 success: function (res) {
1809 if (res.success) {
1810 $('#rag-doc-' + id).remove();
1811 Swal.fire('Deleted!', res.data, 'success');
1812 } else {
1813 Swal.fire('Error', res.data, 'error');
1814 }
1815 }
1816 });
1817 }
1818 })
1819 });
1820
1821 // Select All Checkbox
1822 $('.qcl-openai').on('change', '#rag-select-all', function() {
1823 $('.rag-doc-checkbox').prop('checked', $(this).prop('checked'));
1824 });
1825
1826 // Bulk Actions (Apply)
1827 $('.qcl-openai').on('click', '#rag-apply-bulk-action', function() {
1828 var action = $('#rag-bulk-action-selector').val();
1829 if (action !== 'delete') {
1830 Swal.fire('Info', 'Please select a valid bulk action.', 'info');
1831 return;
1832 }
1833
1834 var selectedIds = [];
1835 $('.rag-doc-checkbox:checked').each(function() {
1836 selectedIds.push($(this).val());
1837 });
1838
1839 if (selectedIds.length === 0) {
1840 Swal.fire('Warning', 'Please select at least one document.', 'warning');
1841 return;
1842 }
1843
1844 Swal.fire({
1845 title: 'Are you sure?',
1846 text: "Delete " + selectedIds.length + " selected documents? This cannot be undone!",
1847 icon: 'warning',
1848 showCancelButton: true,
1849 confirmButtonColor: '#3085d6',
1850 cancelButtonColor: '#d33',
1851 confirmButtonText: 'Yes, delete selected!'
1852 }).then((result) => {
1853 if (result.isConfirmed) {
1854 $.ajax({
1855 url: qcld_gemini_admin_data.ajax_url,
1856 type: 'POST',
1857 data: {
1858 action: 'qcld_rag_bulk_delete_documents',
1859 nonce: qcld_gemini_admin_data.ajax_nonce,
1860 ids: selectedIds
1861 },
1862 success: function(res) {
1863 if (res.success) {
1864 selectedIds.forEach(function(id) {
1865 $('#rag-doc-' + id).remove();
1866 });
1867 $('#rag-select-all').prop('checked', false);
1868 $('#rag-bulk-action-selector').val('-1');
1869 Swal.fire('Deleted!', res.data, 'success');
1870 } else {
1871 Swal.fire('Error', res.data, 'error');
1872 }
1873 }
1874 });
1875 }
1876 });
1877 });
1878
1879 // Delete All Documents
1880 $('.qcl-openai').on('click', '#rag-delete-all', function() {
1881 Swal.fire({
1882 title: 'CRITICAL WARNING!',
1883 text: "This will delete ALL documents in your Knowledge Base. This action is IRREVERSIBLE!",
1884 icon: 'error',
1885 showCancelButton: true,
1886 confirmButtonColor: '#d33',
1887 cancelButtonColor: '#3085d6',
1888 confirmButtonText: 'YES, DELETE EVERYTHING!'
1889 }).then((result) => {
1890 if (result.isConfirmed) {
1891 $.ajax({
1892 url: qcld_gemini_admin_data.ajax_url,
1893 type: 'POST',
1894 data: {
1895 action: 'qcld_rag_delete_all_documents',
1896 nonce: qcld_gemini_admin_data.ajax_nonce
1897 },
1898 success: function(res) {
1899 if (res.success) {
1900 $('#rag-knowledge-base-list').html('<tr><td colspan="6">No documents found in knowledge base.</td></tr>');
1901 $('#rag-select-all').prop('checked', false);
1902 Swal.fire('Cleared!', res.data, 'success');
1903 } else {
1904 Swal.fire('Error', res.data, 'error');
1905 }
1906 }
1907 });
1908 }
1909 });
1910 });
1911
1912 // Edit Document - Open Modal
1913 $('.qcl-openai').on('click', '.rag-edit-doc', function () {
1914 var id = $(this).data('id');
1915 $.ajax({
1916 url: qcld_gemini_admin_data.ajax_url,
1917 type: 'POST',
1918 data: {
1919 action: 'qcld_rag_get_document',
1920 nonce: qcld_gemini_admin_data.ajax_nonce,
1921 id: id
1922 },
1923 success: function (res) {
1924 if (res.success) {
1925 $('#edit-doc-id').val(res.data.id);
1926 $('#edit-doc-title').val(res.data.title);
1927 $('#edit-doc-content').val(res.data.content);
1928 $('#rag-edit-modal').show();
1929 } else {
1930 Swal.fire('Error', res.data, 'error');
1931 }
1932 }
1933 });
1934 });
1935
1936 // Close Edit Modal
1937 $(document).on('click', '#close-edit-modal', function () {
1938 $('#rag-edit-modal').hide();
1939 });
1940
1941 // Manual Sync Document
1942 $(document).on('click', '.rag-sync-doc', function(e) {
1943 e.preventDefault();
1944 var btn = $(this);
1945 var docId = btn.data('id');
1946
1947 if (!confirm('Are you sure you want to re-sync this document from its source?')) {
1948 return;
1949 }
1950
1951 btn.prop('disabled', true).text('Syncing...');
1952
1953 $.post(qcld_gemini_admin_data.ajax_url, {
1954 action: 'qcld_rag_manual_sync',
1955 nonce: qcld_gemini_admin_data.ajax_nonce,
1956 id: docId
1957 }, function(response) {
1958 btn.prop('disabled', false).text('Sync');
1959 if (response.success) {
1960 alert(response.data.message);
1961 location.reload();
1962 } else {
1963 alert('Error: ' + response.data.message);
1964 }
1965 });
1966 });
1967
1968 // Save Edit Document
1969 $(document).on('click', '#save-edit-doc', function () {
1970 var id = $('#edit-doc-id').val();
1971 var title = $('#edit-doc-title').val();
1972 var content = $('#edit-doc-content').val();
1973 var btn = $(this);
1974
1975 btn.prop('disabled', true).text('Saving...');
1976
1977 $.ajax({
1978 url: qcld_gemini_admin_data.ajax_url,
1979 type: 'POST',
1980 data: {
1981 action: 'qcld_rag_update_document',
1982 nonce: qcld_gemini_admin_data.ajax_nonce,
1983 id: id,
1984 title: title,
1985 content: content
1986 },
1987 success: function (res) {
1988 btn.prop('disabled', false).text('Save Changes');
1989 if (res.success) {
1990 $('#rag-edit-modal').hide();
1991 Swal.fire('Updated!', res.data, 'success').then(() => {
1992 location.reload();
1993 });
1994 } else {
1995 Swal.fire('Error', res.data, 'error');
1996 }
1997 }
1998 });
1999 });
2000 }
2001 // Delete Document
2002 $('.qcl-openai').on('click', '.rag-delete-doc', function () {
2003 var id = $(this).data('id');
2004
2005 Swal.fire({
2006 title: 'Are you sure?',
2007 text: "You won't be able to revert this!",
2008 icon: 'warning',
2009 showCancelButton: true,
2010 confirmButtonColor: '#3085d6',
2011 cancelButtonColor: '#d33',
2012 confirmButtonText: 'Yes, delete it!'
2013 }).then((result) => {
2014 if (result.isConfirmed) {
2015 $.ajax({
2016 url: qcld_gemini_admin_data.ajax_url,
2017 type: 'POST',
2018 data: {
2019 action: 'qcld_rag_delete_document',
2020 nonce: qcld_gemini_admin_data.ajax_nonce,
2021 id: id
2022 },
2023 success: function (res) {
2024 if (res.success) {
2025 $('#rag-doc-' + id).remove();
2026 Swal.fire('Deleted!', res.data, 'success');
2027 } else {
2028 Swal.fire('Error', res.data, 'error');
2029 }
2030 }
2031 });
2032 }
2033 })
2034 });
2035
2036 $('.qcl-openai').on('click', '#qcld_check_connection', function(){
2037 jQuery('#rotationloader').css('display','inline-block');
2038 $.ajax({
2039 url: qcld_gemini_admin_data.ajax_url,
2040 type:'POST',
2041 data: ({action : 'openai_troubleshooting',nonce:qcld_gemini_admin_data.ajax_nonce}),
2042 success: function(data){
2043
2044 $('#result').html(data);
2045 Swal.fire({
2046 title: data.title,
2047 html: data.msg,
2048 width: 450,
2049 icon: data.icon,
2050 confirmButtonText: 'Got it',
2051 customClass: 'connection-modal',
2052 })
2053 jQuery('#rotationloader').css('display','none');
2054 // location.reload();
2055 }
2056 });
2057 })
2058 $(document).on('click', '.ai-provider-card', function () {
2059 var selected = $(this).data('provider');
2060 console.log('Provider changed to: ' + selected);
2061 $('.ai-provider-card').removeClass('active');
2062 $(this).addClass('active');
2063 $('#ai-provider-selector').val(selected);
2064 $('.ai-settings-provider').hide();
2065 $('#' + selected + '-settings').show();
2066 $('#rag-settings').hide(); // Ensure RAG is hidden when switching providers
2067 });
2068
2069 // Avatar Location card click handler
2070 $(document).on('click', '.avatar-location-card', function () {
2071 var location = $(this).data('location');
2072 $('.avatar-location-card').removeClass('active');
2073 $(this).addClass('active');
2074 $('#qcld-avatar-location').val(location);
2075 });
2076
2077 if (window.location.hash.indexOf('#ai-knowledge-base-tab') === 0) {
2078 $('.ai-settings-provider').hide();
2079 $('#rag-settings').show();
2080 }
2081
2082 $('#ai-knowledge-base-tab').on('click', function (e) {
2083 e.preventDefault();
2084 $('.ai-settings-provider').hide();
2085 $('#rag-settings').show();
2086 if (history.pushState) { history.pushState(null, null, '#ai-knowledge-base-tab'); }
2087 });
2088 // common Ai settings tab
2089 $('#qcld-common-ai-settings').on('click', function (e) {
2090 e.preventDefault();
2091 $('.ai-settings-provider').hide();
2092 $('#common-ai-settings').show();
2093 if (history.pushState) { history.pushState(null, null, '#common-ai-settings'); }
2094 });
2095 $('#ai-knowledge-base-tab-openai').on('click', function (e) {
2096 e.preventDefault();
2097 $('.ai-settings-provider').hide();
2098 $('#rag-settings').show();
2099 if (history.pushState) { history.pushState(null, null, '#ai-knowledge-base-tab'); }
2100 });
2101 });
2102
2103 $(document).on('click', '.qcld_botopenai_generate_image', function (e) {
2104 var qcld_seo_button = $(this);
2105 var qcld_seo_prompt = $('#prompt').val();
2106 var qcld_seo_artist = $('#artist').val();
2107 var qcld_seo_art_style = $('#art_style').val();
2108 var qcld_seo_photography_style = $('#photography_style').val();
2109 var qcld_seo_lighting = $('#lighting').val();
2110 var qcld_seo_subject = $('#subject').val();
2111 var qcld_seo_camera_settings = $('#camera_settings').val();
2112 var qcld_seo_composition = $('#composition').val();
2113 var qcld_seo_resolution = $('#resolution').val();
2114 var qcld_seo_color = $('#color').val();
2115 var qcld_seo_special_effects = $('#special_effects').val();
2116 var qcld_seo_img_size = $('#img_size').val();
2117 var qcld_seo_num_images = $('#num_images').val();
2118
2119
2120 if(qcld_seo_prompt === ''){
2121 alert('Something went wrong');
2122 }else{
2123
2124 var qcld_seo_post_status = $('.qcld_seo-post-status:checked').val();
2125 var qcld_seo_schedule = $('.qcld_seo-schedule-post').val();
2126
2127 var data = {
2128 qcld_seo_prompt: qcld_seo_prompt,
2129 qcld_seo_artist: qcld_seo_artist,
2130 qcld_seo_art_style: qcld_seo_art_style,
2131 qcld_seo_photography_style: qcld_seo_photography_style,
2132 qcld_seo_lighting: qcld_seo_lighting,
2133 qcld_seo_subject: qcld_seo_subject,
2134 qcld_seo_camera_settings: qcld_seo_camera_settings,
2135 qcld_seo_composition: qcld_seo_composition,
2136 qcld_seo_resolution: qcld_seo_resolution,
2137 qcld_seo_color: qcld_seo_color,
2138 qcld_seo_special_effects: qcld_seo_special_effects,
2139 qcld_seo_img_size: qcld_seo_img_size,
2140 qcld_seo_num_images: qcld_seo_num_images,
2141 action: 'qcld_openai_image_generate',
2142 nonce: qcld_gemini_admin_data.ajax_url,
2143 };
2144
2145 $.ajax({
2146 url: qcld_gemini_admin_data.ajax_url,
2147 data: data,
2148 type: 'POST',
2149 dataType: 'JSON',
2150 beforeSend: function(){
2151 qcld_seo_button.attr('disabled','disabled');
2152 qcld_seo_button.append('<span class="spinner"></span>');
2153 qcld_seo_button.find('.spinner').css('visibility','unset');
2154 },
2155 success: function (res){
2156 qcld_seo_button.removeAttr('disabled');
2157 qcld_seo_button.find('.spinner').remove();
2158 if(res.status === 'success'){
2159 // window.location.href = qcld_seo_bulk_content + '&qcld_seo_track='+res.id
2160 $('#qcld_seo-tab-generated-text').html( res.html );
2161 }
2162 else{
2163 alert('Something went wrong');
2164 }
2165 },
2166 error: function (){
2167 qcld_seo_button.removeAttr('disabled');
2168 qcld_seo_button.find('.spinner').remove();
2169 alert('Something went wrong');
2170 }
2171 })
2172 }
2173 });
2174 $(document).on('click', '.qcld_botopenai_generate_image_download', function (e) {
2175 e.preventDefault();
2176
2177 var url = $(this).find("img").attr('src');
2178 console.log(url)
2179 var qcld_seo_button = $(this);
2180 var image_url = $(this).find('img').attr('src');
2181 var image_page_url = $(this).find('img').attr('src');
2182 var photographer = $(this).find('img').data('photographer');
2183 var q = '';
2184 var data = {
2185 qcld_seo_openai_images_upload : "1",
2186 image_url : image_url,
2187 image_src_page : image_page_url,
2188 image_user : photographer,
2189 q : q,
2190 action : 'qcld_openai_image_generate_url'
2191 };
2192 $.ajax({
2193 url: qcld_gemini_admin_data.ajax_url,
2194 data: data,
2195 type: 'POST',
2196 dataType: 'JSON',
2197 beforeSend: function(){
2198 qcld_seo_button.removeAttr('disabled').removeClass("uploading").find('.qcld_seo_msg').remove();
2199 qcld_seo_button.attr('disabled','disabled');
2200 qcld_seo_button.addClass('uploading').find('.qcld_seo_download img').replaceWith('');
2201 },
2202 success: function ( res ){
2203 console.log(res.data.html);
2204 qcld_seo_button.find('.qcld_seo_download img').replaceWith('<p class="qcld_seo_msg">'+res.data.html+'<p>' );
2205 const newBlock = wp.blocks.createBlock( "core/image", {
2206 id: res.data.attachment_id,
2207 url: res.data.url,
2208 width: res.data.width,
2209 height: res.data.height,
2210 sizeSlug: res.data.size,
2211 alt: '',
2212 title: '',
2213 caption: '',
2214 });
2215 wp.data.dispatch("core/editor").insertBlocks(newBlock);
2216 },
2217 error: function (){
2218 qcld_seo_button.removeAttr('disabled');
2219 }
2220 })
2221
2222 });
2223
2224 $(document).on('click','#qcld_article_keyword_suggestion',function(e){
2225 var qcld_keyword_suggestion = $('#qcld_article_keyword_suggestion_mf').val();
2226 var qcld_keyword_number = $('#qcld_keyword_number').val();
2227 var qcld_article_language = $('#qcld_article_language').val();
2228 var qcld_article_number_of_heading = $('#qcld_article_number_of_heading').val();
2229 var qcld_article_heading_tag = $('#qcld_article_heading_tag').val();
2230 var qcld_article_heading_style = $('#qcld_article_heading_style').val();
2231 var qcld_article_heading_tone = $('#qcld_article_heading_tone').val();
2232 var qcld_article_heading_img = $('#qcld_article_heading_img').val();
2233 var qcld_article_heading_img = $("input[name=qcld_article_heading_img]:checked").val();
2234 var qcld_article_heading_tagline = $("input[name=qcld_article_heading_tagline]:checked").val();
2235 var qcld_article_heading_intro = $("input[name=qcld_article_heading_intro]:checked").val();
2236 var qcld_article_heading_conclusion = $("input[name=qcld_article_heading_conclusion]:checked").val();
2237 var qcld_article_label_anchor_text = $('#qcld_article_label_anchor_text').val();
2238 var qcld_article_target_url = $('#qcld_article_target_url').val();
2239 var qcld_article_target_label_cta = $('#qcld_article_target_label_cta').val();
2240 var qcld_article_cta_pos = $('#qcld_article_cta_pos').val();
2241 var qcld_article_label_keywords = $('#qcld_article_label_keywords').val();
2242 var qcld_article_label_word_to_avoid= $('#qcld_article_label_word_to_avoid').val();
2243 var qcld_article_label_keywords_bold= $("input[name=qcld_article_label_keywords_bold]:checked").val();
2244 var qcld_article_heading_faq = $("input[name=qcld_article_heading_faq]:checked").val();
2245 var qcld_article_img_size = $('#qcld_article_img_size').val();
2246
2247 $('#qcld_article_keyword_suggestion').addClass('spinning');
2248 $('#qcld_article_keyword_suggestion').prop("disabled",true);
2249 $('#linkbait_article_keyword_data').html('');
2250 $.ajax({
2251 url: qcld_gemini_admin_data.ajax_url,
2252 method: 'POST',
2253 data: {
2254 'action': 'openai_keyword_suggestion_content',
2255 'keyword' : qcld_keyword_suggestion,
2256 'keyword_number' : qcld_keyword_number,
2257 'qcld_article_language' : qcld_article_language,
2258 'qcld_article_number_of_heading' : qcld_article_number_of_heading,
2259 'qcld_article_heading_tag' : qcld_article_heading_tag,
2260 'qcld_article_heading_style' : qcld_article_heading_style,
2261 'qcld_article_heading_tone' : qcld_article_heading_tone,
2262 'qcld_article_heading_img' : qcld_article_heading_img,
2263 'qcld_article_heading_tagline' : qcld_article_heading_tagline,
2264 'qcld_article_heading_intro' : qcld_article_heading_intro,
2265 'qcld_article_heading_conclusion' : qcld_article_heading_conclusion,
2266 'qcld_article_label_anchor_text' : qcld_article_label_anchor_text,
2267 'qcld_article_target_url' : qcld_article_target_url,
2268 'qcld_article_target_label_cta' : qcld_article_target_label_cta,
2269 'qcld_article_cta_pos' : qcld_article_cta_pos,
2270 'qcld_article_label_keywords' : qcld_article_label_keywords,
2271 'qcld_article_label_word_to_avoid': qcld_article_label_word_to_avoid,
2272 'qcld_article_label_keywords_bold': qcld_article_label_keywords_bold,
2273 'qcld_article_heading_faq' : qcld_article_heading_faq,
2274 'qcld_article_img_size' : qcld_article_img_size,
2275 //'selectedlanguage': selectedlanguage,
2276 },
2277 dataType: 'json',
2278 success: function(response) {
2279 //$('#linkbait_keyword_data').append(response.keywords);
2280 $('#qcld_article_keyword_suggestion').prop("disabled",false);
2281 $('#qcld_article_keyword_suggestion').removeClass('spinning');
2282 $('#linkbait_article_keyword_data').html('<div class="qcld_copied-content-wrap"><div class="qcld_copied-content_text btn d-none link-success">Copied</div><a class="btn btn-sm btn-secondary qcld-copied-content_text"><span class="dashicons dashicons-admin-page"></span></a></div><textarea id="qcld_content_result_msg" style="height: 20rem">' + response.keywords +'</textarea>');
2283 $('#linkbait_article_keyword_data').append('<div class="qcld_content_result_wrap"><div class="qcld_rewrite_result_count">' + response.keywords.split(" ").length +'</div></div>');
2284
2285 $('#qcld_content_result_msg').focus();
2286 $('#qcld_content_result_msg').focusout();
2287 }
2288 });
2289
2290
2291
2292 });
2293
2294 $(document).on('click', '.ai-provider-card', function() {
2295 var selected = $(this).data('provider');
2296 $('.ai-provider-card').removeClass('active');
2297 $(this).addClass('active');
2298 $('#ai-provider-selector').val(selected);
2299 $('.ai-settings-provider').hide();
2300 $('#' + selected + '-settings').show();
2301 });
2302
2303 $('#is_rate_limiting_enabled').on('change', function () {
2304 if ($(this).is(":checked")) {
2305 $('#rate_limit_settings').show();
2306 $('.rate-limit-input').prop('disabled', false);
2307 $('.rate-limit-timeframe').prop('disabled', false);
2308 } else {
2309 $('#rate_limit_settings').hide();
2310 $('.rate-limit-input').prop('disabled', true);
2311 $('.rate-limit-timeframe').prop('disabled', true);
2312 }
2313 });
2314 $('.qcl-openai').on('click', '#qcld_openai_rate_limit_save_setting', function () {
2315 console.log('Saving rate limit settings...');
2316 if ($('#is_rate_limiting_enabled').is(":checked")) {
2317 var is_rate_limiting_enabled = 1;
2318 } else {
2319 var is_rate_limiting_enabled = 0;
2320 }
2321 var rate_limits = {};
2322 var rate_limit_timeframes = {};
2323 // Collect rate limits for each role
2324 $('.rate-limit-input').each(function () {
2325 var role = $(this).attr('id').replace('rate_limit_', '');
2326 var limit = $(this).val();
2327 rate_limits[role] = limit;
2328 rate_limit_timeframes[role] = $('#rate_limit_timeframe_' + role).val();
2329 });
2330 $.ajax({
2331 url: ajax_object.ajax_url,
2332 type: 'POST',
2333 data: ({
2334 action: 'rate_limit_settings_option',
2335 nonce: ajax_object.ajax_nonce,
2336 is_rate_limiting_enabled: is_rate_limiting_enabled,
2337 rate_limits: rate_limits,
2338 rate_limit_timeframes: rate_limit_timeframes
2339 }),
2340 success: function (data) {
2341 $('#result').html(data);
2342 Swal.fire({
2343 title: 'Your settings are saved.',
2344 html: '<p style=font-size:14px>Please clear your browser <b>cache</b> and <b>cookies</b> both and reload the front end before testing. Alternatively, you can launch a new browser window in <b>Incognito</b>/Private mode (Ctrl+Shift+N in chrome) to test.</p>',
2345 width: 450,
2346 icon: 'success',
2347 confirmButtonText: 'Got it',
2348 confirmButtonWidth: 100,
2349 confirmButtonClass: 'btn btn-lg'
2350 })
2351 // location.reload();
2352 }
2353 });
2354 })
2355 });
2356
2357 document.addEventListener('DOMContentLoaded', function() {
2358 if(localStorage.getItem('qcld_general_settings_notice_closed') === '1') {
2359 var notice = document.querySelector('.qcld-general-settings-connection-notic');
2360 if(notice) notice.style.display = 'none';
2361 }
2362 });
2363
2364
2365
2366
2367 function qcld_wpbot_languageChange_from_center(langCode) {
2368 switch (langCode) {
2369 case "not_mine":
2370 setTimeout(() => {
2371 jQuery("#waring-message").show()
2372 jQuery("#waring-message").html('<span style="padding: 7px; color: #fff; background: #dc3545;border-radius:5px"> ** Please change the texts below to your language manually so that the ChatBot can speak in your language</span><br>')
2373 }, 500);
2374
2375 break;
2376 default:
2377 setTimeout(() => {
2378 jQuery("#waring-message").hide()
2379 }, 500);
2380 jQuery.ajax({
2381 url: qcld_gemini_admin_data.ajax_url, // e.g., 'wp-admin/admin-ajax.php'
2382 type: 'POST',
2383 data: {
2384 'action': 'qcld_change_language_from_center',
2385 'language' : langCode,
2386 'nonce': qcld_gemini_admin_data.ajax_nonce, // Include nonce for security
2387 },// Expecting JSON response from PHP
2388 })
2389 .done(function(response) {
2390 // If PHP returns a JSON object
2391 if (response.success === false || response.error) {
2392 } else {
2393 jQuery.each( response.data.data, function(key, value) {
2394 if (Array.isArray( value )) {
2395 const textareas = jQuery('.wp-chatbot-lng-items').find('input[name="' + key + '[]"]');
2396 textareas.each(function(index) {
2397 if (index < value.length) {
2398 jQuery(this).val(value[index]);
2399 }
2400 });
2401 }else{
2402 jQuery('input[name="' + key + '"]').val(value);
2403 }
2404 });
2405 jQuery("#submit-language").click();
2406 // processResponse(response.data);
2407 }
2408 })
2409 .fail(function(jqXHR, textStatus, errorThrown) {
2410 console.error('AJAX Fail:', textStatus, errorThrown);
2411 });
2412 }
2413 }
2414
2415
2416