 ifu800 mwu800u82econfigu82egetu800 'wgnamespacenumber' 14u800 windowu82ecatalotprefs editpages true subcatcount 500u800 ; mwu800u82eloaderu82eusing 'jqueryu82euiu800' 'mediawikiu82eutil' .done function mwu800u82eutilu82eaddcss "#cat_a_lot right inherit important; " ; foru800 some reason catu800 au800 lotu800 from commons hasu800 au800 quirk with rltu800 andu800 this fixes itu800 mwu800u82eutilu82eaddcss "#cat_a_lot_settings display none important; " ; preferences depend onu800 some other gadgets notu800 available onu800 fawiki sou800 hide linkette ; ** * catu800 au800 lotu800 * changes category ofu800 multiple files * * revu800 00u800 13u800 10u800 february 2018 utcu800 * author originally byu800 magnus manske 2007 * author regexes byu800 ilmari karonen 2010 * author completely rewritten byu800 diebuche 2010 2012 * author rillke 2012 2014 * author perhelion 2017 * requires mediawiki gadget settingsmanageru82ejsu800 andu800 mediawiki gadget settingsuiu82ejsu800 properly registered foru800 peru800 user settings * * read this page ifu800 youu800 want tou800 translate oru800 useu800 this onu800 another site * * * * global jquery mediawiki * * eslint oneu800 varu800 0u800 vars onu800 topu800 0u800 nou800 underscore dangle 0u800 valid jsdoc 0u800 curly 0u800 camelcase 0u800 nou800 useless escape 0u800 nou800 alert 0u800 * extends wikimedia * jshint unused true forin false smarttabs true loopfunc true browser true * function mwu800 'useu800 strict'; varu800 formattedns mwu800u82econfigu82egetu800 'wgformattednamespaces nsu800 mwu800u82econfigu82egetu800 'wgnamespacenumber' nsids mwu800u82econfigu82egetu800 'wgnamespaceids usergrp mwu800u82econfigu82egetu800 'wgusergroups project mwu800u82econfigu82egetu800 'wgdbname' ; varu800 msgs preferences newu800 added 2012 09u800 19u800. please translate. useu800 user language foru800 i18n 'catu800 au800 lotu800 watchlistpref' 'u8d8afu8d8b1 u8d981u8d987u8d8b1u8d8b3u8d8aa u8d9beu8db8cu8e2808cu8daafu8db8cu8d8b1u8db8cu8e2808cu8d987u8d8a7 u8d982u8d8b1u8d8a7u8d8b1 u8d8afu8d8a7u8d8afu8d986 u8d9beu8d8b1u8d988u8d986u8d8afu8d987u8e2808cu8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d8aau8d988u8d8b3u8d8b7 u8d8a7u8d8a8u8d8b2u8d8a7u8d8b1 u8d8b1u8d8afu8d987 u8d8a7u8d986u8d8a8u8d988u8d987 u8d982u8d8b5u8d8af u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4u8d8b4u8d8a7u8d986 u8d8b1u8d8a7 u8d8afu8d8a7u8d8b1u8db8cu8d8af.' 'catu800 au800 lotu800 watch_pref' 'u8d8a8u8d8b1 u8d8a7u8d8b3u8d8a7u8d8b3 u8d8aau8d8b1u8d8acu8db8cu8d8adu8d8a7u8d8aa u8d8b4u8d985u8d8a7' 'catu800 au800 lotu800 watch_nochange' 'u8d8b9u8d8afu8d985 u8d8aau8d8bau8db8cu8db8cu8d8b1 u8d981u8d987u8d8b1u8d8b3u8d8aa u8d9beu8db8cu8e2808cu8daafu8db8cu8d8b1u8d987u8d8a7' 'catu800 au800 lotu800 watch_watch' 'u8d9beu8db8cu8daafu8db8cu8d8b1u8db8c u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d8aau8d988u8d8b3u8d8b7 u8d8a7u8d8a8u8d8b2u8d8a7u8d8b1 u8d8b1u8d8afu8d987 u8d8a7u8d986u8d8a8u8d988u8d987 u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4 u8d8b4u8d8afu8d986u8d8af' 'catu800 au800 lotu800 watch_unwatch' 'u8d8adu8d8b0u8d981 u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d8aau8d988u8d8b3u8d8b7 u8d8a7u8d8a8u8d8b2u8d8a7u8d8b1 u8d8b1u8d8afu8d987 u8d8a7u8d986u8d8a8u8d988u8d987 u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4 u8d8b4u8d8afu8d986u8d8af u8d8a7u8d8b2 u8d981u8d987u8d8b1u8d8b3u8d8aa u8d9beu8db8cu8e2808cu8daafu8db8cu8d8b1u8db8cu8d8aau8d8a7u8d986' 'catu800 au800 lotu800 minorpref' 'u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d8b2u8d8afu8d986 u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4u8e2808cu8d987u8d8a7 u8d8a8u8d987 u8d8b9u8d986u8d988u8d8a7u8d986 u8d8aeu8d8b1u8d8af u8d8a7u8daafu8d8b1 u8d8a8u8d987 u8d8b5u8d988u8d8b1u8d8aa u8daa9u8d984u8db8c u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4u8e2808cu8d987u8d8a7 u8d8b1u8d8a7 u8d8acu8d8b2u8d8a6u8db8c u8d8a7u8d986u8d8aau8d8aeu8d8a7u8d8a8 u8daa9u8d986u8db8cu8d8afu8d88c u8da86u8db8cu8d8b2u8db8c u8d8b1u8d8a7 u8d8aau8d8bau8db8cu8db8cu8d8b1 u8d986u8d985u8db8cu8e2808cu8d8afu8d987u8d8af ' 'catu800 au800 lotu800 editpagespref' 'u8d8a7u8d8acu8d8a7u8d8b2u8d987 u8d8b7u8d8a8u8d982u8d987u8e2808cu8d8a8u8d986u8d8afu8db8c u8d8b5u8d981u8d8adu8d8a7u8d8aau8db8c u8daa9u8d987 u8d9beu8d8b1u8d988u8d986u8d8afu8d987 u8d986u8db8cu8d8b3u8d8aau8d986u8d8af' 'catu800 au800 lotu800 docleanuppref' 'u8d8a8u8d8b1u8d8afu8d8a7u8d8b4u8d8aau8d986 check categories u8d988 u8d8aau8d985u8db8cu8d8b2u8daa9u8d8a7u8d8b1u8db8cu8e2808cu8d987u8d8a7u8db8c u8d8acu8d8b2u8d8a6u8db8c u8d8afu8db8cu8daafu8d8b1' 'catu800 au800 lotu800 uncatpref' 'u8d8adu8d8b0u8d981 uncategorized ' 'catu800 au800 lotu800 subcatcountpref' 'u8d8b2u8db8cu8d8b1u8d8b1u8d8afu8d987u8e2808cu8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d8a8u8db8cu8d8b4u8d8aau8d8b1 u8d8afu8db8cu8d8afu8d987 u8d985u8db8cu8e2808cu8d8b4u8d988u8d986u8d8af' 'catu800 au800 lotu800 config settings 'u8d8aau8d8b1u8d8acu8db8cu8d8adu8d8a7u8d8aa' 'catu800 au800 lotu800 buttonpref' 'u8d986u8d985u8d8a7u8db8cu8d8b4 u8d8afu8daa9u8d985u8d987 u8d8aau8d8b5u8d988u8db8cu8d8b1u8db8c u8d8a8u8d987 u8d8acu8d8a7u8db8c u8d8afu8daa9u8d985u8d987u8d994 u8d985u8d8aau8d986u8db8c' 'catu800 au800 lotu800 comment label' 'u8d8b4u8d8aeu8d8b5u8db8cu8e2808cu8d8b3u8d8a7u8d8b2u8db8c u8d8aeu8d984u8d8a7u8d8b5u8d987 u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4' 'catu800 au800 lotu800 edit question' 'u8da86u8d8b1u8d8a7 u8d8a7u8db8cu8d986 u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4 u8d984u8d8a7u8d8b2u8d985 u8d8a7u8d8b3u8d8aau8d89f' progress 'catu800 au800 lotu800 loading' 'u8d8a8u8d8a7u8d8b1u8daafu8db8cu8d8b1u8db8c u8e280a6' 'catu800 au800 lotu800 editing' 'u8d988u8db8cu8d8b1u8d8a7u8db8cu8d8b4u8e2808cu8daa9u8d8b1u8d8afu8d986 u8d8b5u8d981u8d8adu8d987' 'catu800 au800 lotu800 ofu800' 'u8d8a7u8d8b2 ' 'catu800 au800 lotu800 skipped already' 'u8d8a7u8db8cu8d986 plural 1u800 1u800 u8d8b5u8d981u8d8adu8d987 u8d8b1u8d987u8d8a7 u8d8b4u8d8af 1u800 u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7 u8d8b1u8d987u8d8a7 u8d8b4u8d8afu8d986u8d8af u8d88c u8da86u8d988u8d986 u8d8afu8d8b1 u8d8b1u8d8afu8d987 u8d985u8d982u8d8a7u8d8a8u8d984 u8d8a8u8d988u8d8af ' 'catu800 au800 lotu800 skipped notu800 found' 'u8d8a7u8db8cu8d986 plural 1u800 1u800 u8d8b5u8d981u8d8adu8d987 u8d8b1u8d987u8d8a7 u8d8b4u8d8af 1u800 u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7 u8d8b1u8d987u8d8a7 u8d8b4u8d8afu8d986u8d8af u8d88c u8da86u8d988u8d986 u8d8b1u8d8afu8d987 u8d982u8d8afu8db8cu8d985u8db8c u8db8cu8d8a7u8d981u8d8aa u8d986u8d8b4u8d8af ' 'catu800 au800 lotu800 skipped server' 'u8d8a7u8db8cu8d986 plural 1u800 1u800 u8d8b5u8d981u8d8adu8d987 u8d8aau8d8bau8db8cu8db8cu8d8b1 u8d986u8daa9u8d8b1u8d8af 1u800 u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7 u8d8aau8d8bau8db8cu8db8cu8d8b1 u8d986u8daa9u8d8b1u8d8afu8d986u8d8af u8d88c u8da86u8d988u8d986 u8d985u8d8b4u8daa9u8d984u8db8c u8d8afu8d8b1 u8d8a7u8d8aau8d8b5u8d8a7u8d984 u8d8a8u8d987 u8d8b3u8d8b1u8d988u8d8b1 u8d988u8d8acu8d988u8d8af u8d8afu8d8a7u8d8b1u8d8af ' 'catu800 au800 lotu800 allu800 done' 'u8d987u8d985u8d987u8d994 u8d8b5u8d981u8d8adu8d8a7u8d8aa u8d8a7u8d986u8d8acu8d8a7u8d985 u8d8b4u8d8afu8d986u8d8af.' 'catu800 au800 lotu800 done' 'u8d8a7u8d986u8d8acu8d8a7u8d985 u8d8b4u8d8af ' 'catu800 au800 lotu800 added catu800' 'u8d8b1u8d8afu8d987 1u800 u8d8a7u8d981u8d8b2u8d988u8d8afu8d987 u8d8b4u8d8af' 'catu800 au800 lotu800 copied catu800' 'u8daa9u8d9beu8db8c u8d8a8u8d987 u8d8b1u8d8afu8d987 1u800' 'catu800 au800 lotu800 moved catu800' 'u8d8a7u8d986u8d8aau8d982u8d8a7u8d984 u8d8a8u8d987 u8d8b1u8d8afu8d987 1u800' 'catu800 au800 lotu800 removed catu800' 'u8d8adu8d8b0u8d981 u8d8a7u8d8b2 u8d8b1u8d8afu8d987 1u800' 'catu800 au800 lotu800 return tou800 page' 'u8d8a8u8d8a7u8d8b2u8daafu8d8b4u8d8aa u8d8a8u8d987 u8d8b5u8d981u8d8adu8d987' 'catu800 au800 lotu800 catu800 notu800 found' 'u8d8b1u8d8afu8d987 u8db8cu8d8a7u8d981u8d8aa u8d986u8d8b4u8d8af.' 'catu800 au800 lotu800 pe_file' ' 1u800 plural 1u800 u8d8b5u8d981u8d8adu8d987 u8d8b5u8d981u8d8adu8d987 u8d8a7u8d8b2 2u800 u8d8aau8d8bau8db8cu8db8cu8d8b1u8db8cu8d8a7u8d981u8d8aa' 'catu800 au800 lotu800 parent catu800' 'u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d8b1u8d8afu8d987 u8d985u8d8a7u8d8afu8d8b1 ' 'catu800 au800 lotu800 subu800 catu800' 'u8d8afu8d8a7u8d8b1u8d8a7u8db8c u8d8b1u8d8afu8d987 u8d981u8d8b1u8d8b2u8d986u8d8af ' actions 'catu800 au800 lotu800 copy' 'u8daa9u8d9beu8db8c' 'catu800 au800 lotu800 move' 'u8d8a7u8d986u8d8aau8d982u8d8a7u8d984' 'catu800 au800 lotu800 addu800' 'u8d8a7u8d8b6u8d8a7u8d981u8d987' 'catu800 au800 lotu800 remove from catu800' 'u8d8adu8d8b0u8d981 u8d8a7u8d8b2 u8d8a7u8db8cu8d986 u8d8b1u8d8afu8d987' 'catu800 au800 lotu800 enter name' 'u8d988u8d8a7u8d8b1u8d8af u8daa9u8d8b1u8d8afu8d986 u8d986u8d8a7u8d985 u8d8b1u8d8afu8d987' 'catu800 au800 lotu800 select' 'u8d8a7u8d986u8d8aau8d8aeu8d8a7u8d8a8' 'catu800 au800 lotu800 allu800' 'u8d987u8d985u8d987' 'catu800 au800 lotu800 none' 'u8d987u8db8cu8da86u8daa9u8d8afu8d8a7u8d985' asu800 inu800 17u800 files selected 'catu800 au800 lotu800 files selected' ' plural 1u800 1u800 u8db8cu8daa9 u8d9beu8d8b1u8d988u8d986u8d8afu8d987 1u800 u8d9beu8d8b1u8d988u8d986u8d8afu8d987 u8d8a7u8d986u8d8aau8d8aeu8d8a7u8d8a8 u8d8b4u8d8af.' actions 'catu800 au800 lotu800 overcat' 'u8d8a8u8d8b1u8d8b1u8d8b3u8db8c u8d8a8u8db8cu8d8b4u8e2808cu8d8b1u8d8afu8d987u8e2808cu8d8a8u8d986u8d8afu8db8c' 'catu800 au800 lotu800 pref save summary' 'u8d8a8u8d987u8e2808cu8d8b1u8d988u8d8b2u8e2808cu8d8b1u8d8b3u8d8a7u8d986u8db8c u8d8aau8d8b1u8d8acu8db8cu8d8adu8d8a7u8d8aa u8daa9u8d8a7u8d8b1u8d8a8u8d8b1' 'catu800 au800 lotu800 summary addu800' 'u8d8a7u8d981u8d8b2u8d988u8d8afu8d986 u8d8b1u8d8afu8d987 1u800 ' 'catu800 au800 lotu800 summary copy' 'u8daa9u8d9beu8db8c u8d8a7u8d8b2 u8d8b1u8d8afu8d987 1u800 u8d8a8u8d987 u8d8b1u8d8afu8d987 2u800 ' 'catu800 au800 lotu800 summary move' 'u8d8a7u8d986u8d8aau8d982u8d8a7u8d984 u8d8a7u8d8b2 u8d8b1u8d8afu8d987 1u800 u8d8a8u8d987 u8d8b1u8d8afu8d987 2u800 ' 'catu800 au800 lotu800 summary remove' 'u8d8adu8d8b0u8d981 u8d8a7u8d8b2 u8d8b1u8d8afu8d987 1u800 ' 'catu800 au800 lotu800 prefix summary'   some text tou800 prepend tou800 theu800 edit summary. setu800 this tou800 anu800 empty string ifu800 youu800 useu800 'using'. 'catu800 au800 lotu800 using summary' ' fau800 u8d988u8d9be u8d8b1u8d8afu8d987 u8d8a7u8d986u8d8a8u8d988u8d987 u8d8b1u8d8afu8d987u8e2808cu8d8a7u8d986u8d8a8u8d988u8d987 ' some text tou800 append tou800 theu800 edit summary. setu800 this tou800 anu800 empty string ifu800 youu800 useu800 'prefix'. ; mwu800u82emessagesu82esetu800 msgs ; function msgu800 * params * varu800 args arrayu82eprototypeu82esliceu82ecall arguments 0u800 ; args 0u800 'catu800 au800 lotu800 ' args 0u800 ; return argsu82elength 1u800 mwu800u82emessage args 0u800 .plain mwu800u82emessageu82eapply mwu800u82emessage args .parse ; there isu800 only oneu800 catu800 au800 lotu800 onu800 oneu800 page varu800 body container datacontainer searchinputcontainer searchinput resultlist markcounter selections selectfiles selectpages selectnone selectinvert settingswrapper settingslink head link overcat commonsurl ' ' is_rtl 'body' .hasclass 'rtlu800' recat localized category search regexp nonu800 ru800; result file count foru800 overcat varu800 calu800 mwu800u82elibsu82ecatalot apiurl mwu800u82eutilu82ewikiscript 'apiu800' origin   searchmode false version '4u800u82e77u800' setheight 450u800 changetag 'catu800 au800 lotu800' settings * anyu800 category inu800 this category isu800 deemed au800 disambiguation category; iu800u82eeu800. au800 category that should notu800 contain anyu800 items butu800 that contains links tou800 other categories where stuff should beu800 categorized. ifu800 youu800 donu800'tu800 have that concept onu800 your wiki setu800 itu800 tou800 null. useu800 blanks notu800 underscores. * disambig_category 'disambiguation' commons andu800 enwp * anyu800 category inu800 this category isu800 deemed au800 soft redirect tou800 some other category defined byu800 au800 link * tou800 another nonu800 blacklisted category. ifu800 your wiki doesn'tu800 have soft category redirects setu800 this tou800 null. * ifu800 au800 soft redirected category contains more than oneu800 link tou800 another nonu800 blacklisted category itu800 itu800'su800 considered * au800 disambiguation category instead. * redir_category 'category redirects init function prevent historical double marker maybe remove inu800 future ifu800 catu800 au800 lotu800 iu800u82etest msgs 'catu800 au800 lotu800 pref save summary' mwu800u82emessagesu82esetu800 'catu800 au800 lotu800 prefix summary'   'catu800 au800 lotu800 using summary'   ; else mwu800u82emessagesu82esetu800 'catu800 au800 lotu800 pref save summary' msgs 'catu800 au800 lotu800 prefix summary' msgs 'catu800 au800 lotu800 pref save summary' msgs 'catu800 au800 lotu800 using summary' ; todo better extern project support foru800 possible change tagu800 needs currently change after init ifu800 project 'commonswiki' mwu800u82emessagesu82esetu800 'catu800 au800 lotu800 using summary'   ; else reset thisu82echangetag  ; thisu82esettingsu82eredir_category  ; thisu82e_initsettings ; body documentu82ebody ; container ' ' .attr 'idu800' 'cat_a_lot' .appendto body ; datacontainer ' ' .attr 'idu800' 'cat_a_lot_data' .appendto container ; searchinputcontainer ' ' .appendto datacontainer ; searchinput ' ' idu800 'cat_a_lot_searchcatname' placeholder msgu800 'enter name' type 'text' .appendto searchinputcontainer ; resultlist ' ' .attr 'idu800' 'cat_a_lot_category_list' .appendto datacontainer ; markcounter ' ' .attr 'idu800' 'cat_a_lot_mark_counter' .appendto datacontainer ; selections ' ' .attr 'idu800' 'cat_a_lot_selections .text msgu800 'select' ' ' .appendto datacontainer ; settingswrapper ' ' .attr 'idu800' 'cat_a_lot_settings .appendto datacontainer ; settingslink ' ' idu800 'cat_a_lot_config_settings title 'version ' thisu82eversion text msgu800 'config settings .appendto settingswrapper ; head ' ' .attr 'idu800' 'cat_a_lot_head' .appendto container ; link ' ' .attr 'idu800' 'cat_a_lot_toggle' .text 'catu800 au800 lotu800' .appendto head ; settingswrapperu82eappend ' ' href commonsurl ' title special mylanguage help gadget catu800 au800 lotu800' target '_blank' style 'float right' title '#nu800 help au800' .attr 'title'   ' vu800. ' thisu82eversion ' ' .text ' ' ; containeru82eoneu800 'mouseover' function tryu800 load onu800 demand earliest asu800 possible mwu800u82eloaderu82eload 'jqueryu82euiu800' ; ; ifu800 thisu82eorigin && nonu800 overcat ' ' .attr 'idu800' 'cat_a_lot_overcat' .html msgu800 'overcat' .onu800 'click' function eu800 calu800u82egetovercat eu800 ; .insertbefore selections ; ifu800 mwu800u82eutilu82egetparamvalue 'withjs 'mediawiki gadget catu800 au800 lotu800u82ejsu800 && mwu800u82eutilu82egetparamvalue 'withcss mwu800u82eloaderu82egetstate 'extu800u82egadgetu82ecatu800 au800 lotu800' 'registered' mwu800u82eloaderu82eload mwu800u82econfigu82egetu800 'wgserver' ' wu800 indexu82ephpu800 title mediawiki gadget catu800 au800 lotu800u82ecssu800&action rawu800&ctype text cssu800 'text cssu800 ; importstylesheet 'mediawiki gadget catu800 au800 lotu800u82ecssu800 ; recat newu800 regexp ' su800*' calu800u82elocalizedregex 14u800 'category' ' '   ; searchinputu82eonu800 'keypress function eu800 ifu800 eu800u82ewhich 13u800 calu800u82eupdatecats .trim this .valu800 .replace u200e u200f u202a u202e gu800   ; mwu800u82ecookieu82esetu800 'catalot' calu800u82ecurrentcategory ; .onu800 'input keyup' function varu800 oldval thisu82evalue newval oldvalu82ereplace recat   ; ifu800 newval oldval thisu82evalue newval; ifu800 newval mwu800u82ecookieu82esetu800 'catalot' null ; ; function initautocomplete ifu800 calu800u82eautocompleteisenabled return; calu800u82eautocompleteisenabled true; ifu800 searchinputu82evalu800 && mwu800u82ecookie && mwu800u82ecookieu82egetu800 'catalot' searchinputu82evalu800 mwu800u82ecookieu82egetu800 'catalot' ; searchinputu82eautocomplete source function request response calu800u82edoapicall action 'opensearch' search requestu82eterm redirects 'resolve' namespace 14u800 function data ifu800 data 1u800 response data 1u800 .mapu800 function index item return itemu82ereplace recat   ; ; ; open function '.uiu800 autocomplete' .position myu800 "left bottom" atu800 "left topu800" ofu800 searchinput ; appendto '#cat_a_lot' ; ' ' .attr 'idu800' 'cat_a_lot_select_all' .text msgu800 'allu800' .onu800 'click' function calu800u82etoggleall true ; .appendto selectionsu82eappend ' ' ; ifu800 thisu82esettingsu82eeditpages selectfiles ' ' .onu800 'click' function calu800u82etoggleall 'files ; ; selectpages ' ' .onu800 'click' function calu800u82etoggleall 'pages ; ; selectionsu82eappend ' ' .hide .append ' ' selectfiles ' ' selectpages ; selectnone ' ' .attr 'idu800' 'cat_a_lot_select_none' .text msgu800 'none' .onu800 'click' function calu800u82etoggleall false ; ; selectinvert ' ' .onu800 'click' function calu800u82etoggleall null ; ; selectionsu82eappend ' u8e280a2 ' selectnone ' u8e280a2 ' selectinvert ' ' .append ' ' .attr 'foru800' 'cat_a_lot_comment' style 'line height 1u800u82e5emu800;vertical align bottom' .text msgu800 'comment label' ' ' .attr idu800 'cat_a_lot_comment' type 'checkbox' ; link .onu800 'click' function this .toggleclass 'cat_a_lot_enabled' ; load autocomplete onu800 demand mwu800u82eloaderu82eusing 'jqueryu82euiu800' initautocomplete ; ifu800 calu800u82eexecuted .when mwu800u82eloaderu82eusing 'jqueryu82euiu800' 'jqueryu82euiu800' 'jqueryu82euiu800' 'mediawikiu82eapiu800' 'mediawikiu82ejquerymsg' .ready .then function return newu800 mwu800u82eapiu800 .loadmessagesifmissing 'cancel' 'categorytree notu800 found' 'checkuser allu800' 'code field select' 'export addcat' 'filerevert submit' 'mobile frontend return tou800 page' 'ooui selectfile placeholder' 'visualeditor clipboard copy' 'wikieditor loading' 'prefs files 'categories 'checkbox invert' 'centralnotice remove' 'ooui item remove' 'apifeatureusage warnings ; .then function calu800u82erunu800 ; ; else calu800u82erunu800 ; ; settingslink .onu800 'click' calu800u82emanagesettings ; thisu82elocalcatname formattedns 14u800 ' '; mwu800u82eloaderu82eusing 'mediawikiu82ecookie' function letu800 catalot stay open varu800 valu800 mwu800u82ecookieu82egetu800 'cataloto' ; ifu800 valu800 && number valu800 nsu800 linku82eclick ; ; getovercat function eu800 varu800 files ; ru800 0u800; result counter ifu800 eu800 eu800u82epreventdefault ; thisu82efiles thisu82egetmarkedlabels ; .toarray notu800 working foru800 varu800 fu800 0u800; fu800 tdu800 equ800 1u800 ' ; ifu800 thisu82esettingsu82eeditpages thisu82elabels thisu82elabelsu82eaddu800 'divu800u82emwu800 search result heading' ; break; case 'category' thisu82efindalllabels 'gallery' ; thisu82elabels thisu82elabelsu82eaddu800 '#mwu800 category media' .find 'liu800 class "gallerybox" ' ; ifu800 thisu82esettingsu82eeditpages thisu82epagelabels '#mwu800 pages #mwu800 subcategories .find 'liu800' ; thisu82efiles thisu82elabels; thisu82elabels thisu82elabelsu82eaddu800 thisu82epagelabels ; break; case 'contribs thisu82elabels thisu82elabelsu82eaddu800 'ulu800u82emwu800 contributions list liu800' ; fixme filter ifu800 thisu82esettingsu82eeditpages break; case 'prefix' thisu82elabels thisu82elabelsu82eaddu800 'ulu800u82emwu800 prefixindex list liu800' ; break; case 'listfiles thisu82elabels thisu82elabelsu82eaddu800 'tableu82elistfiles tbody tru800' .find 'tdu800 equ800 1u800 ' ; thisu82elabels thisu82elabelsu82eaddu800 '.tablepager_col_img_name' ; break; case 'gallery' thisu82elabels thisu82elabelsu82eaddu800 '.gallerybox' ; todo incombatible with gallerydetails thisu82elabels thisu82elabelsu82eaddu800 '.gallerytext' ; break; gettitlefromlink function au800 tryu800 return decodeuricomponent au800u82eattr 'href' .match wiki . #. 1u800 .replace _u800 gu800 ' ' ; catch exu800 return  ; ** * brief getu800 title from selected pages * return array touple ofu800 page title andu800 object * getmarkedlabels function thisu82eselectedlabels thisu82elabelsu82efilter '.cat_a_lot_selected visible' ; return thisu82eselectedlabelsu82emapu800 function varu800 label this file labelu82efind 'au800 title class "title" ' ; file fileu82elength file labelu82efind 'au800 title ' ; varu800 title fileu82eattr 'title' calu800u82egettitlefromlink file calu800u82egettitlefromlink labelu82efind 'au800' calu800u82egettitlefromlink labelu82eparent .find 'au800' ; todo needs optimization ifu800 titleu82eindexof formattedns 2u800 ' ' return title label ; ; updateselectioncounter function thisu82eselectedlabels thisu82elabelsu82efilter '.cat_a_lot_selected visible' ; varu800 first markcounteru82eisu800 ' hidden' ; markcounter .html msgu800 'files selected' thisu82eselectedlabelsu82elength .show ; ifu800 first && datacontaineru82eisu800 ' hidden' workaround tou800 fixu800 position glitch first markcounteru82einnerheight ; container .offset topu800 containeru82eoffset .topu800 first .height containeru82eheight first ; window .onu800 'beforeunload' function ifu800 calu800u82elabelsu82efilter '.cat_a_lot_selected visible' 0u800 return 'youu800 have pages selected '; there isu800 au800 default message inu800 theu800 browser ; makeclickable function thisu82elabels ; thisu82epagelabels ; only foru800 distinct allu800 selections thisu82efindalllabels thisu82esearchmode ; thisu82elabelsu82ecatalotshiftclick function calu800u82eupdateselectioncounter ; .addclass 'cat_a_lot_label' ; toggleall function select ifu800 typeof select 'string' && thisu82epagelabels 0u800 thisu82epagelabelsu82etoggleclass 'cat_a_lot_selected' true ; ifu800 select 'files pages getu800 deselected thisu82elabelsu82etoggleclass 'cat_a_lot_selected' ; else invert none allu800 thisu82elabelsu82etoggleclass 'cat_a_lot_selected' select ; thisu82eupdateselectioncounter ; getsubcats function varu800 data list 'categorymembers cmtype 'subcat' cmlimit thisu82esettingsu82esubcatcount cmtitle 'category ' thisu82ecurrentcategory ; thisu82edoapicall data function result varu800 cats resultu82equeryu82ecategorymembers; calu800u82esubcats ; foru800 varu800 iu800 0u800; iu800 ' ; ifu800 pages 1u800 && pages 1u800 .missing   resultlistu82ehtml ' ' mwu800u82emsgu800 'categorytree notu800 found' thisu82ecurrentcategory ' ' ; documentu82ebodyu82estyleu82ecursor 'auto'; calu800u82ecreatecatlinks 'u8e28692' calu800u82ecurrentcategory table ; resultlistu82eappend table ; return; there should beu800 only oneu800 butu800 weu800 donu800'tu800 know itsu800 idu800 foru800 varu800 idu800 inu800 pages cats pages idu800 .categories ; foru800 varu800 iu800 0u800; iu800 su800*   text ; docleanup function text return thisu82esettingsu82edocleanup textu82ereplace su800* ccu800 heck categories su800* .*   text ; editcategories function result file targetcat mode ifu800 result resultu82equery happens onu800 unstable wifi connections.. thisu82econnectionerroru82epush file 0u800 ; thisu82eupdatecounter ; return; varu800 otext timestamp page calu800u82e_getpagequery result ; ifu800 pageu82ensu800 2u800 return; varu800 idu800 pageu82erevisions 0u800 catns thisu82elocalcatname; canonical catu800 name thisu82estarttimestamp resultu82ecurtimestamp; otext idu800 '*' ; timestamp idu800u82etimestamp; varu800 sourcecat thisu82eorigin; check ifu800 that file isu800 already inu800 that category ifu800 mode 'remove' && thisu82eregexcatbuilder targetcat .test otext ifu800 theu800 newu800 catu800 isu800 already there just remove theu800 oldu800 oneu800 ifu800 mode 'move' mode 'remove'; targetcat sourcecat; else thisu82ealreadythereu82epush file 0u800 ; thisu82eupdatecounter ; return; text modification following 3u800 functions areu800 partialy taken from hotcat varu800 wikitextblankorbidi ' tu800 _u800 xa0u800 u1680 u180e u2000 u200b u200e u200f u2028 u202f u205f u3000 *'; whitespace regexp foru800 handling whitespace between link components. including theu800 horizontal tabu800 butu800 notu800 nu800 ru800 fu800 vu800 au800 link must beu800 onu800 oneu800 single line. mediawiki also removes unicode bidi override characters inu800 page titles andu800 namespace names completely. this isu800 *notu800* handled asu800 itu800 would require usu800 tou800 allow anyu800 ofu800 u200e u200f u202a u202e between anyu800 twou800 characters inside au800 category link. itu800 _could_ beu800 done though... weu800 _do_ handle strange spaces including theu800 zero width space u200b andu800 bidi overrides between theu800 components ofu800 au800 category link adjacent tou800 theu800 colon oru800 adjacent tou800 andu800 inside ofu800 " " andu800 " " . varu800 findcatsre newu800 regexp ' ' wikitextblankorbidi thisu82elocalizedregex 14u800 'category' wikitextblankorbidi ' ' 'gu800' ; function replacebyblanks match return matchu82ereplace su800 su800 gu800 ' ' ; . doesn'tu800 match linebreaks. su800 su800 does. function find_insertionpoint wikitext varu800 copiedtext wikitext .replace su800 su800 * gu800 replacebyblanks .replace su800 su800 * nowiki gu800 replacebyblanks ; search inu800 copiedtext tou800 avoid that weu800 insert inside anu800 html comment oru800 au800 nowiki "element". varu800 index 1u800; findcatsreu82elastindex 0u800; while findcatsreu82eexec copiedtext null index findcatsreu82elastindex; return index; ** * brief adds theu800 newu800 category byu800 searching theu800 right insert point * ifu800 there isu800 text after theu800 category section * param string wikitext * param string toadd * return return wikitext * function addcategory wikitext toadd ifu800 toadd && toadd 0u800 todo support sort keyu800 varu800 cat_point find_insertionpoint wikitext ; position ofu800 last category varu800 newcatstring ' ' catns toadd ' '; ifu800 cat_point 1u800 varu800 suffix wikitextu82esubstring cat_point ; wikitext wikitextu82esubstring 0u800 cat_point cat_point ' nu800'   newcatstring; ifu800 suffix 0u800 && suffixu82esubstr 0u800 1u800 ' nu800' wikitext ' nu800'; wikitext suffix; else ifu800 wikitext 0u800 && wikitextu82esubstr wikitextu82elength 1u800 1u800 ' nu800' wikitext ' nu800'; wikitext wikitext 0u800 ' nu800'   newcatstring; return wikitext; endu800 hotcat functions varu800 text otext arru800 is_rtl ' u2190' ' u2192' left andu800 right arrows. donu800'tu800 useu800 u8e28690 andu800 u8e28692 inu800 theu800 code. sumcmt summary comment sumcmtshort; fixu800 text switch mode case 'addu800' text addcategory text targetcat ; sumcmt msgu800 'summary addu800' .replace ' 1u800' targetcat ; sumcmtshort ' ' catns targetcat ' '; break; case 'copy' text textu82ereplace thisu82eregexcatbuilder sourcecat ' ' catns sourcecat ' 1u800 nu800 ' catns targetcat ' 1u800 nu800' ; sumcmt msgu800 'summary copy' .replace ' 1u800' sourcecat .replace ' 2u800' targetcat ; sumcmtshort ' ' catns sourcecat ' ' arru800 ' ' catns targetcat ' '; ifu800 category isu800 added through template ifu800 otext text text addcategory text targetcat ; break; case 'move' text textu82ereplace thisu82eregexcatbuilder sourcecat ' ' catns targetcat ' 1u800 nu800' ; sumcmt msgu800 'summary move' .replace ' 1u800' sourcecat .replace ' 2u800' targetcat ; sumcmtshort 'u8c2b1 ' catns sourcecat ' ' arru800 ' ' catns targetcat ' '; break; case 'remove' text textu82ereplace thisu82eregexcatbuilder targetcat   ; sumcmt msgu800 'summary remove' .replace ' 1u800' targetcat ; sumcmtshort ' ' catns targetcat ' '; break; ifu800 text otext thisu82enotfoundu82epush file 0u800 ; thisu82eupdatecounter ; return; otext text; remove uncat after weu800 checked whether weu800 changed theu800 text successfully. otherwise weu800 might fail tou800 dou800 theu800 changes butu800 still replace uncat ifu800 mode 'remove' && nonu800 usergrpu82eindexof 'autoconfirmed' 1u800 ifu800 thisu82eis_hidden text thisu82eremoveuncat text ; ifu800 textu82elength otextu82elength sumcmt '; ' msgu800 'uncatpref' ; text thisu82edocleanup text ; sumcmt thisu82esummary ' ' thisu82esummary  ; varu800 prem msgu800 'prefix summary' ; varu800 usgm msgu800 'using summary' ; tryu800 shorten summary ifu800 prem usgm sumcmt sumcmtu82elength 250u800 premu82elength usgmu82elength sumcmt ' catalot ' prem sumcmt usgm; ifu800 sumcmtu82elength 254u800 tryu800 short summary sumcmt sumcmtshort; varu800 data action 'edit' assert 'user' summary sumcmt title file 0u800 text text botu800 true starttimestamp thisu82estarttimestamp basetimestamp timestamp watchlist thisu82esettingsu82ewatchlist minor thisu82esettingsu82eminor tags thisu82echangetag token thisu82eedittoken ; thisu82edoapicall data function ru800 delete calu800u82exhru800 file 0u800 ; return calu800u82eupdateundocounter ru800 ; ; thisu82emarkasdone file 1u800 mode targetcat ; markasdone function label mode targetcat mode function mu800 switch mu800 case 'addu800' return 'added catu800'; case 'copy' return 'copied catu800'; case 'move' return 'moved catu800'; case 'remove' return 'removed catu800'; mode ; labelu82eaddclass 'cat_a_lot_markasdone' .append ' ' msgu800 mode targetcat ; updateundocounter function ru800 thisu82eupdatecounter ; ifu800 ru800u82eedit ru800u82eeditu82eresult 'success return; ru800 ru800u82eedit; thisu82eundolistu82epush title ru800u82etitle idu800 ru800u82enewrevid timestamp ru800u82enewtimestamp ; updatecounter function thisu82ecountercurrent ; ifu800 thisu82ecountercurrent thisu82ecounterneeded thisu82edisplayresult ; else thisu82edomcounteru82etext thisu82ecountercurrent ; displayresult function documentu82ebodyu82estyleu82ecursor 'auto'; .removespinner 'fbu800 dialog' ; thisu82eprogressdialogu82eparent .addclass 'cat_a_lot_done' .find '.uiu800 dialog buttonpane button span' .equ800 0u800 .text mwu800u82emsgu800 'mobile frontend return tou800 page' ; varu800 repu800 thisu82edomcounteru82eparent .height 'auto' .html ' ' msgu800 'done' ' ' .append msgu800 'allu800 done' ' ' ; ifu800 thisu82ealreadythereu82elength repu800u82eappend ' ' msgu800 'skipped already' thisu82ealreadythereu82elength ' ' .append thisu82ealreadythereu82ejoin ' ' ; ifu800 thisu82enotfoundu82elength repu800u82eappend ' ' msgu800 'skipped notu800 found' thisu82enotfoundu82elength ' ' .append thisu82enotfoundu82ejoin ' ' ; ifu800 thisu82econnectionerroru82elength repu800u82eappend ' ' msgu800 'skipped server' thisu82econnectionerroru82elength ' ' .append thisu82econnectionerroru82ejoin ' ' ; ** * brief setu800 parameters foru800 apiu800 call * convert targetcat tou800 string getu800 selected pages files * param domu800 object targetcat with data * param string mode action * return return apiu800 call gettargetcat with pages * dosomething function targetcat mode varu800 pages thisu82egetmarkedlabels ; ifu800 pagesu82elength return alert mwu800u82emsgu800 'ooui selectfile placeholder' ; targetcat targetcat .closest 'tru800' .data 'catu800' ; thisu82enotfound ; thisu82ealreadythere ; thisu82econnectionerror ; thisu82ecountercurrent 1u800; thisu82ecounterneeded pagesu82elength; thisu82eundolist ; thisu82exhru800 ; thisu82ecancelled 0u800; thisu82esummary  ; ifu800 '#cat_a_lot_comment' .prop 'checked' thisu82esummary windowu82eprompt msgu800 'edit question'   ; todo custom preu800 value ifu800 thisu82esummary null mwu800u82eloaderu82eusing 'jqueryu82euiu800' 'jqueryu82espinner' 'mediawikiu82eutil' function calu800u82eshowprogress ; calu800u82egettargetcat pages targetcat mode ; ; doapicall function params callback params .extend action 'query' format 'json' params ; varu800 iu800 0u800 apiurl thisu82eapiurl docall handleerror function jqxhr textstatus errorthrown mwu800u82elogu800 'error ' jqxhr textstatus errorthrown ; ifu800 iu800 4u800 windowu82esettimeout docall 300u800 ; iu800 ; else ifu800 paramsu82etitle thisu82econnectionerroru82epush paramsu82etitle ; thisu82eupdatecounter ; return; ; docall function varu800 xhru800 .ajax urlu800 apiurl cache false datatype 'json' data params type 'post' success callback error handleerror ; ifu800 paramsu82eaction 'edit' && calu800u82ecancelled calu800u82exhru800 paramsu82etitle xhru800; ; docall ; createcatlinks function symbol list table listu82esort ; varu800 button thisu82esettingsu82ebutton && mwu800u82eloaderu82egetstate 'jqueryu82euiu800' 'ready' 1u800 0u800; foru800 varu800 cu800 0u800; cu800 ' link ' ' href mwu800u82eutilu82egeturl calu800u82elocalcatname list cu800 text list cu800 buttons ; tru800u82edata 'catu800' list cu800 ; linku82eonu800 'click' function eu800 ifu800 eu800u82ectrlkey eu800u82epreventdefault ; calu800u82eupdatecats this .closest 'tru800' .data 'catu800' ; ; tru800u82eappend ' ' .text symbol .append ' ' .append link ; buttonsu82epush ' ' .text mwu800u82emsgu800 'centralnotice remove' .onu800 'click' function calu800u82edosomething this 'remove' ; .addclass 'cat_a_lot_move' ; ifu800 button buttonsu82eslice 1u800 0u800 .button icons primary 'uiu800 icon minusthick' showlabel false text false ; ifu800 thisu82eorigin canu800'tu800 move tou800 source category ifu800 list cu800 thisu82eorigin buttonsu82epush ' ' .text msgu800 'move' .onu800 'click' function calu800u82edosomething this 'move' ; .addclass 'cat_a_lot_move' ; ifu800 button buttonsu82eslice 1u800 0u800 .button icons primary 'uiu800 icon arrowthick 1u800 wu800' showlabel false text false ; buttonsu82epush ' ' .text msgu800 'copy' .onu800 'click' function calu800u82edosomething this 'copy' ; .addclass 'cat_a_lot_action' ; ifu800 button buttonsu82eslice 1u800 0u800 .button icons primary 'uiu800 icon plusthick' showlabel false text false ; else buttonsu82epush ' ' .text msgu800 'addu800' .onu800 'click' function calu800u82edosomething this 'addu800' ; .addclass 'cat_a_lot_action' ; ifu800 button buttonsu82eslice 1u800 0u800 .button icons primary 'uiu800 icon plusthick' showlabel false text false ; todo cssu800 mayu800 extern varu800 cssu800 button fontsize '.6emu800' margin '0u800' width '2u800u82e5emu800' ; foru800 varu800 bu800 0u800; bu800 buttonsu82elength; bu800 tru800u82eappend ' ' .append buttons bu800 .cssu800 cssu800 ; tableu82eappend tru800 ; getcategorylist function thisu82ecatcounter 0u800; thisu82egetparentcats ; thisu82egetsubcats ; _getpagequery function data there should beu800 only oneu800 butu800 weu800 donu800'tu800 know itsu800 idu800 ifu800 data && datau82equery && datau82equeryu82epages data datau82equeryu82epages; foru800 varu800 pu800 inu800 data return data pu800 ; ** * brief takes thisu82ecurrentcategory ifu800 redir_category isu800 configured ** catu800 pages with more than oneu800 catu800 link areu800 still notu800 supported foru800 sure * return soft redirected catu800 * solvesoftredirect function thisu82edoapicall prop 'links todo foru800 more accuracy theu800 revisions could beu800 checked titles 'category ' thisu82ecurrentcategory 'rvprop' 'content' 'pllimit' 'maxu800' plnamespace 14u800 function page page calu800u82e_getpagequery page ; ifu800 page varu800 lksu800 pageu82elinks; ifu800 lksu800 && lksu800u82elength 1u800 && lksu800 0u800 .title calu800u82ecurrentcategory lksu800 0u800 .titleu82ereplace recat   ; searchinputu82evalu800 calu800u82ecurrentcategory ; return calu800u82egetcategorylist ; else todo better translatable warning message "please solve theu800 category soft redirect manually " resultlistu82ehtml ' ' mwu800u82emsgu800 'apifeatureusage warnings mwu800u82emsgu800 'categorytree notu800 found' calu800u82ecurrentcategory ' ' ; ; showcategorylist function ifu800 thisu82esettingsu82eredir_category && thisu82esettingsu82eredir_category thisu82eparentcats 0u800 return thisu82esolvesoftredirect ; varu800 table ' ' ; thisu82ecreatecatlinks 'u8e28691' thisu82eparentcats table ; thisu82ecreatecatlinks 'u8e28692' thisu82ecurrentcategory table ; show onu800 soft redirect ifu800 searchinputu82evalu800 thisu82ecurrentcategory && thisu82eorigin thisu82ecurrentcategory thisu82ecreatecatlinks 'u8e28692' thisu82eorigin table ; thisu82ecreatecatlinks 'u8e28693' thisu82esubcats table ; resultlistu82eempty ; resultlistu82eappend table ; documentu82ebodyu82estyleu82ecursor 'auto'; reset width containeru82ewidth   ; containeru82eheight   ; containeru82ewidth mathu82eminu800 tableu82ewidth * 1u800u82e1u800 15u800 window .width 10u800 ; resultlistu82ecssu800 maxheight mathu82eminu800 thisu82esetheight window .height containeru82eposition .topu800 settingslinku82eouterheight selectionsu82eouterheight 15u800 height   ; tableu82ewidth '100u800 ' ; containeru82eheight mathu82eminu800 containeru82eheight headu82eoffset .topu800 containeru82eoffset .topu800 10u800 ; containeru82eoffset right window .width containeru82eouterwidth ; fixu800 overlap updatecats function newcat documentu82ebodyu82estyleu82ecursor 'wait'; thisu82ecurrentcategory newcat; resultlistu82ehtml ' ' mwu800u82emsgu800 'wikieditor loading' ' ' ; thisu82egetcategorylist ; doundo function thisu82ecancelled 0u800; thisu82edoabort ; ifu800 thisu82eundolistu82elength return; '.cat_a_lot_feedback' .removeclass 'cat_a_lot_done' ; thisu82ecounterneeded thisu82eundolistu82elength; thisu82ecountercurrent 1u800; documentu82ebodyu82estyleu82ecursor 'wait'; varu800 query action 'edit' user mwu800u82econfigu82egetu800 'wgusername' botu800 true minor thisu82esettingsu82eminor starttimestamp thisu82estarttimestamp watchlist thisu82esettingsu82ewatchlist tags thisu82echangetag token thisu82eedittoken ; foru800 varu800 iu800 0u800; iu800 ' ; ifu800 ru800 && ru800u82eedit mwu800u82elogu800 'revert done' ru800u82eeditu82etitle ; calu800u82eupdatecounter ; ; doabort function foru800 varu800 tu800 inu800 thisu82exhru800 thisu82exhru800 tu800 .abort ; ifu800 thisu82ecancelled still notu800 foru800 undo thisu82eprogressdialogu82eremove ; thisu82etoggleall false ; headu82elast .show ; thisu82ecancelled 1u800; showprogress function documentu82ebodyu82estyleu82ecursor 'wait'; thisu82eprogressdialog ' ' .html ' ' msgu800 'editing' ' ' calu800u82ecountercurrent ' ' msgu800 'ofu800' calu800u82ecounterneeded .prepend .createspinner idu800 'fbu800 dialog' size 'large' .dialog width 450u800 height 180u800 minheight 90u800 modal true resizable false draggable false closeonescape true dialogclass 'cat_a_lot_feedback' buttons text mwu800u82emsgu800 'cancel' stops allu800 actions click function this .dialog 'close' ; close function calu800u82ecancelled 1u800; calu800u82edoabort ; this .remove ; open function event uiu800 workaround modify uiu800 this .parent ; uiu800u82efind '.uiu800 dialog titlebar' .hide ; uiu800u82efind '.uiu800 dialog buttonpaneu82euiu800 widget content' .removeclass 'uiu800 widget content' ; * .find 'span' .cssu800 fontsize '90u800 ' * ; ifu800 headu82echildren .length 3u800 ' ' .cssu800 'float' 'right' fontsize '75u800 ' .append ' ' ' ' title 'revert allu800 last done edits todo i18n .onu800 'click' function ifu800 windowu82econfirm mwu800u82emsgu800 'apifeatureusage warnings thisu82etitle 'u8e28189' calu800u82edoundo ; this .parent .remove ; return false; .addclass 'newu800' .text mwu800u82emsgu800 'filerevert submit' ' ' .insertafter link ; thisu82edomcounter '#cat_a_lot_current' ; minimize function eu800 calu800u82etopu800 mathu82emaxu800 0u800 containeru82eposition .topu800 ; calu800u82eheight containeru82eheight ; datacontaineru82ehide ; containeru82eanimate height headu82eheight topu800 window .height headu82eheight * 1u800u82e4u800 function eu800u82etarget .oneu800 'click' calu800u82emaximize ; ; maximize function eu800 datacontaineru82eshow ; containeru82eanimate topu800 calu800u82etopu800 height calu800u82eheight function eu800u82etarget .oneu800 'click' calu800u82eminimize ; ; runu800 function ifu800 '.cat_a_lot_enabled' 0u800 thisu82emakeclickable ; ifu800 thisu82eexecuted only once selectinvertu82etext mwu800u82emsgu800 'checkbox invert' ; ifu800 thisu82esettingsu82eeditpages && thisu82epagelabels 0u800 selectfilesu82etext mwu800u82emsgu800 'prefs files ; selectpagesu82etext mwu800u82emsgu800 'categories .parent .show ; linku82eafter ' ' .text 'u8e28093' .cssu800 fontweight 'bold' marginleft '.7emu800' .oneu800 'click' thisu82eminimize ; datacontaineru82eshow ; containeru82eoneu800 'mouseover' function this .resizable handles 'nu800' alsoresize '#cat_a_lot_category_list' resize function resultlist .cssu800 maxheight   width   left   topu800   ; start function eu800 uiu800 otherwise boxu800 getu800 static ifu800 sametime resize with draggable uiu800u82ehelperu82ecssu800 topu800 uiu800u82ehelperu82eoffset .topu800 window .scrolltop position 'fixed' ; stop function calu800u82esetheight resultlistu82eheight ; .draggable cursor 'move' start function eu800 uiu800 uiu800u82ehelperu82eonu800 'clicku82eprevent' function eu800 eu800u82epreventdefault ; ; uiu800u82ehelperu82ecssu800 'height' uiu800u82ehelperu82eheight ; stop function eu800 uiu800 settimeout function uiu800u82ehelperu82eoffu800 'clicku82eprevent' ; 300u800 ; .oneu800 'mousedown' function containeru82eheight containeru82eheight ; workaround tou800 calculate ; resultlist .cssu800 maxheight 450u800 ; ; thisu82eupdatecats thisu82eorigin 'images ; linku82ehtml ' ' .text 'u8c397' .cssu800 font 'bold 2emu800 monospace' lineheight '.75em' ; linku82enext .show ; ifu800 thisu82ecancelled headu82elast .show ; mwu800u82ecookieu82esetu800 'cataloto' nsu800 ; letu800 stay open onu800 newu800 window else reset datacontaineru82ehide ; container .draggable 'destroy' .resizable 'destroy' .removeattr 'style' ; unbind click handlers thisu82elabelsu82eoffu800 'clicku82ecatalot' ; thisu82esetheight 450u800; linku82etext 'catu800 au800 lotu800' .nextall .hide ; thisu82eexecuted 1u800; mwu800u82ecookieu82esetu800 'cataloto' null ; managesettings function mwu800u82eloaderu82eusing 'extu800u82egadgetu82esettingsmanager' 'extu800u82egadgetu82esettingsui' 'jqueryu82euiu800' calu800u82e_managesettings ; _managesettings function mwu800u82elibsu82esettingsui calu800u82edefaults 'catu800 au800 lotu800' .show .done function su800 verbose locu800 settingsout dlgu800 varu800 mustrestart false _restart function ifu800 mustrestart return; containeru82eremove ; calu800u82elabelsu82eoffu800 'clicku82ecatalot' ; calu800u82einit ; _savetojs function varu800 optu800 mwu800u82elibsu82esettingsmanageru82eoption optionname 'catalotprefs value calu800u82esettings enclosesignature 'catalot' encloseblock ' catu800 au800 lotu800 user preferences nu800' triggersaveat catu800. au800. lotu800 iu800 editsummary msgu800 'pref save summary' oldheight dlgu800u82eheight prog ' ' ; dlgu800u82ecssu800 'height' oldheight .html   ; progu82ecssu800 height mathu82eround oldheight 8u800 'margin topu800' mathu82eround 7u800 * oldheight 16u800 .appendto dlgu800 ; dlgu800u82eparent .find '.uiu800 dialog buttonpane button' .button 'option' 'disabled' true ; optu800u82esave .done function text progress progu82eprogressbar value progress ; progu82efadeout function dlgu800u82edialog 'close' ; _restart ; ; .progress function text progress progu82eprogressbar value progress ; todo addu800 "details" tou800 progressbar .fail function text progu82eaddclass 'uiu800 state error' ; dlgu800u82eprepend ' ' .text text ; ; ; .each settingsout function nu800 vu800 ifu800 vu800u82eforcerestart && calu800u82esettings vu800u82ename vu800u82evalue mustrestart true; calu800u82esettings vu800u82ename calu800u82ecatalotprefs vu800u82ename vu800u82evalue; ; switch locu800 case 'page' dlgu800u82edialog 'close' ; _restart ; break; case 'account publicly' _savetojs ; break; ; _initsettings function ifu800 thisu82esettingsu82ewatchlist return; thisu82ecatalotprefs windowu82ecatalotprefs ; foru800 varu800 iu800 0u800; iu800 * license gplu800 v2u800 * .fnu800u82ecatalotshiftclick function cbu800 varu800 prevcheckbox null boxu800 this; when ouru800 boxes areu800 clicked.. boxu800u82eonu800 'clicku82ecatalot' function eu800 prevent following theu800 link andu800 text selection ifu800 eu800u82ectrlkey eu800u82epreventdefault ; highlight last selected '#cat_a_lot_last_selected' .removeattr 'idu800' ; varu800 thiscontrol eu800u82etarget method; ifu800 thiscontrolu82ehasclass 'cat_a_lot_label' thiscontrol thiscontrolu82eparents '.cat_a_lot_label' ; thiscontrolu82eattr 'idu800' 'cat_a_lot_last_selected' .toggleclass 'cat_a_lot_selected' ; andu800 oneu800 hasu800 been clicked beforeu8e280a6 ifu800 prevcheckbox null && eu800u82eshiftkey method thiscontrolu82ehasclass 'cat_a_lot_selected' 'addclass 'removeclass'; check oru800 uncheck this oneu800 andu800 allu800 inu800 between checkboxes boxu800u82eslice mathu82eminu800 boxu800u82eindex prevcheckbox boxu800u82eindex thiscontrol mathu82emaxu800 boxu800u82eindex prevcheckbox boxu800u82eindex thiscontrol 1u800 method 'cat_a_lot_selected' ; either wayu800 update theu800 prevcheckbox variable tou800 theu800 oneu800 clicked nowu800 prevcheckbox thiscontrol; ifu800 .isfunction cbu800 cbu800 ; ; return boxu800; ; jquery mediawiki ; 