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

2,284 lines 124.2 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('click', '#save_setting', function(){
1411 if ($('#is_ai_enabled').is(":checked")){
1412 var is_ai_enabled = 1;
1413 }else{
1414 var is_ai_enabled = 0;
1415 }
1416 if($('#is_ai_only_mode').is(":checked")){
1417 var is_ai_only_mode = 1;
1418 }else{
1419 var is_ai_only_mode = 0;
1420 }
1421 if($('#conversation_continuity').is(":checked")){
1422 var conversation_continuity = 1;
1423 }else{
1424 var conversation_continuity = 0;
1425 }
1426 if($('#is_relevant_enabled').is(":checked")){
1427 var is_relevant_enabled = 1;
1428 }else{
1429 var is_relevant_enabled = 0;
1430 }
1431 if($('#is_page_suggestion_enabled').is(":checked")){
1432 var is_page_suggestion_enabled = 1;
1433 }else{
1434 var is_page_suggestion_enabled = 0;
1435 }
1436 if($('#is_context_awareness_enabled').is(":checked")){
1437 var is_context_awareness_enabled = 1;
1438 }else{
1439 var is_context_awareness_enabled = 0;
1440 }
1441 if($('#is_page_rag_enabled').is(":checked")){
1442 var is_page_rag_enabled = 1;
1443 }else{
1444 var is_page_rag_enabled = 0;
1445 }
1446 if($('#is_stream_enabled').is(":checked")){
1447 var is_stream_enabled = 1;
1448 }else{
1449 var is_stream_enabled = 0;
1450 }
1451 var post_types = $.map($('input[name="site_search_posttypes[]"]:checked'), function(c){return c.value; });
1452 var api_key = $( "input[name='api_key']" ).val();
1453 var openai_engines = $("[id*='openai_engines'] :selected").val();
1454 var qcld_openai_prompt = $("[id*='qcld_openai_prompt'] :selected").val();
1455 var max_tokens = $("input[name='max_tokens']" ).val();
1456 var file_id = $("input[name='file_id']" ).val();
1457 var temperature = $("input[name='temperature']" ).val();
1458 var presence_penalty = $("input[name='presence_penalty']" ).val();
1459 var openai_exclude_keyword = jQuery('#qcld_openai_exclude_keyword').val();
1460 var openai_include_keyword = jQuery('#qcld_openai_include_keyword').val();
1461 var qcld_openai_system_content = jQuery('#qcld_openai_system_content').val();
1462 var qcld_openai_append_content = jQuery('#qcld_openai_append_content').val();
1463 if(qcld_openai_prompt == "custom_prompt"){
1464 var qcld_openai_prompt_custom = $("#qcld_openai_prompt_custom").val();
1465 }
1466 var frequency_penalty = $("input[name='frequency_penalty']" ).val();
1467 var openai_post_type = $("input[name='site_search_posttypes[]']:checked").map(function () {
1468 return this.value;
1469 }).get();
1470
1471 $.ajax({
1472 url: qcld_gemini_admin_data.ajax_url,
1473 type:'POST',
1474 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}),
1475
1476 success: function(data){
1477 $('#result').html(data);
1478 if(data.icon == "success"){
1479 var color = "color: green";
1480 }else if(data.icon == "error"){
1481 var color = "color: red";
1482 }
1483 Swal.fire({
1484 title: 'Your settings are saved.',
1485 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>',
1486 width: 450,
1487 icon: 'success',
1488 confirmButtonText: 'Got it',
1489 confirmButtonWidth: 100,
1490 confirmButtonClass: 'btn btn-lg'
1491 }).then((result) => {
1492 if (result.isConfirmed) {
1493 $.ajax({
1494 url: qcld_gemini_admin_data.ajax_url,
1495 type: 'POST',
1496 data: {
1497 action: 'update_settings_option',
1498 nonce: qcld_gemini_admin_data.ajax_nonce,
1499 disable_ss: 1
1500 },
1501
1502 });
1503 }
1504 });
1505 }
1506 });
1507
1508 })
1509
1510 //Additional Code - 04-12-2023
1511 //For AI Enabled + Site Search Disabling
1512 $('.qcl-openai').on('click', '#save_setting_disable_ss', function(){
1513
1514 console.log($('#conversation_continuity').is(":checked"))
1515 if ($('#is_ai_enabled').is(":checked")){
1516 var is_ai_enabled = 1;
1517 }else{
1518 var is_ai_enabled = 0;
1519 }
1520 if($('#is_ai_only_mode').is(":checked")){
1521 var is_ai_only_mode = 1;
1522 }else{
1523 var is_ai_only_mode = 0;
1524 }
1525 if($('#conversation_continuity').is(":checked")){
1526 var conversation_continuity = 1;
1527 }else{
1528 var conversation_continuity = 0;
1529 }
1530 console.log(conversation_continuity)
1531 if($('#is_relevant_enabled').is(":checked")){
1532 var is_relevant_enabled = 1;
1533 }else{
1534 var is_relevant_enabled = 0;
1535 }
1536 if($('#is_page_suggestion_enabled').is(":checked")){
1537 var is_page_suggestion_enabled = 1;
1538 }else{
1539 var is_page_suggestion_enabled = 0;
1540 }
1541 if($('#is_context_awareness_enabled').is(":checked")){
1542 var is_context_awareness_enabled = 1;
1543 }else{
1544 var is_context_awareness_enabled = 0;
1545 }
1546
1547 var api_key = $( "input[name='api_key']" ).val();
1548 var openai_engines = $("[id*='openai_engines'] :selected").val();
1549 var qcld_openai_prompt = $("[id*='qcld_openai_prompt'] :selected").val();
1550 var max_tokens = $("input[name='max_tokens']" ).val();
1551 var file_id = $("input[name='file_id']" ).val();
1552 var temperature = $("input[name='temperature']" ).val();
1553 var presence_penalty = $("input[name='presence_penalty']" ).val();
1554 var openai_exclude_keyword = jQuery('#qcld_openai_exclude_keyword').val();
1555 var openai_include_keyword = jQuery('#qcld_openai_include_keyword').val();
1556 if(qcld_openai_prompt == "custom_prompt"){
1557 var qcld_openai_prompt_custom = $("#qcld_openai_prompt_custom").val();
1558 }
1559 var frequency_penalty = $("input[name='frequency_penalty']" ).val();
1560
1561 $.ajax({
1562 url: qcld_gemini_admin_data.ajax_url,
1563 type:'POST',
1564 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}),
1565 success: function(data){
1566 $('#result').html(data);
1567 location.reload();
1568 }
1569 });
1570
1571
1572
1573 }) //Additional Code - 04-12-2023 ends here
1574 }
1575 var settingsRag = document.getElementById("save_rag_setting");
1576 if (settingsRag) {
1577 $('.qcl-openai').on('click', '#save_rag_setting', function () {
1578
1579 var rag_embed_pages = $('#rag_embed_pages').is(':checked') ? 1 : 0;
1580 var rag_embed_posts = $('#rag_embed_posts').is(':checked') ? 1 : 0;
1581 var rag_auto_sync_enabled = $('#rag_auto_sync_enabled').is(':checked') ? 1 : 0;
1582 var rag_embed_str = $('#rag_embed_str').is(':checked') ? 1 : 0;
1583
1584 var rag_embed_cpts = [];
1585 $('.rag_embed_cpts_checkbox:checked').each(function() {
1586 rag_embed_cpts.push($(this).val());
1587 });
1588
1589 $.ajax({
1590 url: qcld_gemini_admin_data.ajax_url,
1591 type: 'POST',
1592 data: ({
1593 action: 'qcld_rag_settings_option',
1594 nonce: qcld_gemini_admin_data.ajax_nonce,
1595 rag_embed_pages: rag_embed_pages,
1596 rag_embed_posts: rag_embed_posts,
1597 rag_auto_sync_enabled: rag_auto_sync_enabled,
1598 rag_embed_str: rag_embed_str,
1599 rag_embed_cpts: rag_embed_cpts
1600 }),
1601 success: function (data) {
1602 $('#result').html(data);
1603 Swal.fire({
1604 title: 'Your settings are saved.',
1605 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>',
1606 width: 450,
1607 icon: 'success',
1608 confirmButtonText: 'Got it',
1609 confirmButtonWidth: 100,
1610 confirmButtonClass: 'btn btn-lg'
1611 }).then((result) => {
1612 if (result.isConfirmed) {
1613 $.ajax({
1614 url: qcld_gemini_admin_data.ajax_url,
1615 type: 'POST',
1616 data: {
1617 action: '',
1618 nonce: qcld_gemini_admin_data.ajax_nonce,
1619 disable_ss: 1
1620 },
1621
1622 });
1623 }
1624 });
1625
1626 location.reload();
1627 }
1628 });
1629 })
1630
1631 $('.qcl-openai').on('click', '#rag_embed_btn', function (e) {
1632 e.preventDefault();
1633 var btn = $(this);
1634 var originalText = btn.text();
1635 btn.text('Saving settings...');
1636
1637 var rag_embed_pages = $('#rag_embed_pages').is(':checked') ? 1 : 0;
1638 var rag_embed_posts = $('#rag_embed_posts').is(':checked') ? 1 : 0;
1639 var rag_auto_sync_enabled = $('#rag_auto_sync_enabled').is(':checked') ? 1 : 0;
1640 var rag_embed_str = $('#rag_embed_str').is(':checked') ? 1 : 0;
1641
1642 var rag_embed_cpts = [];
1643 $('.rag_embed_cpts_checkbox:checked').each(function() {
1644 rag_embed_cpts.push($(this).val());
1645 });
1646
1647 $.ajax({
1648 url: qcld_gemini_admin_data.ajax_url,
1649 type: 'POST',
1650 data: ({
1651 action: 'qcld_rag_settings_option',
1652 nonce: qcld_gemini_admin_data.ajax_nonce,
1653 rag_embed_pages: rag_embed_pages,
1654 rag_embed_posts: rag_embed_posts,
1655 rag_auto_sync_enabled: rag_auto_sync_enabled,
1656 rag_embed_str: rag_embed_str,
1657 rag_embed_cpts: rag_embed_cpts
1658 }),
1659 success: function (data) {
1660 console.log(data);
1661 btn.text('Embedding...');
1662 $('#rag_embed_form').submit();
1663 }
1664 });
1665 })
1666
1667 // Delete Document
1668 $('.qcl-openai').on('click', '.rag-delete-doc', function () {
1669 var id = $(this).data('id');
1670
1671 Swal.fire({
1672 title: 'Are you sure?',
1673 text: "You won't be able to revert this!",
1674 icon: 'warning',
1675 showCancelButton: true,
1676 confirmButtonColor: '#3085d6',
1677 cancelButtonColor: '#d33',
1678 confirmButtonText: 'Yes, delete it!'
1679 }).then((result) => {
1680 if (result.isConfirmed) {
1681 $.ajax({
1682 url: qcld_gemini_admin_data.ajax_url,
1683 type: 'POST',
1684 data: {
1685 action: 'qcld_rag_delete_document',
1686 nonce: qcld_gemini_admin_data.ajax_nonce,
1687 id: id
1688 },
1689 success: function (res) {
1690 if (res.success) {
1691 $('#rag-doc-' + id).remove();
1692 Swal.fire('Deleted!', res.data, 'success');
1693 } else {
1694 Swal.fire('Error', res.data, 'error');
1695 }
1696 }
1697 });
1698 }
1699 })
1700 });
1701
1702 // Select All Checkbox
1703 $('.qcl-openai').on('change', '#rag-select-all', function() {
1704 $('.rag-doc-checkbox').prop('checked', $(this).prop('checked'));
1705 });
1706
1707 // Bulk Actions (Apply)
1708 $('.qcl-openai').on('click', '#rag-apply-bulk-action', function() {
1709 var action = $('#rag-bulk-action-selector').val();
1710 if (action !== 'delete') {
1711 Swal.fire('Info', 'Please select a valid bulk action.', 'info');
1712 return;
1713 }
1714
1715 var selectedIds = [];
1716 $('.rag-doc-checkbox:checked').each(function() {
1717 selectedIds.push($(this).val());
1718 });
1719
1720 if (selectedIds.length === 0) {
1721 Swal.fire('Warning', 'Please select at least one document.', 'warning');
1722 return;
1723 }
1724
1725 Swal.fire({
1726 title: 'Are you sure?',
1727 text: "Delete " + selectedIds.length + " selected documents? This cannot be undone!",
1728 icon: 'warning',
1729 showCancelButton: true,
1730 confirmButtonColor: '#3085d6',
1731 cancelButtonColor: '#d33',
1732 confirmButtonText: 'Yes, delete selected!'
1733 }).then((result) => {
1734 if (result.isConfirmed) {
1735 $.ajax({
1736 url: qcld_gemini_admin_data.ajax_url,
1737 type: 'POST',
1738 data: {
1739 action: 'qcld_rag_bulk_delete_documents',
1740 nonce: qcld_gemini_admin_data.ajax_nonce,
1741 ids: selectedIds
1742 },
1743 success: function(res) {
1744 if (res.success) {
1745 selectedIds.forEach(function(id) {
1746 $('#rag-doc-' + id).remove();
1747 });
1748 $('#rag-select-all').prop('checked', false);
1749 $('#rag-bulk-action-selector').val('-1');
1750 Swal.fire('Deleted!', res.data, 'success');
1751 } else {
1752 Swal.fire('Error', res.data, 'error');
1753 }
1754 }
1755 });
1756 }
1757 });
1758 });
1759
1760 // Delete All Documents
1761 $('.qcl-openai').on('click', '#rag-delete-all', function() {
1762 Swal.fire({
1763 title: 'CRITICAL WARNING!',
1764 text: "This will delete ALL documents in your Knowledge Base. This action is IRREVERSIBLE!",
1765 icon: 'error',
1766 showCancelButton: true,
1767 confirmButtonColor: '#d33',
1768 cancelButtonColor: '#3085d6',
1769 confirmButtonText: 'YES, DELETE EVERYTHING!'
1770 }).then((result) => {
1771 if (result.isConfirmed) {
1772 $.ajax({
1773 url: qcld_gemini_admin_data.ajax_url,
1774 type: 'POST',
1775 data: {
1776 action: 'qcld_rag_delete_all_documents',
1777 nonce: qcld_gemini_admin_data.ajax_nonce
1778 },
1779 success: function(res) {
1780 if (res.success) {
1781 $('#rag-knowledge-base-list').html('<tr><td colspan="6">No documents found in knowledge base.</td></tr>');
1782 $('#rag-select-all').prop('checked', false);
1783 Swal.fire('Cleared!', res.data, 'success');
1784 } else {
1785 Swal.fire('Error', res.data, 'error');
1786 }
1787 }
1788 });
1789 }
1790 });
1791 });
1792
1793 // Edit Document - Open Modal
1794 $('.qcl-openai').on('click', '.rag-edit-doc', function () {
1795 var id = $(this).data('id');
1796 $.ajax({
1797 url: qcld_gemini_admin_data.ajax_url,
1798 type: 'POST',
1799 data: {
1800 action: 'qcld_rag_get_document',
1801 nonce: qcld_gemini_admin_data.ajax_nonce,
1802 id: id
1803 },
1804 success: function (res) {
1805 if (res.success) {
1806 $('#edit-doc-id').val(res.data.id);
1807 $('#edit-doc-title').val(res.data.title);
1808 $('#edit-doc-content').val(res.data.content);
1809 $('#rag-edit-modal').show();
1810 } else {
1811 Swal.fire('Error', res.data, 'error');
1812 }
1813 }
1814 });
1815 });
1816
1817 // Close Edit Modal
1818 $(document).on('click', '#close-edit-modal', function () {
1819 $('#rag-edit-modal').hide();
1820 });
1821
1822 // Manual Sync Document
1823 $(document).on('click', '.rag-sync-doc', function(e) {
1824 e.preventDefault();
1825 var btn = $(this);
1826 var docId = btn.data('id');
1827
1828 if (!confirm('Are you sure you want to re-sync this document from its source?')) {
1829 return;
1830 }
1831
1832 btn.prop('disabled', true).text('Syncing...');
1833
1834 $.post(qcld_gemini_admin_data.ajax_url, {
1835 action: 'qcld_rag_manual_sync',
1836 nonce: qcld_gemini_admin_data.ajax_nonce,
1837 id: docId
1838 }, function(response) {
1839 btn.prop('disabled', false).text('Sync');
1840 if (response.success) {
1841 alert(response.data.message);
1842 location.reload();
1843 } else {
1844 alert('Error: ' + response.data.message);
1845 }
1846 });
1847 });
1848
1849 // Save Edit Document
1850 $(document).on('click', '#save-edit-doc', function () {
1851 var id = $('#edit-doc-id').val();
1852 var title = $('#edit-doc-title').val();
1853 var content = $('#edit-doc-content').val();
1854 var btn = $(this);
1855
1856 btn.prop('disabled', true).text('Saving...');
1857
1858 $.ajax({
1859 url: qcld_gemini_admin_data.ajax_url,
1860 type: 'POST',
1861 data: {
1862 action: 'qcld_rag_update_document',
1863 nonce: qcld_gemini_admin_data.ajax_nonce,
1864 id: id,
1865 title: title,
1866 content: content
1867 },
1868 success: function (res) {
1869 btn.prop('disabled', false).text('Save Changes');
1870 if (res.success) {
1871 $('#rag-edit-modal').hide();
1872 Swal.fire('Updated!', res.data, 'success').then(() => {
1873 location.reload();
1874 });
1875 } else {
1876 Swal.fire('Error', res.data, 'error');
1877 }
1878 }
1879 });
1880 });
1881 }
1882 // Delete Document
1883 $('.qcl-openai').on('click', '.rag-delete-doc', function () {
1884 var id = $(this).data('id');
1885
1886 Swal.fire({
1887 title: 'Are you sure?',
1888 text: "You won't be able to revert this!",
1889 icon: 'warning',
1890 showCancelButton: true,
1891 confirmButtonColor: '#3085d6',
1892 cancelButtonColor: '#d33',
1893 confirmButtonText: 'Yes, delete it!'
1894 }).then((result) => {
1895 if (result.isConfirmed) {
1896 $.ajax({
1897 url: qcld_gemini_admin_data.ajax_url,
1898 type: 'POST',
1899 data: {
1900 action: 'qcld_rag_delete_document',
1901 nonce: qcld_gemini_admin_data.ajax_nonce,
1902 id: id
1903 },
1904 success: function (res) {
1905 if (res.success) {
1906 $('#rag-doc-' + id).remove();
1907 Swal.fire('Deleted!', res.data, 'success');
1908 } else {
1909 Swal.fire('Error', res.data, 'error');
1910 }
1911 }
1912 });
1913 }
1914 })
1915 });
1916
1917 $('.qcl-openai').on('click', '#qcld_check_connection', function(){
1918 jQuery('#rotationloader').css('display','inline-block');
1919 $.ajax({
1920 url: qcld_gemini_admin_data.ajax_url,
1921 type:'POST',
1922 data: ({action : 'openai_troubleshooting',nonce:qcld_gemini_admin_data.ajax_nonce}),
1923 success: function(data){
1924
1925 $('#result').html(data);
1926 Swal.fire({
1927 title: data.title,
1928 html: data.msg,
1929 width: 450,
1930 icon: data.icon,
1931 confirmButtonText: 'Got it',
1932 customClass: 'connection-modal',
1933 })
1934 jQuery('#rotationloader').css('display','none');
1935 // location.reload();
1936 }
1937 });
1938 })
1939 $('#ai-provider-selector').on('change', function () {
1940
1941 var selected = $(this).val();
1942 console.log('Provider changed to: ' + selected);
1943 $('.ai-settings-provider').hide();
1944 $('#' + selected + '-settings').show();
1945 $('#rag-settings').hide(); // Ensure RAG is hidden when switching providers
1946 });
1947
1948 if (window.location.hash.indexOf('#ai-knowledge-base-tab') === 0) {
1949 $('.ai-settings-provider').hide();
1950 $('#rag-settings').show();
1951 }
1952
1953 $('#ai-knowledge-base-tab').on('click', function (e) {
1954 e.preventDefault();
1955 $('.ai-settings-provider').hide();
1956 $('#rag-settings').show();
1957 if (history.pushState) { history.pushState(null, null, '#ai-knowledge-base-tab'); }
1958 });
1959 // common Ai settings tab
1960 $('#qcld-common-ai-settings').on('click', function (e) {
1961 e.preventDefault();
1962 $('.ai-settings-provider').hide();
1963 $('#common-ai-settings').show();
1964 if (history.pushState) { history.pushState(null, null, '#common-ai-settings'); }
1965 });
1966 $('#ai-knowledge-base-tab-openai').on('click', function (e) {
1967 e.preventDefault();
1968 $('.ai-settings-provider').hide();
1969 $('#rag-settings').show();
1970 if (history.pushState) { history.pushState(null, null, '#ai-knowledge-base-tab'); }
1971 });
1972 });
1973
1974 $(document).on('click', '.qcld_botopenai_generate_image', function (e) {
1975 var qcld_seo_button = $(this);
1976 var qcld_seo_prompt = $('#prompt').val();
1977 var qcld_seo_artist = $('#artist').val();
1978 var qcld_seo_art_style = $('#art_style').val();
1979 var qcld_seo_photography_style = $('#photography_style').val();
1980 var qcld_seo_lighting = $('#lighting').val();
1981 var qcld_seo_subject = $('#subject').val();
1982 var qcld_seo_camera_settings = $('#camera_settings').val();
1983 var qcld_seo_composition = $('#composition').val();
1984 var qcld_seo_resolution = $('#resolution').val();
1985 var qcld_seo_color = $('#color').val();
1986 var qcld_seo_special_effects = $('#special_effects').val();
1987 var qcld_seo_img_size = $('#img_size').val();
1988 var qcld_seo_num_images = $('#num_images').val();
1989
1990
1991 if(qcld_seo_prompt === ''){
1992 alert('Something went wrong');
1993 }else{
1994
1995 var qcld_seo_post_status = $('.qcld_seo-post-status:checked').val();
1996 var qcld_seo_schedule = $('.qcld_seo-schedule-post').val();
1997
1998 var data = {
1999 qcld_seo_prompt: qcld_seo_prompt,
2000 qcld_seo_artist: qcld_seo_artist,
2001 qcld_seo_art_style: qcld_seo_art_style,
2002 qcld_seo_photography_style: qcld_seo_photography_style,
2003 qcld_seo_lighting: qcld_seo_lighting,
2004 qcld_seo_subject: qcld_seo_subject,
2005 qcld_seo_camera_settings: qcld_seo_camera_settings,
2006 qcld_seo_composition: qcld_seo_composition,
2007 qcld_seo_resolution: qcld_seo_resolution,
2008 qcld_seo_color: qcld_seo_color,
2009 qcld_seo_special_effects: qcld_seo_special_effects,
2010 qcld_seo_img_size: qcld_seo_img_size,
2011 qcld_seo_num_images: qcld_seo_num_images,
2012 action: 'qcld_openai_image_generate',
2013 nonce: qcld_gemini_admin_data.ajax_url,
2014 };
2015
2016 $.ajax({
2017 url: qcld_gemini_admin_data.ajax_url,
2018 data: data,
2019 type: 'POST',
2020 dataType: 'JSON',
2021 beforeSend: function(){
2022 qcld_seo_button.attr('disabled','disabled');
2023 qcld_seo_button.append('<span class="spinner"></span>');
2024 qcld_seo_button.find('.spinner').css('visibility','unset');
2025 },
2026 success: function (res){
2027 qcld_seo_button.removeAttr('disabled');
2028 qcld_seo_button.find('.spinner').remove();
2029 if(res.status === 'success'){
2030 // window.location.href = qcld_seo_bulk_content + '&qcld_seo_track='+res.id
2031 $('#qcld_seo-tab-generated-text').html( res.html );
2032 }
2033 else{
2034 alert('Something went wrong');
2035 }
2036 },
2037 error: function (){
2038 qcld_seo_button.removeAttr('disabled');
2039 qcld_seo_button.find('.spinner').remove();
2040 alert('Something went wrong');
2041 }
2042 })
2043 }
2044 });
2045 $(document).on('click', '.qcld_botopenai_generate_image_download', function (e) {
2046 e.preventDefault();
2047
2048 var url = $(this).find("img").attr('src');
2049 console.log(url)
2050 var qcld_seo_button = $(this);
2051 var image_url = $(this).find('img').attr('src');
2052 var image_page_url = $(this).find('img').attr('src');
2053 var photographer = $(this).find('img').data('photographer');
2054 var q = '';
2055 var data = {
2056 qcld_seo_openai_images_upload : "1",
2057 image_url : image_url,
2058 image_src_page : image_page_url,
2059 image_user : photographer,
2060 q : q,
2061 action : 'qcld_openai_image_generate_url'
2062 };
2063 $.ajax({
2064 url: qcld_gemini_admin_data.ajax_url,
2065 data: data,
2066 type: 'POST',
2067 dataType: 'JSON',
2068 beforeSend: function(){
2069 qcld_seo_button.removeAttr('disabled').removeClass("uploading").find('.qcld_seo_msg').remove();
2070 qcld_seo_button.attr('disabled','disabled');
2071 qcld_seo_button.addClass('uploading').find('.qcld_seo_download img').replaceWith('');
2072 },
2073 success: function ( res ){
2074 console.log(res.data.html);
2075 qcld_seo_button.find('.qcld_seo_download img').replaceWith('<p class="qcld_seo_msg">'+res.data.html+'<p>' );
2076 const newBlock = wp.blocks.createBlock( "core/image", {
2077 id: res.data.attachment_id,
2078 url: res.data.url,
2079 width: res.data.width,
2080 height: res.data.height,
2081 sizeSlug: res.data.size,
2082 alt: '',
2083 title: '',
2084 caption: '',
2085 });
2086 wp.data.dispatch("core/editor").insertBlocks(newBlock);
2087 },
2088 error: function (){
2089 qcld_seo_button.removeAttr('disabled');
2090 }
2091 })
2092
2093 });
2094
2095 $(document).on('click','#qcld_article_keyword_suggestion',function(e){
2096 var qcld_keyword_suggestion = $('#qcld_article_keyword_suggestion_mf').val();
2097 var qcld_keyword_number = $('#qcld_keyword_number').val();
2098 var qcld_article_language = $('#qcld_article_language').val();
2099 var qcld_article_number_of_heading = $('#qcld_article_number_of_heading').val();
2100 var qcld_article_heading_tag = $('#qcld_article_heading_tag').val();
2101 var qcld_article_heading_style = $('#qcld_article_heading_style').val();
2102 var qcld_article_heading_tone = $('#qcld_article_heading_tone').val();
2103 var qcld_article_heading_img = $('#qcld_article_heading_img').val();
2104 var qcld_article_heading_img = $("input[name=qcld_article_heading_img]:checked").val();
2105 var qcld_article_heading_tagline = $("input[name=qcld_article_heading_tagline]:checked").val();
2106 var qcld_article_heading_intro = $("input[name=qcld_article_heading_intro]:checked").val();
2107 var qcld_article_heading_conclusion = $("input[name=qcld_article_heading_conclusion]:checked").val();
2108 var qcld_article_label_anchor_text = $('#qcld_article_label_anchor_text').val();
2109 var qcld_article_target_url = $('#qcld_article_target_url').val();
2110 var qcld_article_target_label_cta = $('#qcld_article_target_label_cta').val();
2111 var qcld_article_cta_pos = $('#qcld_article_cta_pos').val();
2112 var qcld_article_label_keywords = $('#qcld_article_label_keywords').val();
2113 var qcld_article_label_word_to_avoid= $('#qcld_article_label_word_to_avoid').val();
2114 var qcld_article_label_keywords_bold= $("input[name=qcld_article_label_keywords_bold]:checked").val();
2115 var qcld_article_heading_faq = $("input[name=qcld_article_heading_faq]:checked").val();
2116 var qcld_article_img_size = $('#qcld_article_img_size').val();
2117
2118 $('#qcld_article_keyword_suggestion').addClass('spinning');
2119 $('#qcld_article_keyword_suggestion').prop("disabled",true);
2120 $('#linkbait_article_keyword_data').html('');
2121 $.ajax({
2122 url: qcld_gemini_admin_data.ajax_url,
2123 method: 'POST',
2124 data: {
2125 'action': 'openai_keyword_suggestion_content',
2126 'keyword' : qcld_keyword_suggestion,
2127 'keyword_number' : qcld_keyword_number,
2128 'qcld_article_language' : qcld_article_language,
2129 'qcld_article_number_of_heading' : qcld_article_number_of_heading,
2130 'qcld_article_heading_tag' : qcld_article_heading_tag,
2131 'qcld_article_heading_style' : qcld_article_heading_style,
2132 'qcld_article_heading_tone' : qcld_article_heading_tone,
2133 'qcld_article_heading_img' : qcld_article_heading_img,
2134 'qcld_article_heading_tagline' : qcld_article_heading_tagline,
2135 'qcld_article_heading_intro' : qcld_article_heading_intro,
2136 'qcld_article_heading_conclusion' : qcld_article_heading_conclusion,
2137 'qcld_article_label_anchor_text' : qcld_article_label_anchor_text,
2138 'qcld_article_target_url' : qcld_article_target_url,
2139 'qcld_article_target_label_cta' : qcld_article_target_label_cta,
2140 'qcld_article_cta_pos' : qcld_article_cta_pos,
2141 'qcld_article_label_keywords' : qcld_article_label_keywords,
2142 'qcld_article_label_word_to_avoid': qcld_article_label_word_to_avoid,
2143 'qcld_article_label_keywords_bold': qcld_article_label_keywords_bold,
2144 'qcld_article_heading_faq' : qcld_article_heading_faq,
2145 'qcld_article_img_size' : qcld_article_img_size,
2146 //'selectedlanguage': selectedlanguage,
2147 },
2148 dataType: 'json',
2149 success: function(response) {
2150 //$('#linkbait_keyword_data').append(response.keywords);
2151 $('#qcld_article_keyword_suggestion').prop("disabled",false);
2152 $('#qcld_article_keyword_suggestion').removeClass('spinning');
2153 $('#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>');
2154 $('#linkbait_article_keyword_data').append('<div class="qcld_content_result_wrap"><div class="qcld_rewrite_result_count">' + response.keywords.split(" ").length +'</div></div>');
2155
2156 $('#qcld_content_result_msg').focus();
2157 $('#qcld_content_result_msg').focusout();
2158 }
2159 });
2160
2161
2162
2163 });
2164
2165 $('#ai-provider-selector').on('change', function() {
2166 var selected = $(this).val();
2167 $('.ai-settings-provider').hide();
2168 $('#' + selected + '-settings').show();
2169 });
2170
2171 $('#is_rate_limiting_enabled').on('change', function () {
2172 if ($(this).is(":checked")) {
2173 $('#rate_limit_settings').show();
2174 $('.rate-limit-input').prop('disabled', false);
2175 $('.rate-limit-timeframe').prop('disabled', false);
2176 } else {
2177 $('#rate_limit_settings').hide();
2178 $('.rate-limit-input').prop('disabled', true);
2179 $('.rate-limit-timeframe').prop('disabled', true);
2180 }
2181 });
2182 $('.qcl-openai').on('click', '#qcld_openai_rate_limit_save_setting', function () {
2183 console.log('Saving rate limit settings...');
2184 if ($('#is_rate_limiting_enabled').is(":checked")) {
2185 var is_rate_limiting_enabled = 1;
2186 } else {
2187 var is_rate_limiting_enabled = 0;
2188 }
2189 var rate_limits = {};
2190 var rate_limit_timeframes = {};
2191 // Collect rate limits for each role
2192 $('.rate-limit-input').each(function () {
2193 var role = $(this).attr('id').replace('rate_limit_', '');
2194 var limit = $(this).val();
2195 rate_limits[role] = limit;
2196 rate_limit_timeframes[role] = $('#rate_limit_timeframe_' + role).val();
2197 });
2198 $.ajax({
2199 url: ajax_object.ajax_url,
2200 type: 'POST',
2201 data: ({
2202 action: 'rate_limit_settings_option',
2203 nonce: ajax_object.ajax_nonce,
2204 is_rate_limiting_enabled: is_rate_limiting_enabled,
2205 rate_limits: rate_limits,
2206 rate_limit_timeframes: rate_limit_timeframes
2207 }),
2208 success: function (data) {
2209 $('#result').html(data);
2210 Swal.fire({
2211 title: 'Your settings are saved.',
2212 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>',
2213 width: 450,
2214 icon: 'success',
2215 confirmButtonText: 'Got it',
2216 confirmButtonWidth: 100,
2217 confirmButtonClass: 'btn btn-lg'
2218 })
2219 // location.reload();
2220 }
2221 });
2222 })
2223 });
2224
2225 document.addEventListener('DOMContentLoaded', function() {
2226 if(localStorage.getItem('qcld_general_settings_notice_closed') === '1') {
2227 var notice = document.querySelector('.qcld-general-settings-connection-notic');
2228 if(notice) notice.style.display = 'none';
2229 }
2230 });
2231
2232
2233
2234
2235 function qcld_wpbot_languageChange_from_center(langCode) {
2236 switch (langCode) {
2237 case "not_mine":
2238 setTimeout(() => {
2239 jQuery("#waring-message").show()
2240 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>')
2241 }, 500);
2242
2243 break;
2244 default:
2245 setTimeout(() => {
2246 jQuery("#waring-message").hide()
2247 }, 500);
2248 jQuery.ajax({
2249 url: qcld_gemini_admin_data.ajax_url, // e.g., 'wp-admin/admin-ajax.php'
2250 type: 'POST',
2251 data: {
2252 'action': 'qcld_change_language_from_center',
2253 'language' : langCode,
2254 'nonce': qcld_gemini_admin_data.ajax_nonce, // Include nonce for security
2255 },// Expecting JSON response from PHP
2256 })
2257 .done(function(response) {
2258 // If PHP returns a JSON object
2259 if (response.success === false || response.error) {
2260 } else {
2261 jQuery.each( response.data.data, function(key, value) {
2262 if (Array.isArray( value )) {
2263 const textareas = jQuery('.wp-chatbot-lng-items').find('input[name="' + key + '[]"]');
2264 textareas.each(function(index) {
2265 if (index < value.length) {
2266 jQuery(this).val(value[index]);
2267 }
2268 });
2269 }else{
2270 jQuery('input[name="' + key + '"]').val(value);
2271 }
2272 });
2273 jQuery("#submit-language").click();
2274 // processResponse(response.data);
2275 }
2276 })
2277 .fail(function(jqXHR, textStatus, errorThrown) {
2278 console.error('AJAX Fail:', textStatus, errorThrown);
2279 });
2280 }
2281 }
2282
2283
2284