МедияУики:Common.js
от Уикиречник
Бележка: След съхранението е необходимо да изтриете кеша на браузъра, за да видите промените: Mozilla / Firefox / Safari: натиснете бутона Shift и щракнете върху Презареждане (Reload), или изберете клавишната комбинация Ctrl-Shift-R (Cmd-Shift-R за Apple Mac); IE: натиснете Ctrl и щракнете върху Refresh, или клавишната комбинация CTRL-F5; Konqueror: щракнете върху Презареждане или натиснете F5; Opera: вероятно е необходимо да изчистите кеша през менюто Tools→Preferences.
/* * * * * * * * * * Edit tools data * * * * * * * * * */ // знаци, от които ще се генерират бутони с insertTags() var chars = { "IPA": [ 'a', 'ɐ', 'ɑ', 'ɒ', 'ʌ', 'æ', 'ɶ', 'e', 'ɘ', 'ə', 'ɛ', 'ɜ', 'œ', 'ɞ', 'o', 'ɔ', 'ɵ', 'ø', 'i', 'ɨ', 'ɪ', 'u', 'ʉ', 'ʊ', 'ɯ', 'y', 'ʏ', 'ɣ', '--', 'b', 'β', 'ʙ', 'c', 'ç', 'd', 'ɖ', 'ɗ', 'f', 'ɡ', 'ɢ', 'h', 'ɦ', 'ħ', 'j', 'ʝ', 'ɟ', 'k', 'l', 'ɭ', 'ɬ', 'ɮ', 'ʟ', 'm', 'ɱ', 'n', 'ɳ', 'ɲ', 'ŋ', 'ɴ', 'p', 'q', 'r', 'ɾ', 'ɿ', 'ɽ', 'ɻ', 'ʀ', 'ʁ', 's', 'ʂ', 'ʃ', 'ʅ', 'ʆ', 't', 'ʈ', 'ð', 'θ', 'ɸ', 'v', 'ʋ', 'ɰ', 'x', 'χ', 'ɣ', 'ɤ', 'ʎ', 'ʏ', 'z', 'ʐ', 'ʑ', 'ʒ', 'ʓ', 'ʕ', 'ʔ', 'ʖ', 'ʘ', 'ǂ', 'ʰ', 'ʷ', 'ʲ', 'ˠ', 'ˤ', 'ⁿ', 'ˡ', '--', 'z̥', 's̬', 't̬', 'l̩', 'm̩', 'n̩', 'ŋ̩', 'ɪ̯', 'ʊ̯', 'ɛ̃', 'ɪ̃', 'ɔ̃', '--', 'ˈ', 'ˌ', 'ː', '˘', 'ˑ', '.', '‿', '|', '‖'], "AHD": ['ā', 'ă', 'ä', 'â', 'ē', 'ĕ', 'ī', 'ĭ', 'î', 'ō', 'ŏ', 'ô', 'ŭ', 'o͞o', 'o͝o', 'û', 'ə'], "DMG": ['ʾ', 'ʿ', 'Ā', 'ā', 'Č', 'č', 'Ḍ', 'ḍ', 'Ḏ', 'ḏ', 'Ǧ', 'ǧ', 'Ġ', 'ġ', 'Ḥ', 'ḥ', 'Ḫ', 'ḫ', 'Ī', 'ī', 'ḷ', 'ŋ', 'Ṣ', 'ṣ', 'Š', 'š', 'Ṭ', 'ṭ', 'Ṯ', 'ṯ', 'Ū', 'ū', 'Ẓ', 'ẓ', 'Ẕ', 'ẕ', 'Ž', 'ž'], "Арабски": [ '؛', '؟', 'ء', 'آ', 'أ', 'ؤ', 'إ', 'ئ', 'ا', 'ب', 'ة', 'ت', 'ث', 'ج', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'س', 'ش', 'ص', 'ض', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق', 'ك', 'ل', 'م', 'ن', 'ه', 'و', 'ى', 'ي', '،' ], "Виетнамски": [ 'À', 'à', 'Ả', 'ả', 'Á', 'á', 'Ạ', 'ạ', 'Ã', 'ã', 'Ă', 'ă', 'Ằ', 'ằ', 'Ẳ', 'ẳ', 'Ẵ', 'ẵ', 'Ắ', 'ắ', 'Ặ', 'ặ', 'Â', 'â', 'Ầ', 'ầ', 'Ẩ', 'ẩ', 'Ẫ', 'ẫ', 'Ấ', 'ấ', 'Ậ', 'ậ', 'Đ', 'đ', 'È', 'è', 'Ẻ', 'ẻ', 'Ẽ', 'ẽ', 'É', 'é', 'Ẹ', 'ẹ', 'Ê', 'ê', 'Ề', 'ề', 'Ể', 'ể', 'Ễ', 'ễ', 'Ế', 'ế', 'Ệ', 'ệ', 'Ỉ', 'ỉ', 'Ĩ', 'ĩ', 'Í', 'í', 'Ị', 'ị', 'Ì', 'ì', 'Ỏ', 'ỏ', 'Ó', 'ó', 'Ọ', 'ọ', 'Ò', 'ò', 'Õ', 'õ', 'Ô', 'ô', 'Ồ', 'ồ', 'Ổ', 'ổ', 'Ỗ', 'ỗ', 'Ố', 'ố', 'Ộ', 'ộ', 'Ơ', 'ơ', 'Ờ', 'ờ', 'Ở', 'ở', 'Ỡ', 'ỡ', 'Ớ', 'ớ', 'Ợ', 'ợ', 'Ù', 'ù', 'Ủ', 'ủ', 'Ũ', 'ũ', 'Ú', 'ú', 'Ụ', 'ụ', 'Ư', 'ư', 'Ừ', 'ừ', 'Ử', 'ử', 'Ữ', 'ữ', 'Ứ', 'ứ', 'Ự', 'ự', 'Ỳ', 'ỳ', 'Ỷ', 'ỷ', 'Ỹ', 'ỹ', 'Ỵ', 'ỵ', 'Ý', 'ý'], "Галисийски": [ 'Á', 'á', 'À', 'à', 'Â', 'â', 'Ä', 'ä', 'É', 'é', 'È', 'è', 'Ê', 'ê', 'Ë', 'ë', 'Ì', 'ì', 'Î', 'î', 'Ï', 'ï', 'Ó', 'ó', 'Ò', 'ò', 'Ô', 'ô', 'Ö', 'ö', 'Ù', 'ù', 'Û', 'û', 'Ẁ', 'ẁ', 'Ŵ', 'ŵ', 'Ẅ', 'ẅ', 'Ý', 'ý', 'Ỳ', 'ỳ', 'Ŷ', 'ŷ', 'Ÿ', 'ÿ'], "Гръцки": [ 'Α', 'Ά', 'Β', 'Γ', 'Δ', 'Ε', 'Έ', 'Ζ', 'Η', 'Ή', 'Θ', 'Ι', 'Ί', 'Κ', 'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Ό', 'Π', 'Ρ', 'Σ', 'Τ', 'Υ', 'Ύ', 'Φ', 'Χ', 'Ψ', 'Ω', 'Ώ', '--', 'α', 'ά', 'β', 'γ', 'δ', 'ε', 'έ', 'ζ', 'η', 'ή', 'θ', 'ι', 'ί', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'ό', 'π', 'ρ', 'σ', 'ς', 'τ', 'υ', 'ύ', 'φ', 'χ', 'ψ', 'ω', 'ώ'], "Есперанто": ['Ĉ', 'ĉ', 'Ĝ', 'ĝ', 'Ĥ', 'ĥ', 'Ĵ', 'ĵ', 'Ŝ', 'ŝ', 'Ŭ', 'ŭ'], "Естонски": ['Č', 'č', 'Š', 'š', 'Ž', 'ž', 'Õ', 'õ', 'Ä', 'ä', 'Ö', 'ö', 'Ü', 'ü'], "Исландски": ['Á', 'á', 'Ð', 'ð', 'É', 'é', 'Í', 'í', 'Ó', 'ó', 'Ú', 'ú', 'Ý', 'ý', 'Þ', 'þ', 'Æ', 'æ', 'Ö', 'ö'], "Идиш": [ 'א', 'אַ', 'אָ', 'ב', 'בֿ', 'ג', 'ד', 'ה', 'ו', 'וּ', 'װ', 'ױ', 'ז', 'זש', 'ח', 'ט', 'י', 'יִ', 'ײ', 'ײַ', 'כ', 'ך', 'כּ', 'ל', 'ל+', 'מ', 'ם', 'נ', 'ן', 'ס', 'ע', 'ע+', 'פ', 'פּ', 'פֿ', 'ף', 'צ', 'ץ', 'ק', 'ר', 'ש', 'שׂ', 'תּ', 'ת', '׳', '״', '־' ], "Испански": ['Á', 'á', 'É', 'é', 'Í', 'í', 'Ñ', 'ñ', 'Ó', 'ó', 'Ú', 'ú', 'Ü', 'ü', '¡', '¿'], "Италиански": ['Á', 'á', 'À', 'à', 'É', 'é', 'È', 'è', 'Í', 'í', 'Ì', 'ì', 'Ó', 'ó', 'Ò', 'ò', 'Ú', 'ú', 'Ù', 'ù'], "Каталонски": ['Á', 'á', 'À', 'à', 'Ç', 'ç', 'É', 'é', 'È', 'è', 'Ë', 'ë', 'Í', 'í', 'Ï', 'ï', 'Ó', 'ó', 'Ò', 'ò', 'Ö', 'ö', 'Ú', 'ú', 'Ù', 'ù'], "Кирилски": [ 'А', 'Б', 'В', 'Г', 'Ґ', 'Ѓ', 'Д', 'Ђ', 'Е', 'Є', 'Ё', 'Ж', 'З', 'Ѕ', 'И', 'І', 'Ї', 'Й', 'Ј', 'К', 'Ќ', 'Л', 'Љ', 'М', 'Н', 'Њ', 'О', 'Ө', 'П', 'Р', 'С', 'Т', 'Ћ', 'У', 'Ү', 'Ў', 'Ф', 'Х', 'Ц', 'Ч', 'Џ', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', '--', 'а', 'б', 'в', 'г', 'ґ', 'ѓ', 'д', 'ђ', 'е', 'є', 'ё', 'ж', 'з', 'ѕ', 'и', 'і', 'ї', 'й', 'ј', 'к', 'ќ', 'л', 'љ', 'м', 'н', 'њ', 'о', 'ө', 'п', 'р', 'с', 'т', 'ћ', 'у', 'ү', 'ў', 'ф', 'х', 'ц', 'ч', 'џ', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я'], "Латвийски": [ 'Ā', 'Č', 'Ē', 'Ģ', 'Ī', 'Ķ', 'Ļ', 'Ņ', 'Š', 'Ū', 'Ž', '--', 'ā', 'č', 'ē', 'ģ', 'ī', 'ķ', 'ļ', 'ņ', 'š', 'ū', 'ž'], "Латински": [ 'Á', 'á', 'Ć', 'ć', 'É', 'é', 'Í', 'í', 'Ó', 'ó', 'Ś', 'ś', 'Ú', 'ú', 'Ý', 'ý', 'Ǿ', 'ǿ', '--', 'À', 'à', 'È', 'è', 'Ì', 'ì', 'Ò', 'ò', 'Ù', 'ù', '--', 'Â', 'â', 'Ĉ', 'ĉ', 'Ê', 'ê', 'Ĝ', 'ĝ', 'Ĥ', 'ĥ', 'Î', 'î', 'Ĵ', 'ĵ', 'Ô', 'ô', 'ŝ', 'Ŝ', 'Û', 'û', '--', 'Ä', 'ä', 'Ë', 'ë', 'Ï', 'ï', 'Ö', 'ö', 'Ü', 'ü', 'ÿ', '--', 'Ã', 'ã', 'Ñ', 'ñ', 'Õ', 'õ', '--', 'Å', 'å', '--', 'Ç', 'ç', '--', 'Č', 'č', 'Š', 'š', 'ŭ', '--', 'Ł', 'ł', '--', 'Ő', 'ő', 'Ű', 'ű', '--', 'Ø', 'ø', '--', 'Ā', 'ā', 'Ē', 'ē', 'Ī', 'ī', 'Ō', 'ō', 'Ū', 'ū', 'Ȳ', 'ȳ', '--', 'Ă', 'ă', 'Ĕ', 'ĕ', 'Ğ', 'ğ', 'Ĭ', 'ĭ', 'Ŏ', 'ŏ', 'Ŭ', 'ŭ', 'Y̆', 'y̆', '--', 'ß', '--', 'Æ', 'æ', 'Œ', 'œ', '--', 'Ð', 'ð', 'Þ', 'þ'], "Малтийски": ['Ċ', 'ċ', 'Ġ', 'ġ', 'Ħ', 'ħ', 'Ż', 'ż'], "Немски": ['Ä', 'ä', 'Ö', 'ö', 'ß', 'Ü', 'ü'], "Пинин": [ 'Á', 'á', 'À', 'à', 'Ǎ', 'ǎ', 'Ā', 'ā', 'É', 'é', 'È', 'è', 'Ě', 'ě', 'Ē', 'ē', 'Í', 'í', 'Ì', 'ì', 'Ǐ', 'ǐ', 'Ī', 'ī', 'Ó', 'ó', 'Ò', 'ò', 'Ǒ', 'ǒ', 'Ō', 'ō', 'Ú', 'ú', 'Ù', 'ù', 'Ü', 'ü', 'Ǔ', 'ǔ', 'Ū', 'ū', 'Ǘ', 'ǘ', 'Ǜ', 'ǜ', 'Ǚ', 'ǚ', 'Ǖ', 'ǖ'], "Полски": ['ą', 'Ą', 'ć', 'Ć', 'ę', 'Ę', 'ł', 'Ł', 'ń', 'Ń', 'ó', 'Ó', 'ś', 'Ś', 'ź', 'Ź', 'ż', 'Ż'], "Португалски": [ 'Á', 'á', 'À', 'à', 'Â', 'â', 'Ã', 'ã', 'Ç', 'ç', 'É', 'é', 'Ê', 'ê', 'Í', 'í', 'Ó', 'ó', 'Ô', 'ô', 'Õ', 'õ', 'Ú', 'ú', 'Ü', 'ü'], "Реторомански": ['Ā', 'ā', 'Ē', 'ē', 'Ī', 'ī', 'Ō', 'ō', 'Ū', 'ū'], "Румънски": ['Ă', 'ă', 'Â', 'â', 'Î', 'î', 'Ş', 'ş', 'Ţ', 'ţ'], "Скандинавски": [ 'À', 'à', 'É', 'é', 'Å', 'å', 'Æ', 'æ', 'Ä', 'ä', 'Ø', 'ø', 'Ö', 'ö'], "Сръбски": [ 'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Ђ', 'ђ', 'Е', 'е', 'Ж', 'ж', 'З', 'з', 'И', 'и', 'Ј', 'ј', 'К', 'к', 'Л', 'л', 'Љ', 'љ', 'М', 'м', 'Н', 'н', 'Њ', 'њ', 'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'Ћ', 'ћ', 'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ч', 'ч', 'Џ', 'џ', 'Ш', 'ш'], "Староанглийски": [ 'Ā', 'ā', 'Æ', 'æ', 'Ǣ', 'ǣ', 'Ǽ', 'ǽ', 'Ċ', 'ċ', 'Ð', 'ð', 'Ē', 'ē', 'Ġ', 'ġ', 'Ī', 'ī', 'Ō', 'ō', 'Ū', 'ū', 'Ƿ', 'ƿ', 'Ȳ', 'ȳ', 'Þ', 'þ', 'Ȝ', 'ȝ'], "Турски": ['Ç', 'ç', 'Ğ', 'ğ', 'İ', 'ı', 'Ş', 'ş', 'Ö', 'ö', 'Ü', 'ü'], "Френски": [ 'À', 'à', 'Â', 'â', 'Ç', 'ç', 'É', 'é', 'È', 'è', 'Ê', 'ê', 'Ë', 'ë', 'Î', 'î', 'Ï', 'ï', 'Ô', 'ô', 'Œ', 'œ', 'Ù', 'ù', 'Û', 'û', 'Ü', 'ü', 'Ÿ', 'ÿ'], "Хавайски": ['Ā', 'ā', 'Ē', 'ē', 'Ī', 'ī', 'Ō', 'ō', 'Ū', 'ū', 'ʻ'], "Хърватски": ['Č', 'č', 'Ć', 'ć', 'Dž', 'dž', 'Đ', 'đ', 'Š', 'š', 'Ž', 'ž'], "Чешки": [ 'Á', 'á', 'Č', 'č', 'Ď', 'ď', 'É', 'é', 'Ě', 'ě', 'Í', 'í', 'Ň', 'ň', 'Ó', 'ó', 'Ř', 'ř', 'Š', 'š', 'Ť', 'ť', 'Ú', 'ú', 'Ů', 'ů', 'Ý', 'ý', 'Ž', 'ž'], "Унгарски": ['Ő', 'ő', 'Ű', 'ű'], "Разни": ['Ŗ', 'ŗ', 'Ĺ', 'ĺ', 'Ŕ', 'ŕ', 'Ľ', 'ľ', 'Ė', 'ė', 'Į', 'į', 'Ų', 'ų', 'Ŀ', 'ŀ'] }; // този масив ще се попълва от потребителите на личните им js страници // трябва да съдържа ключове на елементи от масива chars var myChars = []; // от тези данни ще се генерират допълнителни бутони с insertTags() var customInsButtons = [ // ТЕКСТ_ОТЛЯВО ТЕКСТ_ОТДЯСНО ТЕКСТ_ПО_СРЕДАТА ЗАГЛАВИЕ ПОКАЗАН_ТЕКСТ ["#виж ["+"[", "]]", "Страница", "+команда за пренасочване", "вж"], ["["+"[Категория:", "]]", "Категория", "+препратка за категория", "кат"], ["<code>", "</code>", "текст", "Текст с фиксирана ширина на буквите — обикновено код", "<tt>код</tt>"], ["<sub>", "</sub>", "индекс", "+долен индекс", "a<sub>x</sub>"], ["<sup>", "</sup>", "степен", "+горен индекс", "a<sup>x</sup>"], [" ", "", "", "+несекаем интервал", "nbsp"], ["„", "“", "текст", "+български кавички", "„“"], ["<del>", "</del>", "текст", "Отбелязване на текст като изтрит", "<del>del</del>"], ["{"+"{", "}}", "", "+скоби за шаблон", "{{}}"], ["|", "", "", "+отвесна черта — |", " | "], ["—", "", "", "+дълга чертица — mdash", "—"], ["–", "", "", "+средна чертица — ndash", " – "], ["·", "", "", "+средна точка", " · "], ["ѝ", "", "", "+„и“ с ударение", "ѝ"], ["", "̀", "", "+ударение за гласна буква (маркирайте една буква)", " ̀"], ["<"+"!--", "-->", "коментар", "+коментар", "<!--"] ]; // данни за още бутони с код по желание var customMiscButtons = [ // КОД_ЗА_ИЗПЪЛНЕНИЕ ЗАГЛАВИЕ ПОКАЗАН_ТЕКСТ ]; var tpl1 = { // "ПОКАЗВАН ТЕКСТ" : "ИМЕ НА СТРАНИЦАТА", "Част на речта…" : "-", "Български език" : { "Съществ. нариц. име": "Шаблон:Съществително нарицателно име/празен", "Прилагателно име": "Шаблон:Прилагателно име/празен", "Местоимение": "Шаблон:Местоимение/празен", "Числително име": "Шаблон:Числително име/празен", "Глагол": "Шаблон:Глагол/празен", "Наречие": "Шаблон:Наречие/празен", "Съюз": "Шаблон:Съюз/празен", "Междуметие": "Шаблон:Междуметие/празен", "Частица": "Шаблон:Частица/празен", "Предлог": "Шаблон:Предлог/празен", "Съществ. собств. име": "Шаблон:Съществително собствено име/празен", "Представка": "Шаблон:Представка/празен", "Наставка": "Шаблон:Наставка/празен", "Словоформа": "Шаблон:Форма/празен" }, "Други езици": { "Съществително име": "Шаблон:Noun/празен", "Прилагателно име": "Шаблон:Adjective/празен", "Глагол": "Шаблон:Verb/празен", "Наречие": "Шаблон:Adverb/празен" } }; // тук посочвайте какви шаблони да се вмъкват чрез падащото меню „Шаблон…“ var tpl2 = { // "ПОКАЗВАН ТЕКСТ" : "ИМЕ НА СТРАНИЦАТА", "Шаблон…" : "-" }; /* * * * * * * * * * Edit tools functions * * * * * * * * * */ var tplVarBaseName = "tpl"; // добавя нови бутони и други играчки function setupCustomEditTools() { var toolbar = document.getElementById("toolbar"); // ако няма съществуващи бутони, няма да добавяме и тези if ( !toolbar ) { return; } toolbar.className += " buttonlinks"; var tools = document.createElement("div"); tools.id = "custombuttons"; for (var i in customInsButtons) { var el = customInsButtons[i]; var title = el[3]; if ( title.charAt(0) == "+" ) { title = "Вмъкване на " + title.substr(1); } addCustomButton(tools, {"href": "javascript:insertTags('"+el[0] +"','"+el[1]+"','"+ el[2]+"')", "title": title, "innerHTML": el[4]}); } for (var i in customMiscButtons) { var el = customMiscButtons[i]; addCustomButton(tools, {"href":"javascript:"+el[0], "title":el[1], "innerHTML":el[2]}); } // падащите менюта addDropDownMenus(toolbar); toolbar.appendChild(tools); toolbar.appendChild( makeCharsContainer() ); viewChars("my"); } hookEvent("load", setupCustomEditTools); var charsElemId = "extraChars"; // името на елемента за знаците var genChars = new Object(); // вече генерираните знаци function makeCharsContainer() { var wrapper = document.createElement("div"); wrapper.id = "extraCharsWrapper"; var ctrl = document.createElement("span"); ctrl.appendChild( makeCharSelector() ); var chars = document.createElement("span"); chars.id = charsElemId; wrapper.appendChild(ctrl); wrapper.appendChild(chars); return wrapper; } function makeCharSelector() { var l = document.createElement("label"); l.appendChild( document.createTextNode("Знаци: ") ); var b = document.createElement("select"); l.setAttribute("for", b.id = "xchm"); b.onchange = function() { viewChars(this.value); } b.appendChild( newOption("", "(Избор)") ); for (var id in chars) { b.appendChild( newOption(id, id) ); } b.appendChild( newOption("my", "(Моите знаци)") ); b.appendChild( newOption("all", "(Всички знаци)") ); var w = document.createElement("span"); w.appendChild(l); w.appendChild(b); return w; } function viewChars(id) { var box = document.getElementById(charsElemId); if ( !box ) { return; } box.innerHTML = id == "my" || id == "all" ? makeCharsMult(id) : makeChars(id); } function makeCharsMult(id) { if ( typeof( genChars[id] ) != "undefined" ) { return genChars[id]; } var cont = ""; var lchars = id == "my" ? filterArrByKey(chars, myChars) : chars; for (var cid in lchars) { cont += '<br/><span><em>'+cid +':</em> '+ makeChars(cid) +'</span>'; } return genChars[id] = cont; } function makeChars(id) { if ( typeof( chars[id] ) == "undefined" ) { return ""; } // ако знаците са готови, връщаме тях if ( typeof( genChars[id] ) != "undefined" ) { return genChars[id]; } var cont = ""; for (var i in chars[id]) { var ch = chars[id][i]; if (ch == "--") { cont += " ···"; continue; } cont += " <a href=\"javascript:insertTags('"+ch+"', '', '')\" "+ 'title="Вмъкване на знака „'+ch+'“">'+ch+'</a> '; } return genChars[id] = cont; } function addCustomButton(box, item) { var b = document.createElement("a"); for (var attr in item) { b[attr] = item[attr]; } box.appendChild(b); box.appendChild( document.createTextNode(" ") ); } function addDropDownMenus(parent) { var tplVar = null; for ( var i = 1; tplVar = tplVarBaseName + i, eval("var tpl = typeof("+ tplVar +") == 'object' ? "+ tplVar +" : null"), tpl != null; i++ ) { addDropDownMenu(parent, tpl); } } /** генерира падащо меню */ function addDropDownMenu(parent, content) { var box = document.createElement("select"); box.title = "Оттук можете да вмъкнете празен шаблон"; box.onchange = function() { if (this.value != "-") { loadPage(this.value); this.selectedIndex = 0; } return; }; if ( appendOptions(box, content) > 1 ) { parent.appendChild(box); } } function appendOptions(box, opts) { var count = 0; for (var i in opts) { if (opts[i] == "") { continue; // skip emtpy entries } var child = typeof(opts[i]) == "object" ? newOptgroup(i, opts[i]) : newOption(opts[i], i); box.appendChild(child); count++; } return count; } function newOptgroup(label, data) { var g = document.createElement("optgroup"); g.label = label; for (var i in data) { g.appendChild( newOption(data[i], i) ); } return g; } function newOption(val, text) { var o = document.createElement("option"); o.value = val; o.appendChild( document.createTextNode(text) ); return o; } /* * * * * * * * * * Ajax functions * * * * * * * * * */ var prevReq; var pageUrl = wgScript + "?title=$1&action=raw&templates=expand"; var pageToFetch = ""; function loadPage(page) { prevReq = sajax_init_object(); if( !prevReq ) return false; pageToFetch = page; var getUrl = pageUrl.replace(/\$1/, encodeURI(page)); //alert("Страница: "+page+"\nАдрес: "+getUrl); showLoadIndicator(); prevReq.onreadystatechange = insertIntoWikiText; prevReq.open("GET", getUrl, true); prevReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); prevReq.send(null); return true; } function insertIntoWikiText() { if( prevReq.readyState != 4 ) { return; } hideLoadIndicator(); if ( prevReq.status != 200 ) { window.alert("Неуспешна връзка: " + prevReq.status + " “" + prevReq.statusText + "”\nСтраница: "+ pageToFetch); return; } // изтриване на текст, отбелязан за невмъкване + <pre> и <nowiki> var re = /<!--noinclude-->.*<!--\/noinclude-->|<\/?pre>|<\/?nowiki>/g; var content = prevReq.responseText.replace(re, ""); // replace escaped tags var specials = ["pre", "nowiki"]; for (var i in specials) { re = new RegExp("\\[(\/?)"+ specials[i] +"\\]", "g"); content = content.replace(re, "<$1"+ specials[i] +">"); } // split at caret’s position var parts = content.split(">>|<<"); var left = parts[0]; delete(parts[0]); var right = parts.join(""); insertTags(left, right, ""); } var loadIndicator; function showLoadIndicator() { if ( typeof(loadIndicator) != "undefined" ) { loadIndicator.style.display = "block"; return; } var content = document.getElementById("content"); if ( !content ) { // no "content" element return; } loadIndicator = document.createElement("div"); loadIndicator.id = "loadIndicator"; loadIndicator.appendChild( document.createTextNode("Шаблонът се зарежда…") ); content.appendChild(loadIndicator); } function hideLoadIndicator() { loadIndicator.style.display = "none"; } /* * * * * * * * * * Miscelaneous functions * * * * * * * * * */ function filterArrByKey(arr, keys) { var narr = new Array(); for (var i in keys) { var key = keys[i]; if ( typeof( arr[key] ) != "undefined" ) { narr[key] = arr[key]; } } return narr; } /** Import module ************************************************************* * * Description: Includes a raw wiki page as javascript or CSS, * used for including user made modules. * Maintainers: [[w:en:User:AzaToth]] */ var importedScripts = {}; // object keeping track of included scripts, so a script ain't included twice function importScript( page ) { if( importedScripts[page] ) { return; } importedScripts[page] = true; var url = wgScriptPath + '/index.php?title=' + encodeURIComponent( page.replace( / /g, '_' ) ) + '&action=raw&ctype=text/javascript'; var scriptElem = document.createElement( 'script' ); scriptElem.setAttribute( 'src' , url ); scriptElem.setAttribute( 'type' , 'text/javascript' ); document.getElementsByTagName( 'head' )[0].appendChild( scriptElem ); } function importStylesheet( page ) { var sheet = '@import "' + wgScriptPath + '/index.php?title=' + encodeURIComponent( page.replace( / /g, '_' ) ) + '&action=raw&ctype=text/css";'; var styleElem = document.createElement( 'style' ); styleElem.setAttribute( 'type' , 'text/css' ); styleElem.appendChild( document.createTextNode( sheet ) ); document.getElementsByTagName( 'head' )[0].appendChild( styleElem ); }