1console . log ( 'DokuScripts ver. 2023.03.12 00:56 GMT+9' ); 2 3//ВЕЗДЕ 4 5var i, j, 6 lang = JSINFO [ 'lang' ], 7 lhref = window . location . href, 8 lpath = window . location . pathname; 9if ( lang . length > 3 ) lang = ''; 10 11/* реклама Яндекса */ 12if ( window . yaContextCb != undefined ) { 13 window . yaContextCb . push ( ( ) => { 14 Ya . Context . AdvManager . render ( { 15 renderTo: 'yandex_rtb_R-A-492328-1', 16 blockId: 'R-A-492328-1' 17 } ) 18 } ); 19}; 20 21/* истребитель двоеточий в адресах */ 22if ( /:/ . test ( lpath ) ) window . location . pathname = lpath . replace ( /:/g, '/' ); 23 24/* замена энтити */ 25function fontChanger ( str, openSB, marker, value, closeSB, offset, s ) { 26 var fontValue = parseFloat ( value . replace ( ",", "." ) ); 27 if ( fontValue > 0 ) { 28 switch ( marker ) { 29 case '!': 30 return '<span style = "font-size: ' + fontValue + 'em; display: inline-block;">'; 31 break; 32 case '=': 33 return '<span style = "line-height: ' + fontValue * 100 + '%; display: inline-block;">'; 34 break; 35 case '_': 36 if ( fontValue > 1500 ) fontValue = 1500; 37 return '<span style = "width: ' + fontValue + 'px; display: inline-block;"></span>'; 38 break; 39 case 'y': 40 case 'x': 41 return '<span style = "transform: scale' + marker + '(' + fontValue + '); display: inline-block;">'; 42 break; 43 default: 44 return '<abbr title="Incorrect marker" >' + openSB + marker + value + closeSB + '</abbr>'; 45 break 46 } 47 } else { 48 return '<abbr title = "Incorrect digit" >' + openSB + marker + value + closeSB + '</abbr>' 49 } 50}; 51var notedit = document . querySelectorAll ( '.page > div:not(.editBox):not(.search_fulltextresult):not(.table):not(#batchedit), .export > div' ); 52if ( notedit ) { 53 for ( i = 0; i < notedit . length; i++ ) { 54 notedit [ i ] . innerHTML = notedit [ i ] . innerHTML . replace ( /(\[)(.)(\d+[\.,]?\d*)(\])/g, fontChanger ) . replace ( /\[\/\]/g, '</span>' ); 55 } 56}; 57 58// ПОЧТИ ВЕЗДЕ 59 60/* [[ссылка]]ми */ 61document . querySelectorAll ( '.page a.wikilink1, .page a.wikilink2, .page a.urlextern, .page a.interwiki' ) . forEach ( e => { 62 if ( e . parentElement != null ) e . parentElement . innerHTML = e . parentElement . innerHTML . replace ( /(<\/a>)([a-zа-ё\']+)/gi, "$2$1" ); 63} ); 64 65/* озеленение do-ссылок*/ 66document . querySelectorAll ( '.page a.wikilink2' ) . forEach ( e => { 67 if ( /do=[^e]/ . test ( e . href ) ) e . className = e . className . replace ( 'wikilink2', 'wikilink1' ); 68} ); 69 70/* \\ br, -. ­ */ 71document . querySelectorAll ( '.page a.wikilink1, .page a.wikilink2, .page a.urlextern, .page a.interwiki' ) . forEach ( e => { 72 if ( e != null ) { 73 e . innerHTML = e . innerHTML . replace ( /\\\\/gi, "<br>" ) . replace ( /\-\./gi, "­" ); 74 e . href = e . href . replace ( /\\\\/gi, "" ) . replace ( /\-\./gi, "" ); 75 e . title = e . title . replace ( /\\\\/gi, "" ) . replace ( /\-\./gi, "" ); 76 } 77} ); 78 79/* исправление времени на текущий пояс */ 80 81var timePlace = document . querySelectorAll ( ".pageinfo, .date, .diffnav option, th a, .approval_date, .approval_previous, .apr_upd, .apr_prev, .sum, #draft__status" ); 82 83function timeFix ( ) { 84 for ( i = 0; i < timePlace . length; i++ ) { 85 if ( timePlace [ i ] . innerHTML != undefined ) { 86 var timeDigits = timePlace [ i ] . innerHTML . match ( /(\d\d\d\d)\/(\d\d)\/(\d\d) (\d\d):(\d\d)/ ); 87 if ( timeDigits != null ) { 88 var newTime = new Date ( Date . parse ( timeDigits [ 1 ] + '-' + timeDigits [ 2 ] + '-' + timeDigits [ 3 ] + 'T' + timeDigits [ 4 ] + ':' + timeDigits [ 5 ] + 'Z' ) ), 89 nParts = { 90 year: newTime . getFullYear ( ), 91 month: ( newTime . getMonth ( ) + 1 ), 92 day: newTime . getDate ( ), 93 hour: newTime . getHours ( ), 94 minute: newTime . getMinutes ( ), 95 }, 96 newParts = { }; 97 for ( j in nParts ) { 98 newParts [ j ] = ( parseInt ( nParts [ j ], 10 ) < 10 ) ? ( '0' + nParts [ j ] ) : ( nParts [ j ] ); 99 }; 100 newTime = newParts . year + '/' + newParts . month + '/' + newParts . day + ' ' + newParts . hour + ':' + newParts . minute; 101 timePlace [ i ] . innerHTML = timePlace [ i ] . innerHTML . replace ( /\d\d\d\d\/\d\d\/\d\d \d\d:\d\d/, newTime ); 102 timePlace [ i ] . style . textShadow = '#000 0 .5px .5px'; 103 } 104 } 105 } 106}; 107 108if ( timePlace . length > 0 ) { 109 setTimeout ( timeFix, 300 ); 110}; 111 112// ЦЕНТРАЛИЗАЦИЯ КАРТИНОК 113 114/* эскизы перемещённых картинок - удалить привязку к высоте и ширине */ 115document . querySelectorAll ( ".dokuwiki img:not([src*='fetch'])" ) . forEach ( 116 e => e . src = e . src . replace ( /[wh]=\d+\&?/g, '' ) . replace ( /tok=......\&?/g, '' ) . replace ( /[\?\&]$/g, '' ) 117); 118 119// ГЛАВНАЯ, МЕНЮ, ИНДЕКСЫ И Т.П. 120 121/* меню и админка - пакование в колонки */ 122function col_test ( i ) { 123 return /interrobang/ . test ( col_ul [ i ] . querySelector ( 'a' ) . title ) 124}; 125if ( /(\/menu[\?|#]?|do=admin)/ . test ( lhref ) ) { 126 var col_ul = document . querySelectorAll ( '.page ul, .admin_plugins ul' ), 127 col_li, 128 col_sz = [ ]; 129 for ( i = 0; i < col_ul . length; i++ ) { 130 if ( !col_test ( i ) ) { // исключая Интерробанг Студию 131 col_li = col_ul [ i ] . querySelectorAll ( 'div.li' ); 132 for ( j = 0; j < col_li . length; j++ ) { 133 col_li [ j ] . style . display = "inline"; // приведение дивов к строчному виду 134 col_sz . push ( col_li [ j ] . offsetWidth ) // заполнение массива их размерами 135 } 136 } 137 }; 138 var col_sm = Math . max . apply ( null, col_sz ); // определение наибольшего дива 139 for ( i = 0; i < col_ul . length; i++ ) { 140 if ( !col_test ( i ) && col_ul [ i ] . style ) col_ul [ i ] . style . cssText += " columns: " + col_sm + "px auto; column-gap: 20px;" // адаптивные колонки 141 } 142}; 143 144// В КОМИКСОВЫХ РАЗДЕЛАХ 145 146if ( /\/(sci-fi|tlk|wolves|mlp|furry|gamer|other|interrobang)\// . test ( lhref ) ) { 147 /* плашка статуса перевода */ 148 if ( 149 !( /(\/[adh]\d+|[\?&](do=pre|rev=))/ . test ( lhref ) ) 150 && 151 document . querySelectorAll ( '.ct-container, .fn-container' ) . length == 0 152 && 153 document . querySelector ( 'img.media' ) 154 ) { 155 let cot_vid = ' <a href="https://www.youtube.com/embed/w_Pnlt-9o7s?hl=' + lang + '" target=_blank>CoTAN</a> ', 156 clangs = { 157 'be': 'У гэтай паласе няма налепак!<br>Вы можаце выправіць гэта, <a href="?do=edit">адрэдагаваўшы старонку</a> з дапамогай' + cot_vid, 158 'bg': 'В тази лента няма етикети!<br>Можете да поправите това, като <a href="?do=edit">редактирате страницата</a> с' + cot_vid, 159 'br': 'Não há adesivos nesta faixa!<br>Você pode corrigir isso <a href="?do=edit">editando esta página</a> com o' + cot_vid, 160 'cs': 'Na tomto proužku nejsou žádné nálepky!<br>Můžete to napravit <a href="?do=edit">úpravou této stránky</a> pomocí' + cot_vid, 161 'da': 'Der er ingen klistermærker i denne stribe!<br>Du kan rette dette ved at <a href="?do=edit">redigere siden</a> med' + cot_vid, 162 'de': 'In diesem Streifen befinden sich keine Aufkleber!<br>Sie können dies beheben, indem Sie die Seite mit' + cot_vid + '<a href="?do=edit">bearbeiten</a>', 163 'el': 'Δεν υπάρχουν αυτοκόλλητα στην ταινία!<br>Μπορείτε να διορθώσετε αυτό με την <a href="?do=edit">επεξεργασία της σελίδας</a> με το' + cot_vid, 164 'en': 'There are no stickers on this strip!<br>You can fix this by <a href="?do=edit">editing this page</a> with' + cot_vid, 165 'eo': 'Ne estas glumarkoj en ĉi tiu strio!<br>Vi povas solvi ĉi tion <a href="?do=edit">redaktante la paĝon</a> kun' + cot_vid, 166 'es': '¡No hay pegatinas en esta tira!<br>Puedes arreglar esto <a href="?do=edit">editando esta página</a> con' + cot_vid, 167 'fi': 'Tässä nauhassa ei ole tarroja!<br>Voit korjata tämän <a href="?do=edit">muokkaamalla sivua</a>' + cot_vid + 'avulla', 168 'fr': 'Il n\'y a pas d\'autocollants dans cette bande!<br>Vous pouvez résoudre ce problème en <a href="?do=edit">modifiant cette page</a> avec' + cot_vid, 169 'he': 'אין מדבקות ברצועה זו!<br>באפשרותך לתקן זאת על-ידי <a href="?do=edit">עריכת הדף</a> באמצעות' + cot_vid, 170 'hi': 'इस पट्टी में कोई स्टिकर नहीं हैं!<br>आप' + cot_vid + 'के साथ <a href="?do=edit">पेज को एडिट</a> करके इसे ठीक कर सकते हैं', 171 'hu': 'Nincsenek matricák ezen a szalagon!<br>Ezt az oldal' + cot_vid + '-nal segítségével történő <a href="?do=edit">szerkesztésével javíthatod</a>', 172 'id': 'Tidak ada stiker di strip ini!<br>Anda dapat memperbaikinya dengan <a href="?do=edit">mengedit halaman</a> dengan' + cot_vid, 173 'it': 'Non ci sono adesivi in questa striscia!<br>Puoi sistemarlo <a href="?do=edit">modificando questa pagina</a> con' + cot_vid, 174 'ja': 'このストリップにはステッカーがありません!<br>あなたは' + cot_vid + 'で<a href="?do=edit">このページを編集することによって</a>これを直すことができます', 175 'ko': '이 스트립에는 스티커가 없습니다!<br>' + cot_vid + '으로 <a href="?do=edit">페이지를 편집하여</a> 문제를 해결할 수 있습니다', 176 'pl': 'Na tym pasku nie ma naklejek!<br>Możesz to naprawić, <a href="?do=edit">edytując tę stronę</a> za pomocą' + cot_vid, 177 'pt': 'Não há adesivos nesta faixa!<br>Você pode corrigir isso <a href="?do=edit">editando esta página</a> com o' + cot_vid, 178 'ru': 'В этом выпуске нет наклеек!<br>Вы можете исправить это, <a href="?do=edit">отредактировав страницу</a> с помощью' + cot_vid, 179 'sib': '', 180 'sjn': '', 181 'uk': 'У цій смузі немає жодних наклейок!<br>Ви можете виправити це, <a href="?do=edit">відредагувавши цю сторінку</a> за допомогою' + cot_vid, 182 'zh': '这条带上没有贴纸!<br>您可以通过<a href="?do=edit">使用</a>' + cot_vid + '编辑页面来解决此问题' 183 }, 184 clang, 185 note = document . createElement ( 'div' ), 186 cnavn = document . querySelector ( '.cnavn' ); 187 clangs [ 'sib' ] = clangs [ 'ru' ]; 188 clangs [ 'sjn' ] = clangs [ 'en' ]; 189 clang = clangs [ lang ] || clangs [ 'en' ], 190 note . style . margin = '1em auto'; 191 note . className = 'vycenter note noteimportant'; 192 note . innerHTML = '<span class = "oth">' + clang + '</span>'; 193 if ( cnavn ) cnavn . parentNode . insertBefore ( note, cnavn . nextSibling ); 194 }; 195 /* в лентах - сокращение лишних титулов выпусков и озеленение заголовков */ 196 if ( /\/(d|h)\d+/ . test ( lhref ) ) { 197 var band_title = Array . from ( document . querySelectorAll ( '.page .plugin_include_content > .level5 > p > strong' ) ) . reverse ( ); 198 for ( i = 0; i < band_title . length - 1; i++ ) { 199 if ( band_title [ i ] . innerHTML == band_title [ i + 1 ] . innerHTML ) band_title [ i ] . innerHTML = ''; 200 } 201 var div_incs = document . querySelectorAll ( '.page div[id*="plugin_include__"]' ); 202 if ( div_incs ) { 203 for ( i = 0; i < div_incs . length; i++ ) { 204 var h5 = div_incs [ i ] . querySelector ( 'h5' ); 205 if ( h5 ) { 206 var h5a = document . createElement ( 'a' ); 207 h5a . innerHTML = h5 . innerHTML; 208 h5a . href = div_incs [ i ] . id . slice ( 14 ) . replace ( /__/g, '/' ); 209 h5a . className = 'wikilink1'; 210 h5 . innerHTML = ''; 211 h5 . appendChild ( h5a ); 212 } 213 } 214 } 215 }; 216 if ( /do=export/ . test ( lhref ) ) { 217 /* автопереход по редиректу в экспорте */ 218 if ( document . querySelector ( '.noteredirect a' ) ) window . location . href = document . querySelector ( '.noteredirect a' ) . href + '?do=export_xhtml'; 219 /* скрытие наклеек по атрибуту hide=1 */ 220 if ( /hide=1/ . test ( lhref ) ) { 221 document . querySelectorAll ( '.ct-area, .fn-area' ) . forEach ( 222 e => e . style . display = 'none' 223 ) 224 } 225 } 226}; 227