Advertisement
Guest User

Duolingo Dictionary Script by CyberZero, v0.6 (2014.02.14.)

a guest
Jun 9th, 2014
459
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name            Duolingo Dictionary Script by CyberZero
  3. // @namespace       http://cyberzero.tk/
  4. // @version         0.6
  5. // @description     Megmutatja a felhasználó saját szótárát
  6. // @match           http://www.duolingo.com/*
  7. // @match           https://www.duolingo.com/*
  8. // @require         http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
  9. // @copyright       2014.02.14., CyberZero
  10. // ==/UserScript==
  11.  
  12. /*
  13. Ha segíteni szeretnél a program más nyelvekre való fordításában, akkor
  14. megtalálsz a FB-on.
  15.  
  16. If you would like to help in translating the program to other languages,
  17. you can find me on FB.
  18.  
  19. https://www.facebook.com/TheCyberZero
  20. */
  21.  
  22. //névtelen függvény a biztonság kedvéért
  23. (function(){
  24.     //css formázás
  25.     GM_addStyle(       
  26.         '.szotartabla{width:260px; table-layout:fixed; word-break: break-all; word-wrap: break-word; margin-top:20px;}'+
  27.         '.szotartabla tr{width:260px;}'+
  28.         '.szotartabla td{width:130px; text-align:center;}'
  29.     );
  30.    
  31.     //globális változók
  32.     var nyelv='en',
  33.         nyelv2='en',
  34.         tartalmazoElem,
  35.         szavak=[],
  36.         szohalmaz=[],
  37.         egyedi=[],
  38.         szavakszama=0,
  39.         osszeslekeres=0,
  40.         lekereseddig=0,
  41.         htmlke='',
  42.         szovegek={
  43.             'en':{
  44.                 betolto:'Loading...',
  45.                 szazalek:'Loaded: ',
  46.                 nemvolt:'You haven\'t learned a word yet.',
  47.                 szotar:'Dictionary',
  48.                 elrejtes:'Hide',
  49.                 nyomtatas:'Print',
  50.                 ab  :'Abkhazian',
  51.                 aa  :'Afar',
  52.                 af  :'Afrikaans',
  53.                 sq  :'Albanian',
  54.                 am  :'Amharic',
  55.                 ar  :'Arabic',
  56.                 hy  :'Armenian',
  57.                 as  :'Assamese',
  58.                 ay  :'Aymara',
  59.                 az  :'Azerbaijani',
  60.                 ba  :'Bashkir',
  61.                 eu  :'Basque',
  62.                 bn  :'Bengali, Bangla',
  63.                 dz  :'Bhutani',
  64.                 bh  :'Bihari',
  65.                 bi  :'Bislama',
  66.                 br  :'Breton',
  67.                 bg  :'Bulgarian',
  68.                 my  :'Burmese',
  69.                 be  :'Byelorussian',
  70.                 km  :'Cambodian',
  71.                 ca  :'Catalan',
  72.                 zh  :'Chinese',
  73.                 co  :'Corsican',
  74.                 ht  :'Croatian',
  75.                 cs  :'Czech',
  76.                 da  :'Danish',
  77.                 nl  :'Dutch',
  78.                 en  :'English, American',
  79.                 eo  :'Esperanto',
  80.                 et  :'Estonian',
  81.                 fo  :'Faeroese',
  82.                 fj  :'Fiji',
  83.                 fi  :'Finnish',
  84.                 fr  :'French',
  85.                 fy  :'Frisian',
  86.                 gb  :'Gaelic (Scots Gaelic)',
  87.                 gl  :'Galician',
  88.                 ka  :'Georgian',
  89.                 de  :'German',
  90.                 el  :'Greek',
  91.                 kl  :'Greenlandic',
  92.                 gn  :'Guarani',
  93.                 gu  :'Gujarati',
  94.                 ha  :'Hausa',
  95.                 iw  :'Hebrew',
  96.                 hi  :'Hindi',
  97.                 hu  :'Hungarian',
  98.                 is  :'Icelandic',
  99.                 in  :'Indonesian',
  100.                 ia  :'Interlingua',
  101.                 ie  :'Interlingue',
  102.                 ik  :'Inupiak',
  103.                 ga  :'Irish',
  104.                 it  :'Italian',
  105.                 ja  :'Japanese',
  106.                 jw  :'Javanese',
  107.                 kn  :'Kannada',
  108.                 ks  :'Kashmiri',
  109.                 kk  :'Kazakh',
  110.                 rw  :'Kinyarwanda',
  111.                 ky  :'Kirghiz',
  112.                 rn  :'Kirundi',
  113.                 ko  :'Korean',
  114.                 ku  :'Kurdish',
  115.                 lo  :'Laothian',
  116.                 la  :'Latin',
  117.                 lv  :'Latvian, Lettish',
  118.                 ln  :'Lingala',
  119.                 lt  :'Lithuanian',
  120.                 mk  :'Macedonian',
  121.                 mg  :'Malagasy',
  122.                 ms  :'Malay',
  123.                 ml  :'Malayalam',
  124.                 mt  :'Maltese',
  125.                 mi  :'Maori',
  126.                 mr  :'Marathi',
  127.                 mo  :'Moldavian',
  128.                 mn  :'Mongolian',
  129.                 na  :'Nauru',
  130.                 ne  :'Nepali',
  131.                 no  :'Norwegian',
  132.                 oc  :'Occitan',
  133.                 or  :'Oriya',
  134.                 om  :'Oromo, Afan',
  135.                 ps  :'Pashto, Pushto',
  136.                 fa  :'Persian',
  137.                 pl  :'Polish',
  138.                 pt  :'Portuguese',
  139.                 pa  :'Punjabi',
  140.                 qu  :'Quechua',
  141.                 rm  :'Rhaeto-Romance',
  142.                 ro  :'Romanian',
  143.                 ru  :'Russian',
  144.                 sm  :'Samoan',
  145.                 sg  :'Sangro',
  146.                 sa  :'Sanskrit',
  147.                 sr  :'Serbian',
  148.                 sh  :'Serbo-Croatian',
  149.                 st  :'Sesotho',
  150.                 tn  :'Setswana',
  151.                 sn  :'Shona',
  152.                 sd  :'Sindhi',
  153.                 si  :'Singhalese',
  154.                 ss  :'Siswati',
  155.                 sk  :'Slovak',
  156.                 sl  :'Slovenian',
  157.                 so  :'Somali',
  158.                 es  :'Spanish',
  159.                 su  :'Sudanese',
  160.                 sw  :'Swahili',
  161.                 sv  :'Swedish',
  162.                 tl  :'Tagalog',
  163.                 tg  :'Tajik',
  164.                 ta  :'Tamil',
  165.                 tt  :'Tatar',
  166.                 te  :'Tegulu',
  167.                 th  :'Thai',
  168.                 bo  :'Tibetan',
  169.                 ti  :'Tigrinya',
  170.                 to  :'Tonga',
  171.                 ts  :'Tsonga',
  172.                 tr  :'Turkish',
  173.                 tk  :'Turkmen',
  174.                 tw  :'Twi',
  175.                 uk  :'Ukrainian',
  176.                 ur  :'Urdu',
  177.                 uz  :'Uzbek',
  178.                 vi  :'Vietnamese',
  179.                 vo  :'Volapuk',
  180.                 cy  :'Welsh',
  181.                 wo  :'Wolof',
  182.                 xh  :'Xhosa',
  183.                 ji  :'Yiddish',
  184.                 yo  :'Yoruba',
  185.                 zu  :'Zulu'        
  186.             },
  187.             'hu':{
  188.                 betolto:'Betöltés folyamatban...',
  189.                 szazalek:'Betöltve: ',
  190.                 nemvolt:'Még nem tanultál meg szavakat.',
  191.                 szotar:'Szótár',
  192.                 elrejtes:'Elrejtés',
  193.                 nyomtatas:'Nyomtatás',
  194.                 ab  :'Abház',
  195.                 aa  :'Messze',
  196.                 af  :'Afrikaans',
  197.                 sq  :'Albán',
  198.                 am  :'Amhara',
  199.                 ar  :'Arab',
  200.                 hy  :'Örmény',
  201.                 as  :'Asszámi',
  202.                 ay  :'Aymara',
  203.                 az  :'Azerbajdzsáni',
  204.                 ba  :'Baskír',
  205.                 eu  :'Baszk',
  206.                 bn  :'Bengáli, Bangla',
  207.                 dz  :'Bhutani',
  208.                 bh  :'Bihari',
  209.                 bi  :'Bislama',
  210.                 br  :'Breton',
  211.                 bg  :'Bolgár',
  212.                 my  :'Burmai',
  213.                 be  :'Belorusz',
  214.                 km  :'Kambodzsai',
  215.                 ca  :'Katalán',
  216.                 zh  :'Kínai',
  217.                 co  :'Korzikai',
  218.                 ht  :'Horvát',
  219.                 cs  :'Cseh',
  220.                 da  :'Dán',
  221.                 nl  :'Holland',
  222.                 en  :'Angol, amerikai',
  223.                 eo  :'Eszperantó',
  224.                 et  :'Észt',
  225.                 fo  :'Feröer-szigetek',
  226.                 fj  :'Fidzsi-szigetek',
  227.                 fi  :'Finn',
  228.                 fr  :'Francia',
  229.                 fy  :'Fríz',
  230.                 gb  :'Gael (skót gael)',
  231.                 gl  :'Galíciai',
  232.                 ka  :'Grúz',
  233.                 de  :'Német',
  234.                 el  :'Görög',
  235.                 kl  :'Greenlandic',
  236.                 gn  :'Guarani',
  237.                 gu  :'Gudzsaráti',
  238.                 ha  :'Hausza',
  239.                 iw  :'Héber',
  240.                 hi  :'Hindi',
  241.                 hu  :'Magyar',
  242.                 is  :'Izlandi',
  243.                 in  :'Indonéz',
  244.                 ia  :'Interlingua',
  245.                 ie  :'Interlingue',
  246.                 ik  :'Inupiak',
  247.                 ga  :'Ír',
  248.                 it  :'Olasz',
  249.                 ja  :'Japán',
  250.                 jw  :'Jávai',
  251.                 kn  :'Kannada',
  252.                 ks  :'Kasmíri',
  253.                 kk  :'Kazah',
  254.                 rw  :'Kinyarwanda',
  255.                 ky  :'Kirgiz',
  256.                 rn  :'Kirundi',
  257.                 ko  :'Koreai',
  258.                 ku  :'Kurd',
  259.                 lo  :'Laothian',
  260.                 la  :'Latin',
  261.                 lv  :'Lett, lett',
  262.                 ln  :'Lingala',
  263.                 lt  :'Litván',
  264.                 mk  :'Macedóniai',
  265.                 mg  :'Madagaszkári',
  266.                 ms  :'Maláj',
  267.                 ml  :'Malayalam',
  268.                 mt  :'Máltai',
  269.                 mi  :'Maori',
  270.                 mr  :'Marathi',
  271.                 mo  :'Moldvai',
  272.                 mn  :'Mongol',
  273.                 na  :'Nauru',
  274.                 ne  :'Nepáli',
  275.                 no  :'Norvég',
  276.                 oc  :'Okszitán',
  277.                 or  :'Oriya',
  278.                 om  :'Oromo, Afan',
  279.                 ps  :'Pastu, Pushto',
  280.                 fa  :'Perzsa',
  281.                 pl  :'Lengyel',
  282.                 pt  :'Portugál',
  283.                 pa  :'Pandzsábi',
  284.                 qu  :'Quechua',
  285.                 rm  :'Rétoromán',
  286.                 ro  :'Román',
  287.                 ru  :'Orosz',
  288.                 sm  :'Szamoai',
  289.                 sg  :'Sangro',
  290.                 sa  :'Szanszkrit',
  291.                 sr  :'Szerb',
  292.                 sh  :'Szerb-horvát',
  293.                 st  :'Sesotho',
  294.                 tn  :'Setswana',
  295.                 sn  :'Shona',
  296.                 sd  :'Szindhi',
  297.                 si  :'Szingaléz',
  298.                 ss  :'Szinghaléz',
  299.                 sk  :'Szlovák',
  300.                 sl  :'Szlovén',
  301.                 so  :'Szomáliai',
  302.                 es  :'Spanyol',
  303.                 su  :'Szudáni',
  304.                 sw  :'Szuahéli',
  305.                 sv  :'Svéd',
  306.                 tl  :'Tagalog',
  307.                 tg  :'Tádzsik',
  308.                 ta  :'Tamil',
  309.                 tt  :'Tatár',
  310.                 te  :'Tegulu',
  311.                 th  :'Thai',
  312.                 bo  :'Tibeti',
  313.                 ti  :'Tigrinya',
  314.                 to  :'Tonga',
  315.                 ts  :'Tsonga',
  316.                 tr  :'Török',
  317.                 tk  :'Türkmén',
  318.                 tw  :'Twi',
  319.                 uk  :'Ukrán',
  320.                 ur  :'Urdu',
  321.                 uz  :'Üzbég',
  322.                 vi  :'Vietnami',
  323.                 vo  :'Volapük',
  324.                 cy  :'Walesi',
  325.                 wo  :'Wolof',
  326.                 xh  :'Hosza',
  327.                 ji  :'Jiddis',
  328.                 yo  :'Joruba',
  329.                 zu  :'Zulu   '
  330.             }
  331.         };
  332.    
  333.     //a html body eleme
  334.     var test=document.querySelector('body');
  335.    
  336.     //ha már betöltodött a body és az osztalya global-valami alakú, akkor kinyerjük belole a nyelvet
  337.     var talalatok=test.className.match(/global-(\w+)/) ;//["global-hu", "hu"]
  338.     if(test&&talalatok){
  339.         nyelv=talalatok[1]; //hu
  340.     }
  341.  
  342.     //készítünk egy div-et, beletöltjük a paraméterben megadott html kódot
  343.     //és visszatérünk az elso gyermekével, amit a htmlKod-ban töltünk bele
  344.     function elkeszit(htmlKod) {
  345.         var kulso=document.createElement('div');
  346.         kulso.innerHTML=htmlKod;
  347.         return kulso.firstChild;
  348.     }
  349.    
  350.     //nyelv alapján betölti a megadott szöveget a tömbbol
  351.     //kicseréli benne a helyettesítoket (pl.: %fhn%-t a felhasznalonev-re)
  352.     //és visszaadja a szöveget végeredményül
  353.     function szovegBetoltes(mit) {
  354.         var kinyert;
  355.         if (szovegek[nyelv] && szovegek[nyelv][mit]) //ha léteezik a nyelv az adatok között és a szöveg is benne amit keresünk
  356.                 kinyert=szovegek[nyelv][mit]; //akkor azt megadja
  357.         else if (szovegek.en[mit]) //ha nem, akkor megnézi, hogy az alap szövegekben benne van-e amit keresünk
  358.                 kinyert=szovegek.en[mit]; //ha igen akkor azt adja meg
  359.         else kinyert=mit;//ha nem, akkor a mit paramétert írja be amire rákerestünk        
  360.         return kinyert;
  361.     }
  362.  
  363.     //készítünk egy html elemet az elkeszit függvénnyel
  364.     //majd a szelektora alapján megkeressük az elemet
  365.     //ha létezik akkor
  366.     //a keresett elem szüloje elé beszúrja a tartalmazó elemet
  367.     //egy új divet szúr be (tartalmazoElem) a keresett szüloje és
  368.     //a fában, a keresett elem azonos szintjén lévo ot követo csomópont közé
  369.     function tartalmazoElemKeszit(keresettSzelektora,osztalya){
  370.         tartalmazoElem=elkeszit(
  371.             '<div class="'+osztalya+'">'+
  372.                 szovegBetoltes('betolto')+
  373.             '</div>'
  374.         );
  375.         var keresett=document.querySelector(keresettSzelektora);
  376.         if(keresett)keresett.parentNode.insertBefore(tartalmazoElem, keresett.nextSibling);
  377.     }
  378.    
  379.      //az AJAx-tól itt kapjuk meg a valaszt
  380.     function visszacsatolas(valasz){ //a saját szótáram rekurzívan kinyerve
  381.         try{
  382.             var adat=JSON.parse(valasz.responseText);   //a valaszban lévo JSON-kód tömb
  383.            
  384.             var aktualis=adat.vocab.map(
  385.                 function(szo){
  386.                     return szo['forms_data'].map(
  387.                         function(urlap){
  388.                             return [urlap['surface_form'], urlap['skill']['language'], urlap['pos_key'], urlap['skill']['short'], urlap['strength'].toFixed(8)];
  389.                         });
  390.                 });
  391.            
  392.             szavak=szavak.concat.apply(szavak,aktualis);
  393.             szavakszama+=adat.vocab.length; //ebben még duplikálás van
  394.            
  395.             if(adat.vocab.length==0){
  396.                 if(szavak.length>0){
  397.                     szavak=szavak.filter(
  398.                         function(el,i,a){
  399.                             if(i==a.indexOf(el)) return 1;
  400.                         return 0}
  401.                     );
  402.                                
  403.                     //halmazzá alakítjuk, hogy minden csak egyszer szerepeljen benne és összefuzzük sztirnggé
  404.                    
  405.                     //var osszefuz='';
  406.                     $.each(szavak, function(i, el){
  407.                         if($.inArray(el[0], egyedi) === -1){
  408.                             egyedi.push(el[0]);
  409.                             szohalmaz.push(el);
  410.                             //osszefuz+=el[0]+'+';
  411.                         }
  412.                     });
  413.                    
  414.                     var osszefuzesek=[];
  415.                     var hanyszor=Math.floor(egyedi.length/10);
  416.                     var maradek=egyedi.length%10;
  417.                     for(i=0;i<hanyszor;i++){
  418.                         osszefuzesek[i]='';
  419.                         for(var j=0; j<10; j++){
  420.                             osszefuzesek[i]+=egyedi[i*10+j]+"+";                           
  421.                         }
  422.                         osszefuzesek[i]=osszefuzesek[i].slice(0,-1);
  423.                     }
  424.                     if(maradek>0){
  425.                         osszefuzesek[hanyszor]='';
  426.                         for(i=0;i<maradek;i++){                    
  427.                             osszefuzesek[hanyszor]+=egyedi[hanyszor*10+i]+"+";
  428.                         }
  429.                         osszefuzesek[hanyszor]=osszefuzesek[hanyszor].slice(0,-1);
  430.                     }                  
  431.                                    
  432.                     nyelv2=szohalmaz[0][1]; //az elso elem nyelve a nyelv
  433.                    
  434.                     egyedi=[]; 
  435.                     osszeslekeres=osszefuzesek.length;
  436.                     for(i=0;i<osszeslekeres;i++){
  437.                         ajaxKeres("http://d.duolingo.com/words/hints/"+nyelv2+"/"+nyelv+"?format=new&sentence="+osszefuzesek[i]+"&cache=true&_="+(new Date().getTime()),visszacsatolas2);
  438.                     }                                  
  439.                 } else {
  440.                     tartalmazoElem.innerHTML=szovegBetoltes('nemvolt');
  441.                 }
  442.             } else {
  443.                 tartalmazoElem.innerHTML=szovegBetoltes('szazalek')+Math.round(100*szavakszama/adat.vocab_count)+"%";
  444.                 ajaxKeres("http://www.duolingo.com/words?page="+(adat.page+1)+"&sort_by=word&desc=false&_="+(new Date().getTime()),visszacsatolas);
  445.             }
  446.         } catch(e){ //hiba esetén kiírjuk a log-ba
  447.             console.log('Hiba!');
  448.             console.log(e.message);
  449.             if(e.stack) console.log(e.stack);
  450.         }
  451.     }
  452.    
  453.     function visszacsatolas2(valasz){ //a jelentések
  454.         try{
  455.             var adat=JSON.parse(valasz.responseText);
  456.            
  457.             //magyar értékek kiszurése egy asszociációs tömbbe
  458.             //amelynek kulcsai az angol szava
  459.             //és hozzájuk egy tömb tartozik a magyar jelentésekkel 
  460.             for(i=0;i<adat.tokens.length;i++){
  461.                 if(adat.tokens[i]['hint_table']!=null){
  462.                     //hogy a length foglalt szóra ne akadjon ki kulcsként
  463.                     //és azért végére írom a cz-t, hogy az abc sorrendet ne szúrja el
  464.                     var bovitett=adat.tokens[i].value+'cz';
  465.                     egyedi[bovitett]=[];
  466.                     for(j=0;j<adat.tokens[i]['hint_table']['rows'].length;j++){                
  467.                         for(z=0;z<adat.tokens[i]['hint_table']['rows'][j]['cells'].length;z++)
  468.                             if(adat.tokens[i]['hint_table']['rows'][j]['cells'][z]['hint'])
  469.                                 egyedi[bovitett].push(adat.tokens[i]['hint_table']['rows'][j]['cells'][z]['hint']);
  470.                     }
  471.                 };
  472.             }
  473.  
  474.             lekereseddig++;
  475.             if(lekereseddig==osszeslekeres) vegezetul();
  476.            
  477.         } catch(e){ //hiba esetén kiírjuk a log-ba
  478.             console.log('Hiba!');
  479.             console.log(e.message);
  480.             if(e.stack) console.log(e.stack);
  481.         }
  482.     }
  483.    
  484.     function vegezetul(){
  485.         //többszöri magyar értékek kiszurése
  486.         for (var kulcs in egyedi){     
  487.             var seged=[];
  488.             $.each(egyedi[kulcs], function(i, el){
  489.                 if($.inArray(el, seged) === -1) seged.push(el);
  490.             });
  491.             egyedi[kulcs]=seged;
  492.         }
  493.        
  494.         //szótár elkészítése              
  495.         htmlke+='<table class="szotartabla" border="1px black">'+
  496.                 '<tr><th>'+szovegBetoltes(nyelv2)+'</th><th>'+szovegBetoltes(nyelv)+'</th></tr>';
  497.         for (var kulcs in egyedi){
  498.             htmlke+='<tr>';            
  499.             var javitott=kulcs.slice(0,-2); //levágjuk a CZ-t, amit beraktunk, hogy ne okozzon hibát a length foglalt szó
  500.             if(egyedi[kulcs].length<=1){
  501.                 htmlke+='<td>'+javitott+'</td><td>'+egyedi[kulcs][0]+'</td>';
  502.                 htmlke+='</tr>';
  503.             } else {
  504.                 htmlke+='<td rowspan="'+egyedi[kulcs].length+'">'+javitott+'</td><td>'+egyedi[kulcs][0]+'</td>';
  505.                 htmlke+='</tr>';
  506.                 for(i=1;i<egyedi[kulcs].length;i++)
  507.                     htmlke+='<tr><td>'+egyedi[kulcs][i]+'</td></tr>';
  508.             }                                  
  509.         }
  510.         htmlke+='</table>';
  511.        
  512.         //kiürítjük a tartalmazo elembol a betöltés feliratot
  513.         tartalmazoElem.innerHTML='';
  514.         tartalmazoElem.appendChild(elkeszit(
  515.         '<iframe id="nyomtatni"></iframe>'));
  516.             //$('#nyomtatni').contents().find('body').innerHTML='KAKA';
  517.             //$('#nyomtatni').contents().find('body').append(elkeszit(htmlke));
  518.             //itt kéne a nyomtatni div-be másolni a táblázatot
  519.                 //de a FF hibás ezért rá kell rakni egy gombnyomásra
  520.        
  521.         tartalmazoElem.appendChild(elkeszit(
  522.         '<a id="szotarkibe" class="btn btn-primary btn-block btn-lg" href="javascript:;">'+szovegBetoltes('szotar')+'</a>'));
  523.         tartalmazoElem.appendChild(elkeszit(
  524.         '<a id="nyomtatas" class="btn btn-primary btn-block btn-lg" href="javascript:;">'+szovegBetoltes('nyomtatas')+'</a>'));
  525.         tartalmazoElem.appendChild(elkeszit(htmlke));
  526.  
  527.         $('#nyomtatni').hide(); //frame
  528.         $('.szotartabla').hide();
  529.         $('#nyomtatas').hide(); //gomb
  530.        
  531.         $('#szotarkibe').click(
  532.             function(){
  533.                 //ide került a nyomtatni div urítése és feltöltése
  534.                 $('#nyomtatni').contents().find('body').innerHTML='';
  535.                 $('#nyomtatni').contents().find('body').append(elkeszit(htmlke));
  536.                 kattintas(1);
  537.             }
  538.         );
  539.        
  540.         $('#nyomtatas').click(
  541.             function(){
  542.                 kattintas2();
  543.             }
  544.         );
  545.     }
  546.    
  547.     function kattintas(szov){
  548.         if(szov==1){
  549.             $('#szotarkibe').text(szovegBetoltes('elrejtes'));
  550.             $('#szotarkibe').click(
  551.                 function(){
  552.                     kattintas(0);
  553.                 }
  554.             );
  555.            
  556.             //kinézetváltás
  557.             $('#szotarkibe').removeClass("btn-primary");
  558.             $('#szotarkibe').addClass("btn-standard");
  559.            
  560.             $('.szotartabla').show();
  561.             $('#nyomtatas').show();
  562.         }else{
  563.             $('#szotarkibe').text(szovegBetoltes('szotar'));
  564.             $('#szotarkibe').click(
  565.                 function(){
  566.                     kattintas(1);
  567.                 }
  568.             );
  569.            
  570.             //kinézetváltás
  571.             $('#szotarkibe').removeClass("btn-standard");
  572.             $('#szotarkibe').addClass("btn-primary");
  573.            
  574.             $('.szotartabla').hide();
  575.             $('#nyomtatas').hide();
  576.         }
  577.     }
  578.    
  579.     function kattintas2(){ 
  580.         $('#nyomtatni').get(0).contentWindow.print();
  581.     }
  582.    
  583.     function ajaxKeres(url,cb){
  584.         GM_xmlhttpRequest({
  585.             method: "GET",
  586.             url:    url, //lekérjük a felhasználó adatlapját
  587.             onload: cb
  588.         });
  589.     }
  590.  
  591.     function mukodj(){
  592.         if (typeof jQuery === "function") {
  593.             //ezzel ellenörzöm, hogy készen áll-e már az oldal
  594.             //ha már létezik az elem, csak akkor folytatódik, egyébként kilép
  595.             if(document.querySelector('.szotar')){return;} 
  596.            
  597.             //ha egy másik fülre kattint majd vissza, akkor újra nyerje ki a szólistát
  598.             //ne az eddigiekhez adja hozzá
  599.             szavak=[];
  600.             szohalmaz=[];
  601.             egyedi=[];
  602.             szavakszama=0;
  603.             osszeslekeres=0;
  604.             lekereseddig=0;
  605.             htmlke='';
  606.            
  607.             //ebbol az elembol tudjuk meg, hogy melyik oldalon vagyunk
  608.             //ha még nem áll készen akkor kilépünk (az idozítés miatt újra próbálkozik)
  609.             var app=document.querySelector('#app');
  610.             if(!app){return;}
  611.            
  612.             if(app.className.match(/\bhome\b/)){ //ha a fooldalon lapon vagyunk        
  613.                 //a megadott elembe elkészítjük az új divünket a betöltés felirattal
  614.                 tartalmazoElemKeszit('#app .sidebar-progress','szotar');
  615.                
  616.                 //kérés a szerverhez amiben lekérjük az adatait
  617.                 ajaxKeres("http://www.duolingo.com/words?page=1&sort_by=word&desc=false&_="+(new Date().getTime()),visszacsatolas);
  618.             }
  619.         } else {
  620.             jQueryBetolto("1.9.1");
  621.         }
  622.     }
  623.    
  624.     function jQueryBetolto(verzio) {
  625.         var jqVersion   = verzio || "1.7.2";
  626.         var D           = document;
  627.         var targ        = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
  628.         var scriptNode  = D.createElement ('script');
  629.         scriptNode.src  = 'http://ajax.googleapis.com/ajax/libs/jquery/'
  630.                         + jqVersion
  631.                         + '/jquery.min.js';
  632.         targ.appendChild (scriptNode);
  633.     }  
  634.    
  635.  
  636.    
  637.     //az oldal AJAXot használ oldalváltáshoz, ettol kezdve 2 másodpercenként elindul a "mukodj"
  638.     //1mp-el az oldal betöltodése után, ha gyorsabban betöltodne
  639.     //azonnali betöltodés (ha véletlenül készen állna rá az odal már az elején)
  640.     window.setInterval(mukodj,2000);
  641.     window.setTimeout(mukodj,1000);
  642.     mukodj();
  643. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement