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

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