PluginProbe
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services / 8.5.5
WPBot – AI ChatBot for Live Support, Lead Generation, WordPress Automation, AI Services v8.5.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.5.5, at js/qcld-wp-chatbot-admin.js

2,314 lines 126.0 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
5 var sbdstoredNoticeId = localStorage.getItem('qcld_wpbot_Notice_set');
6 var qcld_chatbot_Notice_time_set = localStorage.getItem('qcld_wpbot_Notice_time_set');
7 var notice_current_time = Math.round(new Date().getTime() / 1000);
8 if ('promotion-wpchatbot' == sbdstoredNoticeId && qcld_chatbot_Notice_time_set > notice_current_time ) {
9 $('#promotion-wpchatbot').css({'display': 'none'});
10 }
11 $(document).on('click', '#promotion-wpchatbot .notice-dismiss', function(e){
12 var currentDom = $(this);
13 var currentWrap = currentDom.closest('.notice');
14 currentWrap.css({'display': 'none'});
15 localStorage.setItem('qcld_wpbot_Notice_set', 'promotion-wpchatbot');
16 var ts = Math.round(new Date().getTime() / 1000);
17 var tsYesterday = ts + (24 * 3600);
18 localStorage.setItem('qcld_wpbot_Notice_time_set', tsYesterday);
19 });
20
21
22 [].slice.call(document.querySelectorAll('.wp-chatbot-tabs')).forEach(function (el) {
23
24 new CBPFWTabs(el);
25
26 });
27
28 if(localStorage.getItem('tabData')){
29
30 $(".content-wrap section").removeClass('content-current');
31
32 $(".wp-chatbot-tabs nav ul li").each(function (index, elm) {
33
34 if(localStorage.getItem('tabData')==$(this).attr('tab-data')){
35
36 $(this).addClass('tab-current');
37
38 $(".content-wrap section").eq(index).addClass('content-current');
39
40 }else{
41
42 $(this).removeClass('tab-current');
43
44 }
45
46 })
47
48 /*$(".content-wrap section").each(function (el) {
49
50
51
52 });*/
53
54 }
55
56 $(".wp-chatbot-tabs nav ul li a ").on('click',function () {
57
58 // Remove others tab and contents
59
60 $(".wp-chatbot-tabs nav ul li").removeClass('tab-current');
61
62 $(".content-wrap section").removeClass('content-current');
63
64 // add current tab and contents
65
66 $(this).parent().addClass('tab-current');
67
68 $(".content-wrap section").eq($(".wp-chatbot-tabs nav ul li a ").index(this)).addClass('content-current');
69
70 //Change action url , set add localStorge and url change.
71
72 $('#wp-chatbot-admin-form').attr('action',$(this).attr('href'));
73
74 localStorage.setItem('tabData',$(this).parent().attr('tab-data'));
75
76 window.history.pushState("changeUrl", "wpwBot", $(this).attr('href'));
77
78
79
80 });
81 $('.wp-chatbot-hours input').timepicker({ 'timeFormat': 'H:i' });
82 //Drag and drop support builders
83 $('#wp-chatbot-support-builder').sortable({
84 cursor: 'move',
85 revert: true,
86 start: function (e, ui) {
87 $(ui.item).find('textarea').each(function () {
88 tinymce.execCommand('mceRemoveEditor', false, $(this).attr('id'));
89 });
90 },
91 stop: function (e, ui) {
92 $(ui.item).find('textarea').each(function () {
93 tinymce.execCommand('mceAddEditor', true, $(this).attr('id'));
94 });
95 }
96 });
97 $("#wp-chatbot-support-builder" ).disableSelection();
98
99 $('#wp_chatbot_floatingiconbg_color').wpColorPicker();
100 if( (document.getElementById('skip_wp_greetings') != null)){
101
102 document.getElementById('skip_wp_greetings').addEventListener('change', (event) => {
103 if (event.currentTarget.checked) {
104 document.getElementById("skip_wp_greetings_donot_show_menu").checked = false;
105 document.getElementById("show_menu_after_greetings").checked = false;
106 var intetns = document.getElementsByClassName("qc_wp_intent_select");
107 Array.prototype.map.call(intetns, (x) => x.style = "display:none" )
108 }
109 })
110 document.getElementById('skip_wp_greetings_donot_show_menu').addEventListener('change', (event) => {
111 if (event.currentTarget.checked) {
112 document.getElementById("skip_wp_greetings").checked = false;
113 document.getElementById("show_menu_after_greetings").checked = false;
114 var intetns = document.getElementsByClassName("qc_wp_intent_select");
115 Array.prototype.map.call(intetns, (x) => x.style = "display:none" )
116 }
117 })
118 document.getElementById('show_menu_after_greetings').addEventListener('change', (event) => {
119 if (event.currentTarget.checked) {
120 document.getElementById("skip_wp_greetings").checked = false;
121 var intetns = document.getElementsByClassName("qc_wp_intent_select");
122 Array.prototype.map.call(intetns, (x) => x.style = "display:none" )
123 document.getElementById("skip_wp_greetings_donot_show_menu").checked = false;
124 }
125 })
126
127 }
128 $('#disable_wp_chatbot_site_search').on('change', function() {
129
130 if($(this).is(':checked')) {
131 $('#enable_wp_chatbot_post_content').prop('checked', false);
132 }
133 });
134 jQuery("#qcld-show-more-wrapper-box").on('click','.qcld-show-more-show-more', function () {
135 if(jQuery(".qcld-show-more-text").hasClass("qcld-show-more-show-more-height")) {
136 jQuery(this).html('<i class="dashicons dashicons-remove" aria-hidden="true"></i>');
137 } else {
138 jQuery(this).html('<i class="dashicons dashicons-plus-alt" aria-hidden="true"></i>');
139 }
140
141 jQuery(".qcld-show-more-text").toggleClass("qcld-show-more-show-more-height");
142 });
143 });
144
145 /*
146
147 Support building from admin panel.
148
149 */
150
151 //Add Support query.
152 var supportBlocks=$("#add-more-support-query").parent().parent().parent().find('textarea').length;
153 $("#add-more-support-query").on('click',function () {
154 console.log('blocks :',supportBlocks);
155 supportBlocks=parseInt(supportBlocks+1)
156 var textarea_id='chatbot-query-builder'+supportBlocks;
157
158 var firsBlock='<div class="row">'+
159
160 '<div class="col-xs-12">'+
161 '<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>'+
162
163 '<div class="cxsc-settings-blocks">'+
164
165 '<p class="qc-opt-dcs-font qc-opt-dcs-font-faq">FAQ Query </p>'+
166
167 '<input type="text" class="form-control" name="support_query[]" placeholder="FAQ Query">'+
168
169 '<p class="qc-opt-dcs-font"><br><strong>Support answer</strong></p>'+
170
171 '<textarea id="'+textarea_id+'" name="support_ans[]" class="form-control chatbot-query-builder" cols="30" rows="2"></textarea>'+
172
173 '</div>'+
174
175 '</div>'+
176
177 '</div>';
178
179 $(".block-inner").append(firsBlock);
180 setTimeout(function (e) {
181 //quicktags({id : ed_id,buttons:"strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,dfw"});
182 tinyMCE.execCommand('mceAddEditor', false, textarea_id);
183 },500);
184
185 });
186
187 //Remove Support query.
188
189 $(document).on('click','.wp-chatbot-remove-support',function () {
190
191 if(confirm('Are you sure to delete this support query block?')){
192
193 $(this).parent().parent().remove();
194
195 }
196
197 });
198
199
200 //for downloading gc-client
201 $('#qc_wpbot_gc_download').on('click', function(e){
202 e.preventDefault();
203 $.ajax(
204 {
205 type: 'POST', // 'POST' here so that _upload_ progress _also_ makes sense;
206 // Change to 'GET' if you need.
207 url: qcld_gemini_admin_data.ajax_url, data: {
208 'action': 'qcld_wp_chatbot_gc_client_download',
209 'nonce': qcld_gemini_admin_data.ajax_nonce,
210 },
211 beforeSend: function()
212 {
213 $('.qcld_wpbot_download_statuses').append('<p>Downloading...</p>');
214
215 },
216 success: function(data){
217 $('.qcld_wpbot_download_statuses').append('<p>'+data.content+'</p>');
218 if(data.status=='success'){
219
220 $.ajax(
221 {
222 type: 'POST', // 'POST' here so that _upload_ progress _also_ makes sense;
223 // Change to 'GET' if you need.
224 url: qcld_gemini_admin_data.ajax_url, data: {
225 'action': 'qcld_wp_chatbot_gc_client_extract',
226 'nonce': qcld_gemini_admin_data.ajax_nonce
227 },
228 beforeSend: function()
229 {
230 $('.qcld_wpbot_download_statuses').append('<p>Extracting files...</p>');
231
232 },
233 success: function(data){
234 $('.qcld_wpbot_download_statuses').append('<p>'+data.content+'</p>');
235 if(data.status=='success'){
236 $('.qcld_wpbot_download_statuses').append('<p>Done.</p>');
237 }
238
239 }
240 });
241 }
242
243 }
244 });
245
246 })
247
248
249 /*
250
251 Notification building from admin panel.
252
253 */
254
255 //Add Support query.
256 var notification_blocks=$(this).parent().parent().parent().find('.notification-block-inner').length;
257 $("#add-more-notification-message").on('click',function () {
258 notification_blocks=parseInt(notification_blocks+1);
259 var notification_text_area_id='notification_text_area_'+notification_blocks;
260 tinyMCE.triggerSave();
261 var lastChildVal=$(this).parent().parent().parent().find('.notification-block-inner').children('.row').last().find('textarea').val();
262
263 var firsBlock='<div class="row">'+
264
265 '<div class="col-xs-12">'+
266
267 '<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>'+
268
269 '<div class="cxsc-settings-blocks">'+
270
271 '<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>'+
272
273 '</div><br>'+
274
275 '</div>'+
276
277 '</div>';
278
279 if(lastChildVal!=""){
280
281 $(".notification-block-inner").append(firsBlock);
282 setTimeout(function (e) {
283 //quicktags({id : ed_id,buttons:"strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,dfw"});
284 tinyMCE.execCommand('mceAddEditor', false, notification_text_area_id);
285 },500);
286
287 } else{
288
289 alert('Please fill up last notification message first');
290
291 }
292 });
293
294 //Remove Support query.
295
296 $(document).on('click','.wp-chatbot-remove-notification',function () {
297
298 if(confirm('Are you sure to delete this support query block?')){
299
300
301
302 var langItems=$(this).parent().parent().parent().children('.row');
303
304 if(langItems.length<=3){
305
306 alert('At least one item is required.');
307
308 }else{
309
310 $(this).parent().parent().remove();
311
312 }
313
314 }
315
316 });
317
318 /*
319
320 Multiple option for Language setting
321
322 */
323
324
325
326 $(document).on('click','.wp-chatbot-lng-item-add',function () {
327
328 //checking last input is not empty
329
330 var lastChildVal=$(this).parent().parent().parent().find('.wp-chatbot-lng-items').children('.row').last().find('input').val();
331
332 if(lastChildVal!=""){
333
334 var child=$(this).parent().parent().parent().find('.wp-chatbot-lng-items').children('.row').last().clone();
335
336 child.find('input').val("");
337
338 } else{
339
340 alert('Please fill up last item first');
341
342 }
343
344 $(this).parent().parent().parent().find('.wp-chatbot-lng-items').append(child);
345
346 });
347
348
349
350 $(document).on('click','.wp-chatbot-lng-item-remove',function () {
351
352 var langItems=$(this).parent().parent().parent().children('.row');
353
354 if(langItems.length<=1){
355
356 alert('At least one item is required.');
357
358 }else{
359
360 $(this).parent().parent().remove();
361
362 }
363
364
365
366 });
367
368 /***
369
370 * wpwBot Theme background
371
372 *
373
374 */
375
376 $(document).on('change','#qcld_wb_chatbot_change_bg',function (e) {
377
378 if($(this).is(':checked')){
379
380 $('.qcld-wp-chatbot-board-bg-container').show();
381
382 }else{
383
384 $('.qcld-wp-chatbot-board-bg-container').hide();
385
386 }
387
388 });
389
390
391
392 //Reset to defualt all options
393
394 $('#qcld-wp-chatbot-reset-option').on('click',function () {
395
396 var returnDefualt = confirm("Are you sure you want to reset all options to Default? Resetting Will Delete All Saved Settings, Custom Messages, Languages etc.");
397
398 if (returnDefualt == true) {
399
400 var data = {
401
402 'action': 'qcld_wb_chatboot_delete_all_options',
403 'wpnonce': qcld_gemini_admin_data.ajax_nonce,
404 };
405
406 jQuery.post(qcld_gemini_admin_data.ajax_url, data, function (response) {
407
408 alert(response);
409
410 window.location.reload();
411
412 });
413
414 }
415
416 });
417
418 var stopWordsList={
419
420 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",
421
422 arabic:"فى,في,كل,ل�
423 ,لن,له,�
424 ن,هو,هي,قوة,ك�
425 ا,لها,�
426 نذ,وقد,ولا,نفسه,لقاء,�
427 قابل,هناك,وقال,وكان,نهاية,وقالت,وكانت,للا�
428
429 ,فيه,كل�
430 ,لكن,وفي,وقف,ول�
431 ,و�
432 ن,وهو,وهي,يو�
433 ,فيها,�
434 نها,�
435 ليار,لوكالة,يكون,ي�
436 كن,�
437 ليون,حيث,اكد,الا,ا�
438 ا,ا�
439 س,السابق,التى,التي,اكثر,ايار,ايضا,ثلاثة,الذاتي,الاخيرة,الثاني,الثانية,الذى,الذي,الان,ا�
440 ا�
441 ,ايا�
442 ,خلال,حوالى,الذين,الاول,الاولى,بين,ذلك,دون,حول,حين,الف,الى,انه,اول,ض�
443 ن,انها,ج�
444 يع,ال�
445 اضي,الوقت,ال�
446 قبل,اليو�
447 ,ـ,ف,و,و6,قد,لا,�
448 ا,�
449 ع,�
450 ساء,هذا,واحد,واضاف,واضافت,فان,قبل,قال,كان,لدى,نحو,هذه,وان,واكد,كانت,واوضح,�
451 ايو,ب,ا,أ,،,عشر,عدد,عدة,عشرة,عد�
452 ,عا�
453 ,عا�
454 ا,عن,عند,عند�
455 ا,على,عليه,عليها,زيارة,سنة,سنوات,ت�
456 ,ضد,بعد,بعض,اعادة,اعلنت,بسبب,حتى,اذا,احد,اثر,برس,باس�
457 ,غدا,شخصا,صباح,اطار,اربعة,اخرى,بان,اجل,غير,بشكل,حاليا,بن,به,ث�
458 ,اف,ان,او,اي,بها,صفر",
459
460 bulgarian:"а,автентичен,аз,ако,ала,бе,без,беше,би,бивш,бивша,бившо,бил,била,били,било,благодаря,близо,бъдат,бъде,бя�
461 а,в,вас,ваш,ваша,вероятно,вече,взема,ви,вие,винаги,внимава,време,все,всеки,всички,всичко,всяка,във,въпреки,вър�
462 у,г,ги,главен,главна,главно,глас,го,година,години,годишен,д,да,дали,два,двама,двамата,две,двете,ден,днес,дни,до,добра,добре,добро,добър,докато,докога,дори,досега,доста,друг,друга,други,е,евтин,едва,един,една,еднаква,еднакви,еднакъв,едно,екип,ето,живот,за,забавям,зад,заедно,заради,засега,заспал,затова,защо,защото,и,из,или,им,има,имат,иска,й,каза,как,каква,какво,както,какъв,като,кога,когато,което,които,кой,който,колко,която,къде,където,към,лесен,лесно,ли,лош,м,май,малко,ме,между,мек,мен,месец,ми,много,мнозина,мога,могат,може,мокър,моля,момента,му,н,на,над,назад,най,направи,напред,например,нас,не,него,нещо,нея,ни,ние,никой,нито,нищо,но,нов,нова,нови,новина,някои,някой,няколко,няма,обаче,около,освен,особено,от,отгоре,отново,още,пак,по,повече,повечето,под,поне,поради,после,почти,прави,пред,преди,през,при,пък,първата,първи,първо,пъти,равен,равна,с,са,сам,само,се,сега,си,син,скоро,след,следващ,сме,смя�
463 ,според,сред,срещу,сте,съм,със,също,т,тази,така,такива,такъв,там,твой,те,тези,ти,т.н.,то,това,тогава,този,той,толкова,точно,три,трябва,тук,тъй,тя,тя�
464 ,у,утре,�
465 аресва,�
466 иляди,ч,часа,че,често,чрез,ще,щом,юмрук,я,як",
467
468 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",
469
470 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",
471
472 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",
473
474 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",
475
476 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",
477
478 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",
479
480 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",
481
482 hindi:"�
483 त,�
484 पना,�
485 पनी,�
486 पने,�
487 भी,�
488 दर,आदि,आप,इत्यादि,इन ,इनका,इन्हीं,इन्हें,इन्हों,इस,इसका,इसकी,इसके,इसमें,इसी,इसे,उन,उनका,उनकी,उनके,उनको,उन्हीं,उन्हें,उन्हों,उस,उसके,उसी,उसे,एक,एवं,एस,ऐसे,और,कई,कर,करता,करते,करना,करने,करें,कहते,कहा,का,काफ़ी,कि,कितना,किन्हें,किन्हों,किया,कि,कि,किसी,किसे,की,कु,कु,के,को,को,कौ,कौनसा,गया,घर,जब,जहाँ,जा,जितना,जि,जिन्हें,जिन्हों,जि,जिसे,जीधर,जैसा,जैसे,जो,तक,तब,तरह,ति,तिन्हें,तिन्हों,ति,तिसे,तो,था,थी,थे,दबारा,दिया,दुसरा,दूसरे,दो,द्वारा,,नके,नहीं,ना,निहायत,नीचे,ने,पर,पहले,पूरा,पे,फि,बनी,बही,बहु,बा,बाला,बिलकु,भी,भीतर,मगर,मानो,मे,में,यदि,यह,यहाँ,यही,या,यि,ये,रखें,रहा,रहे,ऱ्वासा,लि,लिये,लेकि,,वग़ैरह,वर्,वह,वहाँ,वहीं,वाले,वु,वे,सकता,सकते,सबसे,सभी,सा,साबु,सा,सारा,से,सो,सं,ही,हु,हु,हु,है,हैं,हो,होता,होती,होते,होना,होने",
489
490 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",
491
492 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",
493
494 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,è",
495
496 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,å",
497
498 persian:"نداشته,شناسی,خواهی�
499 ,آباد,داشتن,نظیر,ه�
500 چون,باره,نکرده,شان,سابق,هفت,دانند,جایی,بی,جز,زیرِ,رویِ,سریِ,تویِ,جلویِ,پیشِ,عقبِ,بالایِ,خارجِ,وسطِ,بیرونِ,سویِ,کنارِ,پاعینِ,نزدِ,نزدیکِ,دنبالِ,حدودِ,برابرِ,طبقِ,�
501 انندِ,ضدِّ,هنگا�
502 ِ,برایِ,�
503 ثلِ,باره,اثرِ,تولِ,علّتِ,س�
504 تِ,عنوانِ,قصدِ,روب,جدا,کی,که,چیست,هست,کجا,کجاست,کَی,چطور,کدا�
505 ,آیا,�
506 گر,چندین,یک,چیزی,دیگر,کسی,بعری,هیچ,چیز,جا,کس,هرگز,یا,تنها,بلکه,خیاه,بله,بلی,آره,آری,�
507 رسی,البتّه,لطفاً,ّه,انکه,وقتیکه,ه�
508 ین,پیش,�
509 دّتی,هنگا�
510 ی,�
511 ان,تان,براساس,شدند,ترین,ا�
512 روز,باشند,ندارد,چون,قابل,گوید,دیگری,ه�
513 ان,خواهند,قبل,آ�
514 ده,اکنون,تحت,طریق,گیری,جای,هنوز,چرا,البته,کنید,سازی,سو�
515 ,کن�
516 ,بلکه,زیر,توانند,ض�
517 ن,فقط,بودن,حق,آید,وقتی,اش,یابد,نخستین,�
518 قابل,خد�
519 ات,ا�
520 سال,تاکنون,�
521 انند,تازه,آورد,فکر,آنچه,نخست,نشده,شاید,چهار,جریان,پنج,ساخته,زیرا,نزدیک,برداری,کسی,ریزی,رفت,گردد,�
522 ثل,آ�
523 د,ا�
524 ,بهترین,دانست,ک�
525 تر,دادن,ت�
526 ا�
527 ی,جلوگیری,بیشتری,ای�
528 ,ناشی,چیزی,آنکه,بالا,بنابراین,ایشان,بعضی,دادند,داشتند,برخوردار,نخواهد,هنگا�
529 ,نباید,غیر,نبود,دیده,وگو,داری�
530 ,چگونه,بندی,خواست,فوق,ده,نوعی,هستی�
531 ,دیگران,ه�
532 چنان,سراسر,ندارند,گروهی,سعی,روزهای,آنجا,یکدیگر,کرد�
533 ,بیست,بروز,سپس,رفته,آورده,ن�
534 اید,باشی�
535 ,گویند,زیاد,خویش,ه�
536 واره,گذاشته,شش,تر,کل,ت�
537 ا�
538 ,بدون,�
539 یلیارد,بودند,طی,بسیاری,گذاری,دهند,گرفت,طور,بار,آنان,گفته,ش�
540 ا,گیرد,�
541 ختلف,بعد,درباره,دو�
542 ,دیروز,نه,برخی,چنین,توسط,ولی,اینکه,حتی,نشان,کنی�
543 ,کردن,شدن,بیش,جدید,چند,هیچ,نا�
544 ,اول,تواند,هایی,گرفته,روی,بسیار,بیشتر,شوند,سوی,�
545 یلیون,ه�
546 ین,دارند,بوده,داده,کردند,ه�
547 چنین,چه,داشت,راه,داشته,داد,استفاده,نیست,هزار,دهد,�
548 ن,بی,هستند,یکی,صورت,ه�
549 ه,اگر,پس,پیش,بین,ن�
550 ی,�
551 رد�
552 ,دیگر,باشد,آنها,�
553 ورد,او,خواهد,هر,اند,دو,باید,ا�
554 ا,یا,کرده,�
555 ا,دارد,کنند,ه�
556 ,وی,نیز,گفت,بود,بر,کند,تا,ای,شد,کرد,ها,خود,شده,شود,یک,آن,برای,های,با,را,است,این,�
557 ی,که,از,به,در,و",
558 polish:"ach,aj,albo,bardzo,bez,bo,być,ci,cię,ciebie,co,czy,daleko,dla,dlaczego,dlatego,do,dobrze,dok�
559 d,dość,dużo,dwa,dwaj,dwie,dwoje,dziś,dzisiaj,gdyby,gdzie,go,ich,ile,im,inny,ja,j�
560 ,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�
561 ,mam,mi,mn�
562 ,mnie,moi,mój,moja,moje,może,mu,my,na,nam,nami,nas,nasi,nasz,nasza,nasze,natychmiast,ni�
563 ,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�
564 ,sam,sama,się,sk�
565 d,tak,taki,tam,ten,to,tob�
566 ,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",
567
568 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",
569
570 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",
571
572 russian:"а,в,г,е,ж,и,к,м,о,с,т,у,я,бы,во,вы,да,до,ее,ей,ею,её,же,за,из,им,и�
573 ,ли,мы,на,не,ни,но,ну,н�
574 ,об,он,от,по,со,та,те,то,ту,ты,уж,без,был,вам,вас,ваш,вон,вот,все,всю,вся,всё,где,год,два,две,дел,для,его,ему,еще,ещё,или,ими,имя,как,кем,ком,кто,лет,мне,мог,мож,мои,мой,мор,моя,моё,над,нам,нас,наш,нее,ней,нем,нет,нею,неё,ни�
575 ,оба,она,они,оно,под,пор,при,про,раз,сам,си�
576 ,так,там,тем,те�
577 ,том,тот,тою,три,тут,уже,чем,что,эта,эти,это,эту,алло,буду,будь,бывь,была,были,было,быть,вами,ваша,ваше,ваши,ведь,весь,вниз,всем,все�
578 ,всею,года,году,даже,дву�
579 ,день,если,есть,зато,кого,кому,куда,лишь,люди,мало,меля,меня,мимо,мира,мной,мною,мочь,надо,нами,наша,наше,наши,него,нему,ниже,ними,один,пока,пора,пять,рано,сама,сами,само,саму,свое,свои,свою,себе,себя,семь,стал,суть,твой,твоя,твоё,тебе,тебя,теми,того,тоже,тому,туда,�
580 оть,�
581 отя,чаще,чего,чему,чтоб,чуть,этим,эти�
582 ,этой,этом,этот,более,будем,будет,будто,будут,ввер�
583 ,вдали,вдруг,везде,внизу,время,всего,всеми,всему,всюду,давно,даром,долго,друго,жизнь,занят,затем,зачем,здесь,иметь,какая,какой,когда,кроме,лучше,между,менее,много,могут,может,можно,мож�
584 о,назад,низко,нужно,одной,около,опять,очень,перед,позже,после,потом,почти,пятый,разве,рядом,самим,сами�
585 ,самой,самом,своей,свои�
586 ,сеаой,снова,собой,собою,такая,также,такие,такое,такой,тобой,тобою,тогда,тысяч,уметь,часто,через,чтобы,шесть,этими,этого,этому,близко,больше,будете,будешь,бывает,важная,важное,важные,важный,вокруг,восемь,всегда,второй,далеко,дальше,девять,десять,должно,другая,другие,други�
587 ,другое,другой,занята,занято,заняты,значит,именно,иногда,каждая,каждое,каждые,каждый,кругом,меньше,начала,нельзя,нибудь,никуда,ничего,обычно,однако,одного,отсюда,первый,потому,почему,просто,против,раньше,самими,самого,самому,своего,сейчас,сказал,совсем,теперь,только,третий,�
588 орошо,�
589 отеть,�
590 очешь,четыре,шестой,восьмой,впрочем,времени,говорил,говорит,девятый,десятый,кажется,конечно,которая,которой,которые,который,которы�
591 ,навер�
592 у,наконец,недавно,немного,нередко,никогда,однажды,посреди,сегодня,седьмой,сказала,сказать,сколько,слишком,сначала,спасибо,человек,двадцать,довольно,которого,наиболее,недалеко,особенно,отовсюду,двадцатый,миллионов,несколько,прекрасно,процентов,четвертый,двенадцать,непрерывно,пожалуйста,пятнадцать,семнадцать,тринадцать,двенадцатый,одиннадцать,пятнадцатый,семнадцатый,тринадцатый,шестнадцать,восемнадцать,девятнадцать,одиннадцатый,четырнадцать,шестнадцатый,восемнадцатый,девятнадцатый,действительно,четырнадцатый,многочисленная,многочисленное,многочисленные,многочисленный",
593
594 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",
595
596 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",
597
598 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",
599
600 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",
601
602 ukrainian:"a,б,в,г,е,ж,з,м,т,у,я,є,і,аж,ви,де,до,за,зі,ми,на,не,ну,н�
603 ,ні,по,та,ти,то,ту,ті,це,цю,ця,ці,чи,ще,що,як,їй,їм,ї�
604 ,її,або,але,ало,без,був,вам,вас,ваш,вже,все,всю,вся,від,він,два,дві,для,ким,мож,моя,моє,мої,міг,між,мій,над,нам,нас,наш,нею,неї,ни�
605 ,ніж,ній,ось,при,про,під,пір,раз,рік,сам,си�
606 ,сім,так,там,теж,тим,ти�
607 ,той,тою,три,тут,�
608 оч,�
609 то,цей,цим,ци�
610 ,час,щоб,яка,які,адже,буде,буду,будь,була,були,було,бути,вами,ваша,ваше,ваші,весь,вниз,вона,вони,воно,всею,всім,всі�
611 ,втім,геть,далі,дво�
612 ,день,дуже,зате,його,йому,каже,кого,коли,кому,крім,куди,лише,люди,мало,мати,мене,мені,миру,мною,може,нами,наша,наше,наші,ними,ніби,один,поки,пора,рано,року,році,сама,саме,саму,самі,свою,своє,свої,себе,собі,став,суть,така,таке,такі,твоя,твоє,твій,тебе,тими,тобі,того,тоді,тому,туди,�
613 оча,�
614 іба,цими,цієї,часу,чого,чому,який,яки�
615 ,якої,якщо,ім'я,інша,інше,інші,буває,будеш,більш,вгору,вміти,внизу,вісім,давно,даром,добре,довго,друго,дякую,життя,зараз,знову,какая,кожен,кожна,кожне,кожні,краще,ледве,майже,менше,могти,можна,назад,немає,нижче,нього,однак,п'ять,перед,поруч,потім,проти,після,років,самим,сами�
616 ,самій,свого,своєї,свої�
617 ,собою,справ,такий,також,тепер,тисяч,тобою,треба,тро�
618 и,усюди,усіма,�
619 очеш,цього,цьому,часто,через,шість,якого,іноді,інший,інши�
620 ,багато,будемо,будете,будуть,більше,всього,всьому,далеко,десять,досить,другий,дійсно,завжди,звідси,зовсім,кругом,кілька,людина,можуть,навіть,навіщо,нагорі,небудь,низько,ніколи,нікуди,нічого,обидва,одного,однієї,п'ятий,перший,просто,раніше,раптом,самими,самого,самому,сказав,скрізь,сьомий,третій,тільки,�
621 отіти,чотири,чудово,шостий,близько,важлива,важливе,важливі,вдалині,восьмий,говорив,дев'ять,десятий,зайнята,зайнято,зайняті,занадто,значить,навколо,нарешті,нерідко,повинно,посеред,початку,пізніше,сказала,сказати,скільки,спасибі,частіше,важливий,двадцять,дев'ятий,зазвичай,зайнятий,звичайно,здається,найбільш,не можна,недалеко,особливо,потрібно,спочатку,сьогодні,численна,численне,численні,відсотків,двадцятий,звідусіль,мільйонів,нещодавно,прекрасно,четвертий,численний,будь ласка,дванадцять,одинадцять,сімнадцять,тринадцять,безперервно,дванадцятий,одинадцятий,одного разу,п'ятнадцять,сімнадцятий,тринадцятий,шістнадцять,вісімнадцять,п'ятнадцятий,чотирнадцять,шістнадцятий,вісімнадцятий,дев'ятнадцять,чотирнадцятий,дев'ятнадцятий",
622
623 };
624
625 //change the to defualt Stop word language options
626
627 $('#qlcd_wp_chatbot_stop_words_name').on('change',function () {
628
629 var lang=$(this).val();
630
631 var stopWords=stopWordsList[lang];
632
633 $("#qlcd_wp_chatbot_stop_words").val(stopWords);
634
635
636
637 });
638
639 //Custom Icon
640
641 $('.qcld_chatbot_custom_icon_button').click(function(e) {
642
643 e.preventDefault();
644
645 var image = wp.media({
646
647 title: 'Custom Icon',
648
649 // mutiple: true if you want to upload multiple files at once
650
651 multiple: false
652
653 })
654
655 .open()
656
657 .on('select', function(e){
658
659 // This will return the selected image from the Media Uploader, the result is an object
660
661 var uploaded_image = image.state().get('selection').first();
662
663 var image_url = uploaded_image.toJSON().url;
664
665 // Let's assign the url value to the hidden field value and img src.
666
667 $('#wp_chatbot_custom_icon_src').attr('src',image_url);
668
669 $('#wp_chatbot_custom_icon_path').val(image_url);
670
671 });
672
673 });
674
675
676 $('#qc_wpbot_df_status').on('click', function(e){
677 e.preventDefault();
678
679 $.ajax(
680 {
681 type: 'POST', // 'POST' here so that _upload_ progress _also_ makes sense;
682 // Change to 'GET' if you need.
683 url: qcld_gemini_admin_data.ajax_url, data: {
684 'action': 'qcld_wp_df_api_call',
685 'dfquery': 'hi',
686 'nonce': qcld_gemini_admin_data.ajax_nonce,
687 'sessionid': 'wpwBot_df_201sdf8071'
688 },
689 beforeSend: function()
690 {
691 $('.qcwp_df_status').append('<p>Connecting...</p>');
692
693 },
694 success: function(data){
695 var response = $.parseJSON(JSON.parse(data));
696 if(typeof response.responseId !== "undefined"){
697 $('.qcwp_df_status').html('<p>Dialogflow is connected successfully!</p>');
698 }else{
699 $('.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>');
700 }
701
702 }
703 });
704
705 })
706
707 //Custom Agent Icon
708
709 $('.wp_chatbot_custom_agent_button').click(function(e) {
710
711 e.preventDefault();
712
713 var image = wp.media({
714
715 title: 'Custom Agent',
716
717 // mutiple: true if you want to upload multiple files at once
718
719 multiple: false
720
721 })
722
723 .open()
724
725 .on('select', function(e){
726
727 // This will return the selected image from the Media Uploader, the result is an object
728
729 var uploaded_image = image.state().get('selection').first();
730
731 var image_url = uploaded_image.toJSON().url;
732
733 // Let's assign the url value to the hidden field value and img src.
734
735 $('#wp_chatbot_custom_agent_src').attr('src',image_url);
736
737 $('#wp_chatbot_custom_agent_path').val(image_url);
738
739 });
740
741 });
742
743 //Custom Backgroud image
744
745 $('.qcld_wb_chatbot_board_bg_button').click(function(e) {
746
747 e.preventDefault();
748
749 var image = wp.media({
750
751 title: 'Custom Agent',
752
753 // mutiple: true if you want to upload multiple files at once
754
755 multiple: false
756
757 })
758
759 .open()
760
761 .on('select', function(e){
762
763 // This will return the selected image from the Media Uploader, the result is an object
764
765 var uploaded_image = image.state().get('selection').first();
766
767 var image_url = uploaded_image.toJSON().url;
768
769 // Let's assign the url value to the hidden field value and img src.
770
771 $('#qcld_wb_chatbot_board_bg_image').attr('src',image_url);
772
773 $('#qcld_wb_chatbot_board_bg_path').val(image_url);
774
775 });
776
777 });
778
779 //wpwBot Load Control handler.
780
781 jQuery("input[name='wp_chatbot_df_api']").on('change', function(e){
782 e.preventDefault();
783 if($(this).val()=='v1'){
784 $('#wp-chatbot-df-section-v1').show('slow');
785 $('#wp-chatbot-df-section-v2').hide('slow');
786 }else{
787 $('#wp-chatbot-df-section-v1').hide('slow');
788 $('#wp-chatbot-df-section-v2').show('slow');
789 }
790 })
791
792 if($("input[type=radio][name='wp_chatbot_df_api']:checked").val()=='v1'){
793 $('#wp-chatbot-df-section-v1').show('slow');
794 }else{
795 $('#wp-chatbot-df-section-v1').hide();
796 }
797
798 if($("input[type=radio][name='wp_chatbot_df_api']:checked").val()=='v2'){
799 $('#wp-chatbot-df-section-v2').show('slow');
800 }else{
801 $('#wp-chatbot-df-section-v2').hide();
802 }
803
804
805 if($("input[type=radio][name='wp_chatbot_show_pages']:checked").val()=='off'){
806
807 $('#wp-chatbot-show-pages-list').show('slow');
808
809 }else{
810
811 $('#wp-chatbot-show-pages-list').hide('slow');
812
813 }
814
815 //on change.
816
817 $('.wp-chatbot-show-pages').on('change',function (e) {
818
819 if( $(this).val()=='off'){
820
821 $('#wp-chatbot-show-pages-list').show('slow');
822
823 }else{
824
825 $('#wp-chatbot-show-pages-list').hide('slow');
826
827 }
828
829 })
830
831 //Search options
832
833 if($('#wp-chatbot-search-option').val()=='standard'){
834
835 $('#wp-chatbot-standard-search').show();
836
837 $('#wp-chatbot-advanced-search').hide();
838
839
840
841 } else if($('#wp-chatbot-search-option').val()=='advanced'){
842
843 $('#wp-chatbot-advanced-search').show();
844
845 $('#wp-chatbot-standard-search').hide();
846
847 }
848
849 $('#wp-chatbot-search-option').on('change',function (e) {
850
851 if($(this).val()=='standard'){
852
853 $('#wp-chatbot-standard-search').show();
854
855 $('#wp-chatbot-advanced-search').hide();
856
857 } else if($(this).val()=='advanced'){
858
859 $('#wp-chatbot-advanced-search').show();
860
861 $('#wp-chatbot-standard-search').hide();
862
863 }
864
865 });
866
867
868
869 //Product Index for categories & Tag search
870
871
872
873 var wpChatbotIndexBtn=$('#qlcd_wp_chatbot_index');
874
875 var wpChatbotIndexProcess = $('#qlcd_wp_chatbot_index_process');
876
877 var wpChatbotIndexProgress = $('#qlcd_wp_chatbot_index_progress');
878
879 var wpChatbotIndexLoader = $('#qlcd_wp_chatbot_index_loader');
880
881 var wpChatbotSyncStatus;
882
883 var wpChatbotIndexProcessed;
884
885 var wpChatbotIndexToProcess;
886
887 // Reindex table
888
889 wpChatbotIndexBtn.on( 'click', function(e) {
890
891 e.preventDefault();
892
893 wpChatbotIndexProcess.html('');
894
895 wpChatbotIndexProgress.text('');
896
897
898
899 wpChatbotSyncStatus = 'sync';
900
901 wpChatbotIndexToProcess = 0;
902
903 wpChatbotIndexProcessed = 0;
904
905
906
907 wpChatbotIndexLoader.html('<img class="wp-chatbot-comment-loader" src="'+qcld_gemini_admin_data.image_path+'comment.gif" alt="..." />');
908
909 wpChatbotIndexProcess.html( wpChatbotIndexProcessed + '%' );
910
911
912
913 qcld_wb_chatbot_sync();
914
915
916
917 });
918
919
920
921
922
923 function qcld_wb_chatbot_sync() {
924
925
926
927 $.ajax({
928
929 type: 'POST',
930
931 url: qcld_gemini_admin_data.ajax_url,
932
933 data: {
934
935 action: 'qcld-wp-chabot-reindex',
936 'nonce': qcld_gemini_admin_data.ajax_nonce
937
938 },
939
940 dataType: "json",
941
942 success: function (response) {
943
944 // console.log('begining : ',response);
945
946 if ( 'sync' !== wpChatbotSyncStatus ) {
947
948 return;
949
950 }
951
952
953
954 wpChatbotIndexToProcess = response.data.found_posts;
955
956 wpChatbotIndexProcessed = response.data.offset;
957
958
959
960 wpChatbotIndexProcessed = Math.floor( wpChatbotIndexProcessed / wpChatbotIndexToProcess * 100 );
961
962
963
964 if ( 0 === response.data.offset && ! response.data.start ) {
965
966
967
968 // Sync finished
969
970 wpChatbotSyncStatus = 'finished';
971
972
973
974 //console.log('first : '+ response.data );
975
976 //console.log( "Reindex finished!" );
977
978
979
980 // $reindexBlock.removeClass('loading');
981
982 setTimeout(function () {
983
984 wpChatbotIndexProgress.text('Complete and '+response.data.found_posts+' Products found!' );
985
986 wpChatbotIndexLoader.html('');
987
988 },1000);
989
990
991
992
993
994 } else {
995
996
997
998 // console.log('2nd : '+ response.data );
999
1000
1001
1002 wpChatbotIndexProcess.html ( wpChatbotIndexProcessed + '% ' );
1003
1004
1005
1006
1007
1008 // We are starting a sync
1009
1010 wpChatbotSyncStatus = 'sync';
1011
1012
1013
1014 qcld_wb_chatbot_sync();
1015
1016 }
1017
1018
1019
1020 },
1021
1022 error : function( jqXHR, textStatus ) {
1023 //console.log( "Request failed: " + textStatus );
1024 qcld_wb_chatbot_cancelSync();
1025 },
1026 complete: function () {
1027
1028 }
1029
1030 });
1031 }
1032
1033
1034
1035 function qcld_wb_chatbot_cancelSync() {
1036 $.ajax( {
1037 method: 'post',
1038 url: qcld_gemini_admin_data.ajax_url,
1039 data: {
1040 action: 'qcld-wp-chabot-cancel-index',
1041 'nonce': qcld_gemini_admin_data.ajax_nonce
1042 }
1043 });
1044 }
1045
1046 //Messenger Color scheme.
1047
1048 $('#qlcd_wp_chatbot_fb_color').wpColorPicker();
1049 $('#wp_chatbot_proactive_bg_color').wpColorPicker();
1050
1051
1052 // Sub category for parent category
1053 $(document).on('change','#wp_chatbot_show_parent_category',function (e) {
1054 if($(this).is(':checked')){
1055 $('#wp_chatbot_sub_cats_container').show();
1056 }else{
1057 $('#wp_chatbot_sub_cats_container').hide();
1058 }
1059 })
1060 //Opening hours
1061 if($('#enable_wp_chatbot_opening_hour').is(':checked')){
1062 $('#wp-chatbot-hours-wrapper').show();
1063 }else{
1064 $('#wp-chatbot-hours-wrapper').hide();
1065 }
1066 $(document).on('change','#enable_wp_chatbot_opening_hour',function (e) {
1067 if($(this).is(':checked')){
1068 $('#wp-chatbot-hours-wrapper').show();
1069 }else{
1070 $('#wp-chatbot-hours-wrapper').hide();
1071 }
1072 })
1073
1074 $(".wp-chatbot-hours-add-btn").on('click',function () {
1075 var elNumber=$(this).parent().parent().find('.wp-chatbot-hours-container').length;
1076 var dayName=$(this).attr('data-day');
1077 var hourSet='<div class="wp-chatbot-hours-container">'+
1078 '<div class="wp-chatbot-hours">'+
1079 '<input type="text" name="wpwbot_hours['+dayName+']['+elNumber+'][]" value="00:00" > <input type="text" name="wpwbot['+dayName+']['+elNumber+'][]" value="00:00">'+
1080 '</div>'+
1081 '<div class="wp-chatbot-hours-remove">'+
1082 '<button type="button" class="btn btn-danger btn-sm wp-chatbot-hours-remove-btn ">'+
1083 '<i class="dashicons dashicons-remove" aria-hidden="true"></i>'+
1084 '</button>'+
1085 '</div>'+
1086 '</div>';
1087 $(this).parent().parent().find('.wp-chatbot-day').append(hourSet);
1088 $('.wp-chatbot-hours input').timepicker({ 'timeFormat': 'H:i' });
1089 });
1090
1091 $(document).on('click','.wp-chatbot-hours-remove-btn',function () {
1092 var elNumbers=$(this).parent().parent().parent().find('.wp-chatbot-hours-container').length;
1093 if(elNumbers>1){
1094 if(confirm('Are you sure to delete this support query block?')){
1095 $(this).parent().parent().remove();
1096 }
1097 }else{
1098 alert('At least one opening hours set is required');
1099 }
1100
1101 });
1102 //DialogFlow
1103 if($('#enable_wp_chatbot_dailogflow').is(':checked')){
1104 $('#wp-chatbot-dialflow-section').show();
1105 }else{
1106 $('#wp-chatbot-dialflow-section').hide();
1107 }
1108 $(document).on('change','#enable_wp_chatbot_dailogflow',function (e) {
1109 if($(this).is(':checked')){
1110 $('#wp-chatbot-dialflow-section').show();
1111 }else{
1112 $('#wp-chatbot-dialflow-section').hide();
1113 }
1114 })
1115
1116 $('#submit').click(function(){
1117
1118 if( jQuery('#section-flip-6:visible').length > 0 ){
1119 /* Perform some button action ... */
1120 if($('#enable_wp_chatbot_dailogflow').is(':checked')){
1121
1122 if( $('input[name ="qlcd_wp_chatbot_dialogflow_project_id"]').val() =='' ){
1123 alert("Please provide the Dialogflow Project ID!");
1124 return false;
1125 }
1126
1127 if( $('input[name="qlcd_wp_chatbot_dialogflow_agent_language"]').val() == '' ){
1128 alert("Please provide the Dialogflow Agent Language!");
1129 return false;
1130 }
1131
1132
1133 }
1134
1135 }
1136
1137 });
1138
1139 jQuery( ".qc_menu_list_container ul li" ).dblclick(function(e) {
1140 e.preventDefault();
1141 var html = jQuery(this).html().trim();
1142 jQuery('#qc_menu_area').append(html);
1143 jQuery('#qc_wpbot_menu_order').val(jQuery('#qc_menu_area').html().trim());
1144 });
1145
1146
1147 jQuery(document).on("dblclick", "#qc_menu_area span", function(e) {
1148 e.preventDefault();
1149 jQuery(this).remove();
1150 jQuery('#qc_wpbot_menu_order').val(jQuery('#qc_menu_area').html().trim());
1151 });
1152
1153
1154 jQuery( "#qc_menu_area" ).sortable({
1155 update: function( event, ui ) {
1156 jQuery('#qc_wpbot_menu_order').val(jQuery('#qc_menu_area').html().trim());
1157 }
1158 });
1159 jQuery( "#qc_menu_area" ).disableSelection();
1160
1161
1162 jQuery('.qc_menu_list_area span').draggable({
1163 revert: "invalid",
1164 helper: 'clone'
1165 });
1166
1167
1168
1169
1170 jQuery('.qc_menu_area_container').droppable({
1171 accept: ".qc_draggable_item",
1172 drop: function(event, ui) {
1173 var droppable = $(this);
1174 var draggable = ui.draggable;
1175 // Move draggable into droppable
1176 draggable.clone().removeClass("qc_draggable_item").addClass("qc_draggable_item_remove").appendTo(droppable);
1177 jQuery('#qc_wpbot_menu_order').val(jQuery('#qc_menu_area').html().trim());
1178 }
1179 });
1180 $('#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();
1181 jQuery('.qc_menu_list_area').droppable({
1182 accept: ".qc_draggable_item_remove",
1183 drop: function(event, ui) {
1184 var droppable = $(this);
1185 var draggable = ui.draggable;
1186 // Move draggable into droppable
1187 draggable.remove();
1188 jQuery('#qc_wpbot_menu_order').val(jQuery('#qc_menu_area').html().trim());
1189 }
1190 });
1191
1192
1193 jQuery('.qc_menu_area_container .qcld-chatbot-form').each(function(){
1194 var obj = $(this);
1195 obj.text(jQuery('.qc_menu_list_container .qcld-chatbot-form[data-form="'+obj.attr('data-form')+'"]').text());
1196 })
1197
1198 setTimeout(function(){
1199 if( jQuery('#qc_wpbot_menu_order').length > 0 ){
1200 jQuery('#qc_wpbot_menu_order').val(jQuery('#qc_menu_area').html().trim());
1201 }
1202 }, 2000)
1203
1204 jQuery('.qc_accordion_title').on('click', function(e){
1205 e.preventDefault();
1206 var obj = $(this);
1207
1208 jQuery('.qc_accordion_content_third').hide();
1209
1210 if($( "h3[data-accordion='qc_accordion_content_third']" ).find('i').hasClass("fa-minus")){
1211 $( "h3[data-accordion='qc_accordion_content_third']" ).find('i').removeClass("fa-minus");
1212 $( "h3[data-accordion='qc_accordion_content_third']" ).find('i').addClass("fa-plus");
1213 }
1214 jQuery('.qc_accordion_content_second').hide();
1215 if($( "h3[data-accordion='qc_accordion_content_second']" ).find('i').hasClass("fa-minus")){
1216 $( "h3[data-accordion='qc_accordion_content_second']" ).find('i').removeClass("fa-minus");
1217 $( "h3[data-accordion='qc_accordion_content_second']" ).find('i').addClass("fa-plus");
1218 }
1219 jQuery('.qc_accordion_content_first').hide();
1220 if($( "h3[data-accordion='qc_accordion_content_first']" ).find('i').hasClass("fa-minus")){
1221 $( "h3[data-accordion='qc_accordion_content_first']" ).find('i').removeClass("fa-minus");
1222 $( "h3[data-accordion='qc_accordion_content_first']" ).find('i').addClass("fa-plus");
1223 }
1224 setTimeout(function(){
1225 jQuery('.'+obj.attr('data-accordion')).show();
1226 obj.find('i').toggleClass("fa-plus fa-minus");
1227 }, 200)
1228 })
1229
1230 $(document).ready(function () {
1231 var flieElementOpenAi = document.getElementById("openfileinput");
1232
1233 if(flieElementOpenAi){
1234 $('.error-message').hide();
1235 $('.success-message').hide();
1236 $(".file_form").on('change','#openfileinput',function(){
1237 var file_data = $('#openfileinput').prop('files')[0];
1238 var form_data = new FormData();
1239 form_data.append('file', file_data);
1240 form_data.append('action', 'openai_file_upload');
1241 form_data.append('purpose','answers');
1242 $('.success-message').html('File is Proccesing');
1243 $('.success-message').show();
1244 $.ajax({
1245 url: qcld_gemini_admin_data.ajax_url,
1246 type: 'post',
1247 contentType: false,
1248 processData: false,
1249 data: form_data,
1250 success: function (response) {
1251 if(response[0].status == "success"){
1252 // $('.success').html(response.message)
1253 $('.success-message').hide();
1254 $('.success-message').html(response[0].message);
1255 $('.success-message').show();
1256 setTimeout(function(){
1257 $('.success-message').hide();
1258 },5000);
1259 location.reload();
1260 }
1261 if(response[0].status === "error"){
1262 //$('.success-message').html(response.message)
1263 jQuery('.success-message').hide();
1264 jQuery('.error-message').show();
1265 jQuery('.error-message').html(response[0].message);
1266 setTimeout(function(){
1267 jQuery('.error-message').hide();
1268 },5000);
1269 location.reload();
1270 }
1271 },
1272 });
1273
1274 });
1275
1276 $("#openaiFileList").on('click','.remove_file_openai',function(){
1277 $(this).hide();
1278 var file_id = $('.remove_file_openai').attr('data-id');
1279 jQuery('.error-message').show();
1280 jQuery('.error-message').html(file_id+'is deleting');
1281 setTimeout(function(){
1282 jQuery('.error-message').hide();
1283 },5000);
1284 $.ajax({
1285 url: qcld_gemini_admin_data.ajax_url,
1286 type: 'POST',
1287 dataType: "JSON",
1288 data: {
1289 action : 'openai_file_delete',
1290 file_id: file_id
1291 },
1292 success: function (response) {
1293 location.reload();
1294 },
1295 });
1296
1297 });
1298 $.ajax({
1299 url: qcld_gemini_admin_data.ajax_url,
1300 type: "POST",
1301 dataType: "JSON",
1302 data: {
1303 action : 'openai_file_list',
1304 },
1305 success: function(res) {
1306
1307 if((res.data != undefined)){
1308 data = res.data;
1309 let text = "";
1310 data.forEach(itemfunction);
1311 function itemfunction(item) {
1312 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>';
1313 }
1314 document.getElementById("openaiFileList").innerHTML = text;
1315 }
1316 }
1317 });
1318 $('#openaiFileList').on('click','.create_ft_model_modal',function(){
1319
1320 var ft_id = $(this).attr('data-id');
1321 $('#qcld_openai_ft_fileid').val(ft_id);
1322 $('#qcld-ft-modal').modal();
1323 })
1324 $.ajax({
1325 url: qcld_gemini_admin_data.ajax_url,
1326 type: "POST",
1327 dataType: "JSON",
1328 data: {
1329 action : 'openai_finetune_list',
1330 },
1331 success: function(res) {
1332 data = res;
1333 let text = "";
1334 data.forEach(itemfunction);
1335 function itemfunction(item) {
1336 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>';
1337 }
1338 document.getElementById("openaiFTList").innerHTML = text;
1339
1340 }
1341 });
1342 }
1343
1344 $("#wp-chatbot-data_post_converter").on('click','.qcld_convert_data', function(){
1345 var list = $("input[name='wp_chatbot_data_converter_list[]']:checked").map(function () {
1346 return this.value;
1347 }).get();
1348 $.ajax({
1349 url: qcld_gemini_admin_data.ajax_url,
1350 type: "POST",
1351 dataType: "JSON",
1352 data: {
1353 action : 'qcld_openai_post_data_converter_count',
1354 data: list,
1355 },
1356 success: function(res) {
1357 location.reload();
1358 }
1359 });
1360 });
1361
1362
1363
1364 // $('').on('click', '#save_setting', function(){
1365
1366
1367 // })
1368 var file_save = document.getElementById("save_file_id");
1369 if(file_save){
1370 $('.qcl-openai').on('click', '#save_file_id', function(){
1371 var file_id = $("input[name='file_id']" ).val();
1372
1373 $.ajax({
1374 url: qcld_gemini_admin_data.ajax_url,
1375 type:'POST',
1376 data: ({action : '',nonce: qcld_gemini_admin_data.ajax_nonce,file_id:file_id}),
1377 success: function(data){
1378 $('#result').html(data);
1379 location.reload();
1380
1381 }
1382 });
1383 })
1384 }
1385 var settingsOpenAi = document.getElementById("save_setting");
1386 if(settingsOpenAi){
1387
1388
1389 $('.qcl-openai').on('change','#qcld_openai_prompt', function() {
1390
1391 if( ($("[id*='qcld_openai_prompt'] :selected").val()) == 'custom_prompt'){
1392 $('#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"/>');
1393 }else{
1394 $('#custom_prompt_wrapper').empty('')
1395 }
1396 })
1397 setTimeout(() => {
1398 var custom_promt_value =$("#custom_promt_value").val();
1399 if( $("[id*='qcld_openai_prompt'] :selected").val() == 'custom_prompt' ){
1400
1401 // $("#custom_promt_value").filter('[value=any_command]').prop('selected', true);
1402 $('select option[value="custom_prompt"]').attr('selected', 'selected');
1403 // $('select option[value="any_command"]').attr('selected', 'selected');
1404
1405 $('#custom_prompt_wrapper').html('<input type="field" id="qcld_openai_prompt_custom" class="form-control my-2" />');
1406 $('#qcld_openai_prompt_custom').val(custom_promt_value)
1407
1408 }
1409 }, 500);
1410 $('.qcl-openai').on('change', 'input[name="qcld_openai_system_content_preset"]', function(){
1411 var systemContent = $(this).closest('.qcld-openai-system-preset').find('.qcld-openai-system-preset-value').val();
1412 $('.qcld-openai-system-preset').removeClass('is-selected');
1413 $(this).closest('.qcld-openai-system-preset').addClass('is-selected');
1414 $('#qcld_openai_system_content').val(systemContent).trigger('input');
1415 });
1416
1417 if (!$('input[name="qcld_openai_system_content_preset"]:checked').length) {
1418 $('.qcld-openai-system-preset').first().find('input[name="qcld_openai_system_content_preset"]').prop('checked', true).trigger('change');
1419 }
1420 $('.qcl-openai').on('input', '#qcld_openai_system_content', function(){
1421 var currentSystemContent = $(this).val();
1422 var hasMatchingPreset = false;
1423
1424 $('input[name="qcld_openai_system_content_preset"]').each(function(){
1425 var systemContent = $(this).closest('.qcld-openai-system-preset').find('.qcld-openai-system-preset-value').val();
1426 if (systemContent === currentSystemContent) {
1427 $(this).prop('checked', true);
1428 $('.qcld-openai-system-preset').removeClass('is-selected');
1429 $(this).closest('.qcld-openai-system-preset').addClass('is-selected');
1430 hasMatchingPreset = true;
1431 return false;
1432 }
1433 });
1434
1435 if (!hasMatchingPreset) {
1436 $('input[name="qcld_openai_system_content_preset"]').prop('checked', false);
1437 $('.qcld-openai-system-preset').removeClass('is-selected');
1438 }
1439 });
1440 $('.qcl-openai').on('click', '#save_setting', function(){
1441 if ($('#is_ai_enabled').is(":checked")){
1442 var is_ai_enabled = 1;
1443 }else{
1444 var is_ai_enabled = 0;
1445 }
1446 if($('#is_ai_only_mode').is(":checked")){
1447 var is_ai_only_mode = 1;
1448 }else{
1449 var is_ai_only_mode = 0;
1450 }
1451 if($('#conversation_continuity').is(":checked")){
1452 var conversation_continuity = 1;
1453 }else{
1454 var conversation_continuity = 0;
1455 }
1456 if($('#is_relevant_enabled').is(":checked")){
1457 var is_relevant_enabled = 1;
1458 }else{
1459 var is_relevant_enabled = 0;
1460 }
1461 if($('#is_page_suggestion_enabled').is(":checked")){
1462 var is_page_suggestion_enabled = 1;
1463 }else{
1464 var is_page_suggestion_enabled = 0;
1465 }
1466 if($('#is_context_awareness_enabled').is(":checked")){
1467 var is_context_awareness_enabled = 1;
1468 }else{
1469 var is_context_awareness_enabled = 0;
1470 }
1471 if($('#is_page_rag_enabled').is(":checked")){
1472 var is_page_rag_enabled = 1;
1473 }else{
1474 var is_page_rag_enabled = 0;
1475 }
1476 if($('#is_stream_enabled').is(":checked")){
1477 var is_stream_enabled = 1;
1478 }else{
1479 var is_stream_enabled = 0;
1480 }
1481 var post_types = $.map($('input[name="site_search_posttypes[]"]:checked'), function(c){return c.value; });
1482 var api_key = $( "input[name='api_key']" ).val();
1483 var openai_engines = $("[id*='openai_engines'] :selected").val();
1484 var qcld_openai_prompt = $("[id*='qcld_openai_prompt'] :selected").val();
1485 var max_tokens = $("input[name='max_tokens']" ).val();
1486 var file_id = $("input[name='file_id']" ).val();
1487 var temperature = $("input[name='temperature']" ).val();
1488 var presence_penalty = $("input[name='presence_penalty']" ).val();
1489 var openai_exclude_keyword = jQuery('#qcld_openai_exclude_keyword').val();
1490 var openai_include_keyword = jQuery('#qcld_openai_include_keyword').val();
1491 var qcld_openai_system_content = jQuery('#qcld_openai_system_content').val();
1492 var qcld_openai_append_content = jQuery('#qcld_openai_append_content').val();
1493 if(qcld_openai_prompt == "custom_prompt"){
1494 var qcld_openai_prompt_custom = $("#qcld_openai_prompt_custom").val();
1495 }
1496 var frequency_penalty = $("input[name='frequency_penalty']" ).val();
1497 var openai_post_type = $("input[name='site_search_posttypes[]']:checked").map(function () {
1498 return this.value;
1499 }).get();
1500
1501 $.ajax({
1502 url: qcld_gemini_admin_data.ajax_url,
1503 type:'POST',
1504 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}),
1505
1506 success: function(data){
1507 $('#result').html(data);
1508 if(data.icon == "success"){
1509 var color = "color: green";
1510 }else if(data.icon == "error"){
1511 var color = "color: red";
1512 }
1513 Swal.fire({
1514 title: 'Your settings are saved.',
1515 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>',
1516 width: 450,
1517 icon: 'success',
1518 confirmButtonText: 'Got it',
1519 confirmButtonWidth: 100,
1520 confirmButtonClass: 'btn btn-lg'
1521 }).then((result) => {
1522 if (result.isConfirmed) {
1523 $.ajax({
1524 url: qcld_gemini_admin_data.ajax_url,
1525 type: 'POST',
1526 data: {
1527 action: 'update_settings_option',
1528 nonce: qcld_gemini_admin_data.ajax_nonce,
1529 disable_ss: 1
1530 },
1531
1532 });
1533 }
1534 });
1535 }
1536 });
1537
1538 })
1539
1540 //Additional Code - 04-12-2023
1541 //For AI Enabled + Site Search Disabling
1542 $('.qcl-openai').on('click', '#save_setting_disable_ss', function(){
1543
1544 console.log($('#conversation_continuity').is(":checked"))
1545 if ($('#is_ai_enabled').is(":checked")){
1546 var is_ai_enabled = 1;
1547 }else{
1548 var is_ai_enabled = 0;
1549 }
1550 if($('#is_ai_only_mode').is(":checked")){
1551 var is_ai_only_mode = 1;
1552 }else{
1553 var is_ai_only_mode = 0;
1554 }
1555 if($('#conversation_continuity').is(":checked")){
1556 var conversation_continuity = 1;
1557 }else{
1558 var conversation_continuity = 0;
1559 }
1560 console.log(conversation_continuity)
1561 if($('#is_relevant_enabled').is(":checked")){
1562 var is_relevant_enabled = 1;
1563 }else{
1564 var is_relevant_enabled = 0;
1565 }
1566 if($('#is_page_suggestion_enabled').is(":checked")){
1567 var is_page_suggestion_enabled = 1;
1568 }else{
1569 var is_page_suggestion_enabled = 0;
1570 }
1571 if($('#is_context_awareness_enabled').is(":checked")){
1572 var is_context_awareness_enabled = 1;
1573 }else{
1574 var is_context_awareness_enabled = 0;
1575 }
1576
1577 var api_key = $( "input[name='api_key']" ).val();
1578 var openai_engines = $("[id*='openai_engines'] :selected").val();
1579 var qcld_openai_prompt = $("[id*='qcld_openai_prompt'] :selected").val();
1580 var max_tokens = $("input[name='max_tokens']" ).val();
1581 var file_id = $("input[name='file_id']" ).val();
1582 var temperature = $("input[name='temperature']" ).val();
1583 var presence_penalty = $("input[name='presence_penalty']" ).val();
1584 var openai_exclude_keyword = jQuery('#qcld_openai_exclude_keyword').val();
1585 var openai_include_keyword = jQuery('#qcld_openai_include_keyword').val();
1586 if(qcld_openai_prompt == "custom_prompt"){
1587 var qcld_openai_prompt_custom = $("#qcld_openai_prompt_custom").val();
1588 }
1589 var frequency_penalty = $("input[name='frequency_penalty']" ).val();
1590
1591 $.ajax({
1592 url: qcld_gemini_admin_data.ajax_url,
1593 type:'POST',
1594 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}),
1595 success: function(data){
1596 $('#result').html(data);
1597 location.reload();
1598 }
1599 });
1600
1601
1602
1603 }) //Additional Code - 04-12-2023 ends here
1604 }
1605 var settingsRag = document.getElementById("save_rag_setting");
1606 if (settingsRag) {
1607 $('.qcl-openai').on('click', '#save_rag_setting', function () {
1608
1609 var rag_embed_pages = $('#rag_embed_pages').is(':checked') ? 1 : 0;
1610 var rag_embed_posts = $('#rag_embed_posts').is(':checked') ? 1 : 0;
1611 var rag_auto_sync_enabled = $('#rag_auto_sync_enabled').is(':checked') ? 1 : 0;
1612 var rag_embed_str = $('#rag_embed_str').is(':checked') ? 1 : 0;
1613
1614 var rag_embed_cpts = [];
1615 $('.rag_embed_cpts_checkbox:checked').each(function() {
1616 rag_embed_cpts.push($(this).val());
1617 });
1618
1619 $.ajax({
1620 url: qcld_gemini_admin_data.ajax_url,
1621 type: 'POST',
1622 data: ({
1623 action: 'qcld_rag_settings_option',
1624 nonce: qcld_gemini_admin_data.ajax_nonce,
1625 rag_embed_pages: rag_embed_pages,
1626 rag_embed_posts: rag_embed_posts,
1627 rag_auto_sync_enabled: rag_auto_sync_enabled,
1628 rag_embed_str: rag_embed_str,
1629 rag_embed_cpts: rag_embed_cpts
1630 }),
1631 success: function (data) {
1632 $('#result').html(data);
1633 Swal.fire({
1634 title: 'Your settings are saved.',
1635 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>',
1636 width: 450,
1637 icon: 'success',
1638 confirmButtonText: 'Got it',
1639 confirmButtonWidth: 100,
1640 confirmButtonClass: 'btn btn-lg'
1641 }).then((result) => {
1642 if (result.isConfirmed) {
1643 $.ajax({
1644 url: qcld_gemini_admin_data.ajax_url,
1645 type: 'POST',
1646 data: {
1647 action: '',
1648 nonce: qcld_gemini_admin_data.ajax_nonce,
1649 disable_ss: 1
1650 },
1651
1652 });
1653 }
1654 });
1655
1656 location.reload();
1657 }
1658 });
1659 })
1660
1661 $('.qcl-openai').on('click', '#rag_embed_btn', function (e) {
1662 e.preventDefault();
1663 var btn = $(this);
1664 var originalText = btn.text();
1665 btn.text('Saving settings...');
1666
1667 var rag_embed_pages = $('#rag_embed_pages').is(':checked') ? 1 : 0;
1668 var rag_embed_posts = $('#rag_embed_posts').is(':checked') ? 1 : 0;
1669 var rag_auto_sync_enabled = $('#rag_auto_sync_enabled').is(':checked') ? 1 : 0;
1670 var rag_embed_str = $('#rag_embed_str').is(':checked') ? 1 : 0;
1671
1672 var rag_embed_cpts = [];
1673 $('.rag_embed_cpts_checkbox:checked').each(function() {
1674 rag_embed_cpts.push($(this).val());
1675 });
1676
1677 $.ajax({
1678 url: qcld_gemini_admin_data.ajax_url,
1679 type: 'POST',
1680 data: ({
1681 action: 'qcld_rag_settings_option',
1682 nonce: qcld_gemini_admin_data.ajax_nonce,
1683 rag_embed_pages: rag_embed_pages,
1684 rag_embed_posts: rag_embed_posts,
1685 rag_auto_sync_enabled: rag_auto_sync_enabled,
1686 rag_embed_str: rag_embed_str,
1687 rag_embed_cpts: rag_embed_cpts
1688 }),
1689 success: function (data) {
1690 console.log(data);
1691 btn.text('Embedding...');
1692 $('#rag_embed_form').submit();
1693 }
1694 });
1695 })
1696
1697 // Delete Document
1698 $('.qcl-openai').on('click', '.rag-delete-doc', function () {
1699 var id = $(this).data('id');
1700
1701 Swal.fire({
1702 title: 'Are you sure?',
1703 text: "You won't be able to revert this!",
1704 icon: 'warning',
1705 showCancelButton: true,
1706 confirmButtonColor: '#3085d6',
1707 cancelButtonColor: '#d33',
1708 confirmButtonText: 'Yes, delete it!'
1709 }).then((result) => {
1710 if (result.isConfirmed) {
1711 $.ajax({
1712 url: qcld_gemini_admin_data.ajax_url,
1713 type: 'POST',
1714 data: {
1715 action: 'qcld_rag_delete_document',
1716 nonce: qcld_gemini_admin_data.ajax_nonce,
1717 id: id
1718 },
1719 success: function (res) {
1720 if (res.success) {
1721 $('#rag-doc-' + id).remove();
1722 Swal.fire('Deleted!', res.data, 'success');
1723 } else {
1724 Swal.fire('Error', res.data, 'error');
1725 }
1726 }
1727 });
1728 }
1729 })
1730 });
1731
1732 // Select All Checkbox
1733 $('.qcl-openai').on('change', '#rag-select-all', function() {
1734 $('.rag-doc-checkbox').prop('checked', $(this).prop('checked'));
1735 });
1736
1737 // Bulk Actions (Apply)
1738 $('.qcl-openai').on('click', '#rag-apply-bulk-action', function() {
1739 var action = $('#rag-bulk-action-selector').val();
1740 if (action !== 'delete') {
1741 Swal.fire('Info', 'Please select a valid bulk action.', 'info');
1742 return;
1743 }
1744
1745 var selectedIds = [];
1746 $('.rag-doc-checkbox:checked').each(function() {
1747 selectedIds.push($(this).val());
1748 });
1749
1750 if (selectedIds.length === 0) {
1751 Swal.fire('Warning', 'Please select at least one document.', 'warning');
1752 return;
1753 }
1754
1755 Swal.fire({
1756 title: 'Are you sure?',
1757 text: "Delete " + selectedIds.length + " selected documents? This cannot be undone!",
1758 icon: 'warning',
1759 showCancelButton: true,
1760 confirmButtonColor: '#3085d6',
1761 cancelButtonColor: '#d33',
1762 confirmButtonText: 'Yes, delete selected!'
1763 }).then((result) => {
1764 if (result.isConfirmed) {
1765 $.ajax({
1766 url: qcld_gemini_admin_data.ajax_url,
1767 type: 'POST',
1768 data: {
1769 action: 'qcld_rag_bulk_delete_documents',
1770 nonce: qcld_gemini_admin_data.ajax_nonce,
1771 ids: selectedIds
1772 },
1773 success: function(res) {
1774 if (res.success) {
1775 selectedIds.forEach(function(id) {
1776 $('#rag-doc-' + id).remove();
1777 });
1778 $('#rag-select-all').prop('checked', false);
1779 $('#rag-bulk-action-selector').val('-1');
1780 Swal.fire('Deleted!', res.data, 'success');
1781 } else {
1782 Swal.fire('Error', res.data, 'error');
1783 }
1784 }
1785 });
1786 }
1787 });
1788 });
1789
1790 // Delete All Documents
1791 $('.qcl-openai').on('click', '#rag-delete-all', function() {
1792 Swal.fire({
1793 title: 'CRITICAL WARNING!',
1794 text: "This will delete ALL documents in your Knowledge Base. This action is IRREVERSIBLE!",
1795 icon: 'error',
1796 showCancelButton: true,
1797 confirmButtonColor: '#d33',
1798 cancelButtonColor: '#3085d6',
1799 confirmButtonText: 'YES, DELETE EVERYTHING!'
1800 }).then((result) => {
1801 if (result.isConfirmed) {
1802 $.ajax({
1803 url: qcld_gemini_admin_data.ajax_url,
1804 type: 'POST',
1805 data: {
1806 action: 'qcld_rag_delete_all_documents',
1807 nonce: qcld_gemini_admin_data.ajax_nonce
1808 },
1809 success: function(res) {
1810 if (res.success) {
1811 $('#rag-knowledge-base-list').html('<tr><td colspan="6">No documents found in knowledge base.</td></tr>');
1812 $('#rag-select-all').prop('checked', false);
1813 Swal.fire('Cleared!', res.data, 'success');
1814 } else {
1815 Swal.fire('Error', res.data, 'error');
1816 }
1817 }
1818 });
1819 }
1820 });
1821 });
1822
1823 // Edit Document - Open Modal
1824 $('.qcl-openai').on('click', '.rag-edit-doc', function () {
1825 var id = $(this).data('id');
1826 $.ajax({
1827 url: qcld_gemini_admin_data.ajax_url,
1828 type: 'POST',
1829 data: {
1830 action: 'qcld_rag_get_document',
1831 nonce: qcld_gemini_admin_data.ajax_nonce,
1832 id: id
1833 },
1834 success: function (res) {
1835 if (res.success) {
1836 $('#edit-doc-id').val(res.data.id);
1837 $('#edit-doc-title').val(res.data.title);
1838 $('#edit-doc-content').val(res.data.content);
1839 $('#rag-edit-modal').show();
1840 } else {
1841 Swal.fire('Error', res.data, 'error');
1842 }
1843 }
1844 });
1845 });
1846
1847 // Close Edit Modal
1848 $(document).on('click', '#close-edit-modal', function () {
1849 $('#rag-edit-modal').hide();
1850 });
1851
1852 // Manual Sync Document
1853 $(document).on('click', '.rag-sync-doc', function(e) {
1854 e.preventDefault();
1855 var btn = $(this);
1856 var docId = btn.data('id');
1857
1858 if (!confirm('Are you sure you want to re-sync this document from its source?')) {
1859 return;
1860 }
1861
1862 btn.prop('disabled', true).text('Syncing...');
1863
1864 $.post(qcld_gemini_admin_data.ajax_url, {
1865 action: 'qcld_rag_manual_sync',
1866 nonce: qcld_gemini_admin_data.ajax_nonce,
1867 id: docId
1868 }, function(response) {
1869 btn.prop('disabled', false).text('Sync');
1870 if (response.success) {
1871 alert(response.data.message);
1872 location.reload();
1873 } else {
1874 alert('Error: ' + response.data.message);
1875 }
1876 });
1877 });
1878
1879 // Save Edit Document
1880 $(document).on('click', '#save-edit-doc', function () {
1881 var id = $('#edit-doc-id').val();
1882 var title = $('#edit-doc-title').val();
1883 var content = $('#edit-doc-content').val();
1884 var btn = $(this);
1885
1886 btn.prop('disabled', true).text('Saving...');
1887
1888 $.ajax({
1889 url: qcld_gemini_admin_data.ajax_url,
1890 type: 'POST',
1891 data: {
1892 action: 'qcld_rag_update_document',
1893 nonce: qcld_gemini_admin_data.ajax_nonce,
1894 id: id,
1895 title: title,
1896 content: content
1897 },
1898 success: function (res) {
1899 btn.prop('disabled', false).text('Save Changes');
1900 if (res.success) {
1901 $('#rag-edit-modal').hide();
1902 Swal.fire('Updated!', res.data, 'success').then(() => {
1903 location.reload();
1904 });
1905 } else {
1906 Swal.fire('Error', res.data, 'error');
1907 }
1908 }
1909 });
1910 });
1911 }
1912 // Delete Document
1913 $('.qcl-openai').on('click', '.rag-delete-doc', function () {
1914 var id = $(this).data('id');
1915
1916 Swal.fire({
1917 title: 'Are you sure?',
1918 text: "You won't be able to revert this!",
1919 icon: 'warning',
1920 showCancelButton: true,
1921 confirmButtonColor: '#3085d6',
1922 cancelButtonColor: '#d33',
1923 confirmButtonText: 'Yes, delete it!'
1924 }).then((result) => {
1925 if (result.isConfirmed) {
1926 $.ajax({
1927 url: qcld_gemini_admin_data.ajax_url,
1928 type: 'POST',
1929 data: {
1930 action: 'qcld_rag_delete_document',
1931 nonce: qcld_gemini_admin_data.ajax_nonce,
1932 id: id
1933 },
1934 success: function (res) {
1935 if (res.success) {
1936 $('#rag-doc-' + id).remove();
1937 Swal.fire('Deleted!', res.data, 'success');
1938 } else {
1939 Swal.fire('Error', res.data, 'error');
1940 }
1941 }
1942 });
1943 }
1944 })
1945 });
1946
1947 $('.qcl-openai').on('click', '#qcld_check_connection', function(){
1948 jQuery('#rotationloader').css('display','inline-block');
1949 $.ajax({
1950 url: qcld_gemini_admin_data.ajax_url,
1951 type:'POST',
1952 data: ({action : 'openai_troubleshooting',nonce:qcld_gemini_admin_data.ajax_nonce}),
1953 success: function(data){
1954
1955 $('#result').html(data);
1956 Swal.fire({
1957 title: data.title,
1958 html: data.msg,
1959 width: 450,
1960 icon: data.icon,
1961 confirmButtonText: 'Got it',
1962 customClass: 'connection-modal',
1963 })
1964 jQuery('#rotationloader').css('display','none');
1965 // location.reload();
1966 }
1967 });
1968 })
1969 $('#ai-provider-selector').on('change', function () {
1970
1971 var selected = $(this).val();
1972 console.log('Provider changed to: ' + selected);
1973 $('.ai-settings-provider').hide();
1974 $('#' + selected + '-settings').show();
1975 $('#rag-settings').hide(); // Ensure RAG is hidden when switching providers
1976 });
1977
1978 if (window.location.hash.indexOf('#ai-knowledge-base-tab') === 0) {
1979 $('.ai-settings-provider').hide();
1980 $('#rag-settings').show();
1981 }
1982
1983 $('#ai-knowledge-base-tab').on('click', function (e) {
1984 e.preventDefault();
1985 $('.ai-settings-provider').hide();
1986 $('#rag-settings').show();
1987 if (history.pushState) { history.pushState(null, null, '#ai-knowledge-base-tab'); }
1988 });
1989 // common Ai settings tab
1990 $('#qcld-common-ai-settings').on('click', function (e) {
1991 e.preventDefault();
1992 $('.ai-settings-provider').hide();
1993 $('#common-ai-settings').show();
1994 if (history.pushState) { history.pushState(null, null, '#common-ai-settings'); }
1995 });
1996 $('#ai-knowledge-base-tab-openai').on('click', function (e) {
1997 e.preventDefault();
1998 $('.ai-settings-provider').hide();
1999 $('#rag-settings').show();
2000 if (history.pushState) { history.pushState(null, null, '#ai-knowledge-base-tab'); }
2001 });
2002 });
2003
2004 $(document).on('click', '.qcld_botopenai_generate_image', function (e) {
2005 var qcld_seo_button = $(this);
2006 var qcld_seo_prompt = $('#prompt').val();
2007 var qcld_seo_artist = $('#artist').val();
2008 var qcld_seo_art_style = $('#art_style').val();
2009 var qcld_seo_photography_style = $('#photography_style').val();
2010 var qcld_seo_lighting = $('#lighting').val();
2011 var qcld_seo_subject = $('#subject').val();
2012 var qcld_seo_camera_settings = $('#camera_settings').val();
2013 var qcld_seo_composition = $('#composition').val();
2014 var qcld_seo_resolution = $('#resolution').val();
2015 var qcld_seo_color = $('#color').val();
2016 var qcld_seo_special_effects = $('#special_effects').val();
2017 var qcld_seo_img_size = $('#img_size').val();
2018 var qcld_seo_num_images = $('#num_images').val();
2019
2020
2021 if(qcld_seo_prompt === ''){
2022 alert('Something went wrong');
2023 }else{
2024
2025 var qcld_seo_post_status = $('.qcld_seo-post-status:checked').val();
2026 var qcld_seo_schedule = $('.qcld_seo-schedule-post').val();
2027
2028 var data = {
2029 qcld_seo_prompt: qcld_seo_prompt,
2030 qcld_seo_artist: qcld_seo_artist,
2031 qcld_seo_art_style: qcld_seo_art_style,
2032 qcld_seo_photography_style: qcld_seo_photography_style,
2033 qcld_seo_lighting: qcld_seo_lighting,
2034 qcld_seo_subject: qcld_seo_subject,
2035 qcld_seo_camera_settings: qcld_seo_camera_settings,
2036 qcld_seo_composition: qcld_seo_composition,
2037 qcld_seo_resolution: qcld_seo_resolution,
2038 qcld_seo_color: qcld_seo_color,
2039 qcld_seo_special_effects: qcld_seo_special_effects,
2040 qcld_seo_img_size: qcld_seo_img_size,
2041 qcld_seo_num_images: qcld_seo_num_images,
2042 action: 'qcld_openai_image_generate',
2043 nonce: qcld_gemini_admin_data.ajax_url,
2044 };
2045
2046 $.ajax({
2047 url: qcld_gemini_admin_data.ajax_url,
2048 data: data,
2049 type: 'POST',
2050 dataType: 'JSON',
2051 beforeSend: function(){
2052 qcld_seo_button.attr('disabled','disabled');
2053 qcld_seo_button.append('<span class="spinner"></span>');
2054 qcld_seo_button.find('.spinner').css('visibility','unset');
2055 },
2056 success: function (res){
2057 qcld_seo_button.removeAttr('disabled');
2058 qcld_seo_button.find('.spinner').remove();
2059 if(res.status === 'success'){
2060 // window.location.href = qcld_seo_bulk_content + '&qcld_seo_track='+res.id
2061 $('#qcld_seo-tab-generated-text').html( res.html );
2062 }
2063 else{
2064 alert('Something went wrong');
2065 }
2066 },
2067 error: function (){
2068 qcld_seo_button.removeAttr('disabled');
2069 qcld_seo_button.find('.spinner').remove();
2070 alert('Something went wrong');
2071 }
2072 })
2073 }
2074 });
2075 $(document).on('click', '.qcld_botopenai_generate_image_download', function (e) {
2076 e.preventDefault();
2077
2078 var url = $(this).find("img").attr('src');
2079 console.log(url)
2080 var qcld_seo_button = $(this);
2081 var image_url = $(this).find('img').attr('src');
2082 var image_page_url = $(this).find('img').attr('src');
2083 var photographer = $(this).find('img').data('photographer');
2084 var q = '';
2085 var data = {
2086 qcld_seo_openai_images_upload : "1",
2087 image_url : image_url,
2088 image_src_page : image_page_url,
2089 image_user : photographer,
2090 q : q,
2091 action : 'qcld_openai_image_generate_url'
2092 };
2093 $.ajax({
2094 url: qcld_gemini_admin_data.ajax_url,
2095 data: data,
2096 type: 'POST',
2097 dataType: 'JSON',
2098 beforeSend: function(){
2099 qcld_seo_button.removeAttr('disabled').removeClass("uploading").find('.qcld_seo_msg').remove();
2100 qcld_seo_button.attr('disabled','disabled');
2101 qcld_seo_button.addClass('uploading').find('.qcld_seo_download img').replaceWith('');
2102 },
2103 success: function ( res ){
2104 console.log(res.data.html);
2105 qcld_seo_button.find('.qcld_seo_download img').replaceWith('<p class="qcld_seo_msg">'+res.data.html+'<p>' );
2106 const newBlock = wp.blocks.createBlock( "core/image", {
2107 id: res.data.attachment_id,
2108 url: res.data.url,
2109 width: res.data.width,
2110 height: res.data.height,
2111 sizeSlug: res.data.size,
2112 alt: '',
2113 title: '',
2114 caption: '',
2115 });
2116 wp.data.dispatch("core/editor").insertBlocks(newBlock);
2117 },
2118 error: function (){
2119 qcld_seo_button.removeAttr('disabled');
2120 }
2121 })
2122
2123 });
2124
2125 $(document).on('click','#qcld_article_keyword_suggestion',function(e){
2126 var qcld_keyword_suggestion = $('#qcld_article_keyword_suggestion_mf').val();
2127 var qcld_keyword_number = $('#qcld_keyword_number').val();
2128 var qcld_article_language = $('#qcld_article_language').val();
2129 var qcld_article_number_of_heading = $('#qcld_article_number_of_heading').val();
2130 var qcld_article_heading_tag = $('#qcld_article_heading_tag').val();
2131 var qcld_article_heading_style = $('#qcld_article_heading_style').val();
2132 var qcld_article_heading_tone = $('#qcld_article_heading_tone').val();
2133 var qcld_article_heading_img = $('#qcld_article_heading_img').val();
2134 var qcld_article_heading_img = $("input[name=qcld_article_heading_img]:checked").val();
2135 var qcld_article_heading_tagline = $("input[name=qcld_article_heading_tagline]:checked").val();
2136 var qcld_article_heading_intro = $("input[name=qcld_article_heading_intro]:checked").val();
2137 var qcld_article_heading_conclusion = $("input[name=qcld_article_heading_conclusion]:checked").val();
2138 var qcld_article_label_anchor_text = $('#qcld_article_label_anchor_text').val();
2139 var qcld_article_target_url = $('#qcld_article_target_url').val();
2140 var qcld_article_target_label_cta = $('#qcld_article_target_label_cta').val();
2141 var qcld_article_cta_pos = $('#qcld_article_cta_pos').val();
2142 var qcld_article_label_keywords = $('#qcld_article_label_keywords').val();
2143 var qcld_article_label_word_to_avoid= $('#qcld_article_label_word_to_avoid').val();
2144 var qcld_article_label_keywords_bold= $("input[name=qcld_article_label_keywords_bold]:checked").val();
2145 var qcld_article_heading_faq = $("input[name=qcld_article_heading_faq]:checked").val();
2146 var qcld_article_img_size = $('#qcld_article_img_size').val();
2147
2148 $('#qcld_article_keyword_suggestion').addClass('spinning');
2149 $('#qcld_article_keyword_suggestion').prop("disabled",true);
2150 $('#linkbait_article_keyword_data').html('');
2151 $.ajax({
2152 url: qcld_gemini_admin_data.ajax_url,
2153 method: 'POST',
2154 data: {
2155 'action': 'openai_keyword_suggestion_content',
2156 'keyword' : qcld_keyword_suggestion,
2157 'keyword_number' : qcld_keyword_number,
2158 'qcld_article_language' : qcld_article_language,
2159 'qcld_article_number_of_heading' : qcld_article_number_of_heading,
2160 'qcld_article_heading_tag' : qcld_article_heading_tag,
2161 'qcld_article_heading_style' : qcld_article_heading_style,
2162 'qcld_article_heading_tone' : qcld_article_heading_tone,
2163 'qcld_article_heading_img' : qcld_article_heading_img,
2164 'qcld_article_heading_tagline' : qcld_article_heading_tagline,
2165 'qcld_article_heading_intro' : qcld_article_heading_intro,
2166 'qcld_article_heading_conclusion' : qcld_article_heading_conclusion,
2167 'qcld_article_label_anchor_text' : qcld_article_label_anchor_text,
2168 'qcld_article_target_url' : qcld_article_target_url,
2169 'qcld_article_target_label_cta' : qcld_article_target_label_cta,
2170 'qcld_article_cta_pos' : qcld_article_cta_pos,
2171 'qcld_article_label_keywords' : qcld_article_label_keywords,
2172 'qcld_article_label_word_to_avoid': qcld_article_label_word_to_avoid,
2173 'qcld_article_label_keywords_bold': qcld_article_label_keywords_bold,
2174 'qcld_article_heading_faq' : qcld_article_heading_faq,
2175 'qcld_article_img_size' : qcld_article_img_size,
2176 //'selectedlanguage': selectedlanguage,
2177 },
2178 dataType: 'json',
2179 success: function(response) {
2180 //$('#linkbait_keyword_data').append(response.keywords);
2181 $('#qcld_article_keyword_suggestion').prop("disabled",false);
2182 $('#qcld_article_keyword_suggestion').removeClass('spinning');
2183 $('#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>');
2184 $('#linkbait_article_keyword_data').append('<div class="qcld_content_result_wrap"><div class="qcld_rewrite_result_count">' + response.keywords.split(" ").length +'</div></div>');
2185
2186 $('#qcld_content_result_msg').focus();
2187 $('#qcld_content_result_msg').focusout();
2188 }
2189 });
2190
2191
2192
2193 });
2194
2195 $('#ai-provider-selector').on('change', function() {
2196 var selected = $(this).val();
2197 $('.ai-settings-provider').hide();
2198 $('#' + selected + '-settings').show();
2199 });
2200
2201 $('#is_rate_limiting_enabled').on('change', function () {
2202 if ($(this).is(":checked")) {
2203 $('#rate_limit_settings').show();
2204 $('.rate-limit-input').prop('disabled', false);
2205 $('.rate-limit-timeframe').prop('disabled', false);
2206 } else {
2207 $('#rate_limit_settings').hide();
2208 $('.rate-limit-input').prop('disabled', true);
2209 $('.rate-limit-timeframe').prop('disabled', true);
2210 }
2211 });
2212 $('.qcl-openai').on('click', '#qcld_openai_rate_limit_save_setting', function () {
2213 console.log('Saving rate limit settings...');
2214 if ($('#is_rate_limiting_enabled').is(":checked")) {
2215 var is_rate_limiting_enabled = 1;
2216 } else {
2217 var is_rate_limiting_enabled = 0;
2218 }
2219 var rate_limits = {};
2220 var rate_limit_timeframes = {};
2221 // Collect rate limits for each role
2222 $('.rate-limit-input').each(function () {
2223 var role = $(this).attr('id').replace('rate_limit_', '');
2224 var limit = $(this).val();
2225 rate_limits[role] = limit;
2226 rate_limit_timeframes[role] = $('#rate_limit_timeframe_' + role).val();
2227 });
2228 $.ajax({
2229 url: ajax_object.ajax_url,
2230 type: 'POST',
2231 data: ({
2232 action: 'rate_limit_settings_option',
2233 nonce: ajax_object.ajax_nonce,
2234 is_rate_limiting_enabled: is_rate_limiting_enabled,
2235 rate_limits: rate_limits,
2236 rate_limit_timeframes: rate_limit_timeframes
2237 }),
2238 success: function (data) {
2239 $('#result').html(data);
2240 Swal.fire({
2241 title: 'Your settings are saved.',
2242 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>',
2243 width: 450,
2244 icon: 'success',
2245 confirmButtonText: 'Got it',
2246 confirmButtonWidth: 100,
2247 confirmButtonClass: 'btn btn-lg'
2248 })
2249 // location.reload();
2250 }
2251 });
2252 })
2253 });
2254
2255 document.addEventListener('DOMContentLoaded', function() {
2256 if(localStorage.getItem('qcld_general_settings_notice_closed') === '1') {
2257 var notice = document.querySelector('.qcld-general-settings-connection-notic');
2258 if(notice) notice.style.display = 'none';
2259 }
2260 });
2261
2262
2263
2264
2265 function qcld_wpbot_languageChange_from_center(langCode) {
2266 switch (langCode) {
2267 case "not_mine":
2268 setTimeout(() => {
2269 jQuery("#waring-message").show()
2270 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>')
2271 }, 500);
2272
2273 break;
2274 default:
2275 setTimeout(() => {
2276 jQuery("#waring-message").hide()
2277 }, 500);
2278 jQuery.ajax({
2279 url: qcld_gemini_admin_data.ajax_url, // e.g., 'wp-admin/admin-ajax.php'
2280 type: 'POST',
2281 data: {
2282 'action': 'qcld_change_language_from_center',
2283 'language' : langCode,
2284 'nonce': qcld_gemini_admin_data.ajax_nonce, // Include nonce for security
2285 },// Expecting JSON response from PHP
2286 })
2287 .done(function(response) {
2288 // If PHP returns a JSON object
2289 if (response.success === false || response.error) {
2290 } else {
2291 jQuery.each( response.data.data, function(key, value) {
2292 if (Array.isArray( value )) {
2293 const textareas = jQuery('.wp-chatbot-lng-items').find('input[name="' + key + '[]"]');
2294 textareas.each(function(index) {
2295 if (index < value.length) {
2296 jQuery(this).val(value[index]);
2297 }
2298 });
2299 }else{
2300 jQuery('input[name="' + key + '"]').val(value);
2301 }
2302 });
2303 jQuery("#submit-language").click();
2304 // processResponse(response.data);
2305 }
2306 })
2307 .fail(function(jqXHR, textStatus, errorThrown) {
2308 console.error('AJAX Fail:', textStatus, errorThrown);
2309 });
2310 }
2311 }
2312
2313
2314