From 0e8b7f021f27e524f8c0b25dca600c00fd2c2468 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C3=A9cureuil?= Date: Wed, 19 Apr 2017 00:18:12 +0200 Subject: Add mw 1.23.15 themes --- CologneBlue.php | 573 +++++++++++++ Modern.php | 169 ++++ MonoBook.php | 332 ++++++++ Vector.php | 463 ++++++++++ cologneblue/print.css | 6 + cologneblue/screen.css | 277 ++++++ common/IEFixes.js | 121 +++ common/ajax.js | 193 +++++ common/commonContent.css | 151 ++++ common/commonElements.css | 235 ++++++ common/commonInterface.css | 68 ++ common/commonPrint.css | 401 +++++++++ common/config-cc.css | 57 ++ common/config.css | 143 ++++ common/config.js | 108 +++ common/feed.css | 95 +++ common/images/Arr_.png | Bin 0 -> 96 bytes common/images/Arr_d.png | Bin 0 -> 205 bytes common/images/Arr_l.png | Bin 0 -> 205 bytes common/images/Arr_r.png | Bin 0 -> 206 bytes common/images/Arr_u.png | Bin 0 -> 207 bytes common/images/Checker-16x16.png | Bin 0 -> 81 bytes common/images/Zoom_sans.gif | Bin 0 -> 901 bytes common/images/add.png | Bin 0 -> 526 bytes common/images/ajax-loader.gif | Bin 0 -> 1788 bytes common/images/ar/button_bold.png | Bin 0 -> 533 bytes common/images/ar/button_headline.png | Bin 0 -> 484 bytes common/images/ar/button_italic.png | Bin 0 -> 532 bytes common/images/ar/button_link.png | Bin 0 -> 557 bytes common/images/ar/button_nowiki.png | Bin 0 -> 874 bytes common/images/arrow_disabled_first_25.png | Bin 0 -> 318 bytes common/images/arrow_disabled_last_25.png | Bin 0 -> 323 bytes common/images/arrow_disabled_left_25.png | Bin 0 -> 301 bytes common/images/arrow_disabled_right_25.png | Bin 0 -> 307 bytes common/images/arrow_first_25.png | Bin 0 -> 352 bytes common/images/arrow_last_25.png | Bin 0 -> 342 bytes common/images/arrow_left_25.png | Bin 0 -> 330 bytes common/images/arrow_right_25.png | Bin 0 -> 337 bytes common/images/be-tarask/button_bold.png | Bin 0 -> 550 bytes common/images/be-tarask/button_italic.png | Bin 0 -> 539 bytes common/images/be-tarask/button_link.png | Bin 0 -> 419 bytes common/images/bullet.gif | Bin 0 -> 50 bytes common/images/button_bold.png | Bin 0 -> 250 bytes common/images/button_extlink.png | Bin 0 -> 435 bytes common/images/button_headline.png | Bin 0 -> 440 bytes common/images/button_hr.png | Bin 0 -> 200 bytes common/images/button_image.png | Bin 0 -> 483 bytes common/images/button_italic.png | Bin 0 -> 250 bytes common/images/button_link.png | Bin 0 -> 280 bytes common/images/button_media.png | Bin 0 -> 728 bytes common/images/button_nowiki.png | Bin 0 -> 322 bytes common/images/button_sig.png | Bin 0 -> 920 bytes common/images/button_template.png | Bin 0 -> 178 bytes common/images/cc-0.png | Bin 0 -> 969 bytes common/images/cc-by-nc-sa.png | Bin 0 -> 1530 bytes common/images/cc-by-sa.png | Bin 0 -> 1377 bytes common/images/cc-by.png | Bin 0 -> 1165 bytes common/images/closewindow.png | Bin 0 -> 108 bytes common/images/closewindow19x19.png | Bin 0 -> 833 bytes common/images/critical-32.png | Bin 0 -> 1758 bytes common/images/cyrl/LICENSE | 17 + common/images/cyrl/button_bold.png | Bin 0 -> 254 bytes common/images/cyrl/button_italic.png | Bin 0 -> 423 bytes common/images/cyrl/button_link.png | Bin 0 -> 278 bytes common/images/de/button_bold.png | Bin 0 -> 255 bytes common/images/de/button_italic.png | Bin 0 -> 260 bytes common/images/diffunderline.gif | Bin 0 -> 52 bytes common/images/download-32.png | Bin 0 -> 1759 bytes common/images/fa/button_bold.png | Bin 0 -> 459 bytes common/images/fa/button_headline.png | Bin 0 -> 392 bytes common/images/fa/button_italic.png | Bin 0 -> 512 bytes common/images/fa/button_link.png | Bin 0 -> 485 bytes common/images/fa/button_nowiki.png | Bin 0 -> 874 bytes common/images/feed-icon.png | Bin 0 -> 542 bytes common/images/feed-icon.svg | 1 + common/images/gnu-fdl.png | Bin 0 -> 1573 bytes common/images/help-question-hover.gif | Bin 0 -> 1246 bytes common/images/help-question.gif | Bin 0 -> 126 bytes common/images/icons/COPYING | 43 + common/images/icons/fileicon-c.png | Bin 0 -> 1753 bytes common/images/icons/fileicon-cpp.png | Bin 0 -> 1382 bytes common/images/icons/fileicon-deb.png | Bin 0 -> 4527 bytes common/images/icons/fileicon-djvu.png | Bin 0 -> 10436 bytes common/images/icons/fileicon-djvu.xcf | Bin 0 -> 83394 bytes common/images/icons/fileicon-dvi.png | Bin 0 -> 12476 bytes common/images/icons/fileicon-exe.png | Bin 0 -> 5469 bytes common/images/icons/fileicon-h.png | Bin 0 -> 803 bytes common/images/icons/fileicon-html.png | Bin 0 -> 7171 bytes common/images/icons/fileicon-iso.png | Bin 0 -> 6105 bytes common/images/icons/fileicon-java.png | Bin 0 -> 5706 bytes common/images/icons/fileicon-mid.png | Bin 0 -> 6316 bytes common/images/icons/fileicon-mov.png | Bin 0 -> 7579 bytes common/images/icons/fileicon-o.png | Bin 0 -> 1742 bytes common/images/icons/fileicon-ogg.png | Bin 0 -> 3151 bytes common/images/icons/fileicon-ogg.xcf | Bin 0 -> 40236 bytes common/images/icons/fileicon-pdf.png | Bin 0 -> 4710 bytes common/images/icons/fileicon-ps.png | Bin 0 -> 2786 bytes common/images/icons/fileicon-psd.png | Bin 0 -> 7756 bytes common/images/icons/fileicon-rm.png | Bin 0 -> 2519 bytes common/images/icons/fileicon-rpm.png | Bin 0 -> 3784 bytes common/images/icons/fileicon-svg.png | Bin 0 -> 4793 bytes common/images/icons/fileicon-tar.png | Bin 0 -> 6025 bytes common/images/icons/fileicon-tex.png | Bin 0 -> 3738 bytes common/images/icons/fileicon-ttf.png | Bin 0 -> 3193 bytes common/images/icons/fileicon-txt.png | Bin 0 -> 3388 bytes common/images/icons/fileicon.png | Bin 0 -> 789 bytes common/images/info-32.png | Bin 0 -> 1892 bytes common/images/ksh/LICENSE | 7 + common/images/ksh/button_S_italic.png | Bin 0 -> 368 bytes common/images/link_icon.gif | Bin 0 -> 342 bytes common/images/magnify-clip-rtl.png | Bin 0 -> 149 bytes common/images/magnify-clip.png | Bin 0 -> 204 bytes common/images/mediawiki.png | Bin 0 -> 22589 bytes common/images/nextredirectltr.png | Bin 0 -> 121 bytes common/images/nextredirectrtl.png | Bin 0 -> 121 bytes common/images/poweredby_mediawiki_88x31.png | Bin 0 -> 3525 bytes common/images/public-domain.png | Bin 0 -> 2017 bytes common/images/question-small.png | Bin 0 -> 316 bytes common/images/question.svg | 1 + common/images/redirectltr.png | Bin 0 -> 128 bytes common/images/redirectrtl.png | Bin 0 -> 132 bytes common/images/remove.png | Bin 0 -> 555 bytes common/images/spinner.gif | Bin 0 -> 1819 bytes common/images/tick-32.png | Bin 0 -> 1103 bytes common/images/tipsy-arrow.gif | Bin 0 -> 205 bytes common/images/tooltip_icon.png | Bin 0 -> 352 bytes common/images/warning-32.png | Bin 0 -> 1299 bytes common/images/wiki.png | Bin 0 -> 24358 bytes common/oldshared.css | 469 +++++++++++ common/protect.js | 387 +++++++++ common/shared.css | 1216 +++++++++++++++++++++++++++ common/upload.js | 355 ++++++++ common/wikibits.js | 243 ++++++ modern/audio.png | Bin 0 -> 186 bytes modern/bullet.gif | Bin 0 -> 50 bytes modern/discussionitem_icon.gif | Bin 0 -> 549 bytes modern/document.png | Bin 0 -> 152 bytes modern/external.png | Bin 0 -> 141 bytes modern/file_icon.gif | Bin 0 -> 323 bytes modern/footer-grad.png | Bin 0 -> 81 bytes modern/link_icon.gif | Bin 0 -> 342 bytes modern/lock_icon.gif | Bin 0 -> 321 bytes modern/mail_icon.gif | Bin 0 -> 321 bytes modern/main.css | 912 ++++++++++++++++++++ modern/news_icon.png | Bin 0 -> 284 bytes modern/print.css | 10 + modern/video.png | Bin 0 -> 113 bytes monobook/IE60Fixes.css | 112 +++ monobook/IE70Fixes.css | 92 ++ monobook/audio.png | Bin 0 -> 186 bytes monobook/bullet.gif | Bin 0 -> 50 bytes monobook/discussionitem_icon.gif | Bin 0 -> 549 bytes monobook/document.png | Bin 0 -> 152 bytes monobook/external-ltr.png | Bin 0 -> 141 bytes monobook/external-rtl.png | Bin 0 -> 141 bytes monobook/file_icon.gif | Bin 0 -> 323 bytes monobook/headbg.jpg | Bin 0 -> 7881 bytes monobook/link_icon.gif | Bin 0 -> 342 bytes monobook/lock_icon.gif | Bin 0 -> 918 bytes monobook/magnify-clip.png | Bin 0 -> 170 bytes monobook/mail_icon.gif | Bin 0 -> 321 bytes monobook/main.css | 835 ++++++++++++++++++ monobook/news_icon.png | Bin 0 -> 284 bytes monobook/required.gif | Bin 0 -> 47 bytes monobook/user.gif | Bin 0 -> 325 bytes monobook/video.png | Bin 0 -> 116 bytes monobook/wiki-indexed.png | Bin 0 -> 8007 bytes monobook/wiki.png | Bin 0 -> 22589 bytes vector/collapsibleNav.js | 152 ++++ vector/collapsibleTabs.js | 208 +++++ vector/components/animations.less | 28 + vector/components/collapsibleNav.less | 91 ++ vector/components/common.less | 141 ++++ vector/components/externalLinks.less | 10 + vector/components/footer.less | 57 ++ vector/components/navigation.less | 134 +++ vector/components/notifications.less | 20 + vector/components/personalMenu.less | 41 + vector/components/search.less | 113 +++ vector/components/tabs.less | 274 ++++++ vector/components/watchstar.less | 46 + vector/csshover.htc | 284 +++++++ vector/csshover.min.htc | 12 + vector/images/arrow-collapsed-ltr.png | Bin 0 -> 143 bytes vector/images/arrow-collapsed-ltr.svg | 1 + vector/images/arrow-collapsed-rtl.png | Bin 0 -> 145 bytes vector/images/arrow-collapsed-rtl.svg | 1 + vector/images/arrow-down-focus-icon.png | Bin 0 -> 135 bytes vector/images/arrow-down-focus-icon.svg | 1 + vector/images/arrow-down-icon.png | Bin 0 -> 135 bytes vector/images/arrow-down-icon.svg | 1 + vector/images/arrow-expanded.png | Bin 0 -> 145 bytes vector/images/arrow-expanded.svg | 1 + vector/images/bullet-icon.png | Bin 0 -> 107 bytes vector/images/external-link-ltr-icon.png | Bin 0 -> 141 bytes vector/images/external-link-ltr-icon.svg | 1 + vector/images/external-link-rtl-icon.png | Bin 0 -> 141 bytes vector/images/external-link-rtl-icon.svg | 1 + vector/images/link-icon.png | Bin 0 -> 359 bytes vector/images/magnify-clip.png | Bin 0 -> 204 bytes vector/images/page-fade.png | Bin 0 -> 115 bytes vector/images/portal-break-ltr.png | Bin 0 -> 168 bytes vector/images/portal-break-rtl.png | Bin 0 -> 161 bytes vector/images/portal-break.png | Bin 0 -> 96 bytes vector/images/preferences/break.png | Bin 0 -> 103 bytes vector/images/preferences/fade.png | Bin 0 -> 85 bytes vector/images/search-fade.png | Bin 0 -> 94 bytes vector/images/search-ltr.png | Bin 0 -> 214 bytes vector/images/search-ltr.svg | 1 + vector/images/search-rtl.png | Bin 0 -> 214 bytes vector/images/search-rtl.svg | 1 + vector/images/tab-break.png | Bin 0 -> 125 bytes vector/images/tab-current-fade.png | Bin 0 -> 70 bytes vector/images/tab-normal-fade.png | Bin 0 -> 117 bytes vector/images/unwatch-icon-hl.png | Bin 0 -> 716 bytes vector/images/unwatch-icon-hl.svg | 1 + vector/images/unwatch-icon.png | Bin 0 -> 658 bytes vector/images/unwatch-icon.svg | 1 + vector/images/user-icon.png | Bin 0 -> 568 bytes vector/images/user-icon.svg | 1 + vector/images/watch-icon-hl.png | Bin 0 -> 640 bytes vector/images/watch-icon-hl.svg | 1 + vector/images/watch-icon-loading.png | Bin 0 -> 485 bytes vector/images/watch-icon-loading.svg | 1 + vector/images/watch-icon.png | Bin 0 -> 642 bytes vector/images/watch-icon.svg | 1 + vector/screen-hd.less | 30 + vector/screen.less | 10 + vector/special.less | 7 + vector/special.preferences.less | 114 +++ vector/variables.less | 43 + vector/vector.js | 55 ++ 232 files changed, 9977 insertions(+) create mode 100644 CologneBlue.php create mode 100644 Modern.php create mode 100644 MonoBook.php create mode 100644 Vector.php create mode 100644 cologneblue/print.css create mode 100644 cologneblue/screen.css create mode 100644 common/IEFixes.js create mode 100644 common/ajax.js create mode 100644 common/commonContent.css create mode 100644 common/commonElements.css create mode 100644 common/commonInterface.css create mode 100644 common/commonPrint.css create mode 100644 common/config-cc.css create mode 100644 common/config.css create mode 100644 common/config.js create mode 100644 common/feed.css create mode 100644 common/images/Arr_.png create mode 100644 common/images/Arr_d.png create mode 100644 common/images/Arr_l.png create mode 100644 common/images/Arr_r.png create mode 100644 common/images/Arr_u.png create mode 100644 common/images/Checker-16x16.png create mode 100644 common/images/Zoom_sans.gif create mode 100644 common/images/add.png create mode 100644 common/images/ajax-loader.gif create mode 100644 common/images/ar/button_bold.png create mode 100644 common/images/ar/button_headline.png create mode 100644 common/images/ar/button_italic.png create mode 100644 common/images/ar/button_link.png create mode 100644 common/images/ar/button_nowiki.png create mode 100644 common/images/arrow_disabled_first_25.png create mode 100644 common/images/arrow_disabled_last_25.png create mode 100644 common/images/arrow_disabled_left_25.png create mode 100644 common/images/arrow_disabled_right_25.png create mode 100644 common/images/arrow_first_25.png create mode 100644 common/images/arrow_last_25.png create mode 100644 common/images/arrow_left_25.png create mode 100644 common/images/arrow_right_25.png create mode 100644 common/images/be-tarask/button_bold.png create mode 100644 common/images/be-tarask/button_italic.png create mode 100644 common/images/be-tarask/button_link.png create mode 100644 common/images/bullet.gif create mode 100644 common/images/button_bold.png create mode 100644 common/images/button_extlink.png create mode 100644 common/images/button_headline.png create mode 100644 common/images/button_hr.png create mode 100644 common/images/button_image.png create mode 100644 common/images/button_italic.png create mode 100644 common/images/button_link.png create mode 100644 common/images/button_media.png create mode 100644 common/images/button_nowiki.png create mode 100644 common/images/button_sig.png create mode 100644 common/images/button_template.png create mode 100644 common/images/cc-0.png create mode 100644 common/images/cc-by-nc-sa.png create mode 100644 common/images/cc-by-sa.png create mode 100644 common/images/cc-by.png create mode 100644 common/images/closewindow.png create mode 100644 common/images/closewindow19x19.png create mode 100644 common/images/critical-32.png create mode 100644 common/images/cyrl/LICENSE create mode 100644 common/images/cyrl/button_bold.png create mode 100644 common/images/cyrl/button_italic.png create mode 100644 common/images/cyrl/button_link.png create mode 100644 common/images/de/button_bold.png create mode 100644 common/images/de/button_italic.png create mode 100644 common/images/diffunderline.gif create mode 100644 common/images/download-32.png create mode 100644 common/images/fa/button_bold.png create mode 100644 common/images/fa/button_headline.png create mode 100644 common/images/fa/button_italic.png create mode 100644 common/images/fa/button_link.png create mode 100644 common/images/fa/button_nowiki.png create mode 100644 common/images/feed-icon.png create mode 100644 common/images/feed-icon.svg create mode 100644 common/images/gnu-fdl.png create mode 100644 common/images/help-question-hover.gif create mode 100644 common/images/help-question.gif create mode 100644 common/images/icons/COPYING create mode 100644 common/images/icons/fileicon-c.png create mode 100644 common/images/icons/fileicon-cpp.png create mode 100644 common/images/icons/fileicon-deb.png create mode 100644 common/images/icons/fileicon-djvu.png create mode 100644 common/images/icons/fileicon-djvu.xcf create mode 100644 common/images/icons/fileicon-dvi.png create mode 100644 common/images/icons/fileicon-exe.png create mode 100644 common/images/icons/fileicon-h.png create mode 100644 common/images/icons/fileicon-html.png create mode 100644 common/images/icons/fileicon-iso.png create mode 100644 common/images/icons/fileicon-java.png create mode 100644 common/images/icons/fileicon-mid.png create mode 100644 common/images/icons/fileicon-mov.png create mode 100644 common/images/icons/fileicon-o.png create mode 100644 common/images/icons/fileicon-ogg.png create mode 100644 common/images/icons/fileicon-ogg.xcf create mode 100644 common/images/icons/fileicon-pdf.png create mode 100644 common/images/icons/fileicon-ps.png create mode 100644 common/images/icons/fileicon-psd.png create mode 100644 common/images/icons/fileicon-rm.png create mode 100644 common/images/icons/fileicon-rpm.png create mode 100644 common/images/icons/fileicon-svg.png create mode 100644 common/images/icons/fileicon-tar.png create mode 100644 common/images/icons/fileicon-tex.png create mode 100644 common/images/icons/fileicon-ttf.png create mode 100644 common/images/icons/fileicon-txt.png create mode 100644 common/images/icons/fileicon.png create mode 100644 common/images/info-32.png create mode 100644 common/images/ksh/LICENSE create mode 100644 common/images/ksh/button_S_italic.png create mode 100644 common/images/link_icon.gif create mode 100644 common/images/magnify-clip-rtl.png create mode 100644 common/images/magnify-clip.png create mode 100644 common/images/mediawiki.png create mode 100644 common/images/nextredirectltr.png create mode 100644 common/images/nextredirectrtl.png create mode 100644 common/images/poweredby_mediawiki_88x31.png create mode 100644 common/images/public-domain.png create mode 100644 common/images/question-small.png create mode 100644 common/images/question.svg create mode 100644 common/images/redirectltr.png create mode 100644 common/images/redirectrtl.png create mode 100644 common/images/remove.png create mode 100644 common/images/spinner.gif create mode 100644 common/images/tick-32.png create mode 100644 common/images/tipsy-arrow.gif create mode 100644 common/images/tooltip_icon.png create mode 100644 common/images/warning-32.png create mode 100644 common/images/wiki.png create mode 100644 common/oldshared.css create mode 100644 common/protect.js create mode 100644 common/shared.css create mode 100644 common/upload.js create mode 100644 common/wikibits.js create mode 100644 modern/audio.png create mode 100644 modern/bullet.gif create mode 100644 modern/discussionitem_icon.gif create mode 100644 modern/document.png create mode 100644 modern/external.png create mode 100644 modern/file_icon.gif create mode 100644 modern/footer-grad.png create mode 100644 modern/link_icon.gif create mode 100644 modern/lock_icon.gif create mode 100644 modern/mail_icon.gif create mode 100644 modern/main.css create mode 100644 modern/news_icon.png create mode 100644 modern/print.css create mode 100644 modern/video.png create mode 100644 monobook/IE60Fixes.css create mode 100644 monobook/IE70Fixes.css create mode 100644 monobook/audio.png create mode 100644 monobook/bullet.gif create mode 100644 monobook/discussionitem_icon.gif create mode 100644 monobook/document.png create mode 100644 monobook/external-ltr.png create mode 100644 monobook/external-rtl.png create mode 100644 monobook/file_icon.gif create mode 100644 monobook/headbg.jpg create mode 100644 monobook/link_icon.gif create mode 100644 monobook/lock_icon.gif create mode 100644 monobook/magnify-clip.png create mode 100644 monobook/mail_icon.gif create mode 100644 monobook/main.css create mode 100644 monobook/news_icon.png create mode 100644 monobook/required.gif create mode 100644 monobook/user.gif create mode 100644 monobook/video.png create mode 100644 monobook/wiki-indexed.png create mode 100644 monobook/wiki.png create mode 100644 vector/collapsibleNav.js create mode 100644 vector/collapsibleTabs.js create mode 100644 vector/components/animations.less create mode 100644 vector/components/collapsibleNav.less create mode 100644 vector/components/common.less create mode 100644 vector/components/externalLinks.less create mode 100644 vector/components/footer.less create mode 100644 vector/components/navigation.less create mode 100644 vector/components/notifications.less create mode 100644 vector/components/personalMenu.less create mode 100644 vector/components/search.less create mode 100644 vector/components/tabs.less create mode 100644 vector/components/watchstar.less create mode 100644 vector/csshover.htc create mode 100644 vector/csshover.min.htc create mode 100644 vector/images/arrow-collapsed-ltr.png create mode 100644 vector/images/arrow-collapsed-ltr.svg create mode 100644 vector/images/arrow-collapsed-rtl.png create mode 100644 vector/images/arrow-collapsed-rtl.svg create mode 100644 vector/images/arrow-down-focus-icon.png create mode 100644 vector/images/arrow-down-focus-icon.svg create mode 100644 vector/images/arrow-down-icon.png create mode 100644 vector/images/arrow-down-icon.svg create mode 100644 vector/images/arrow-expanded.png create mode 100644 vector/images/arrow-expanded.svg create mode 100644 vector/images/bullet-icon.png create mode 100644 vector/images/external-link-ltr-icon.png create mode 100644 vector/images/external-link-ltr-icon.svg create mode 100644 vector/images/external-link-rtl-icon.png create mode 100644 vector/images/external-link-rtl-icon.svg create mode 100644 vector/images/link-icon.png create mode 100644 vector/images/magnify-clip.png create mode 100644 vector/images/page-fade.png create mode 100644 vector/images/portal-break-ltr.png create mode 100644 vector/images/portal-break-rtl.png create mode 100644 vector/images/portal-break.png create mode 100644 vector/images/preferences/break.png create mode 100644 vector/images/preferences/fade.png create mode 100644 vector/images/search-fade.png create mode 100644 vector/images/search-ltr.png create mode 100644 vector/images/search-ltr.svg create mode 100644 vector/images/search-rtl.png create mode 100644 vector/images/search-rtl.svg create mode 100644 vector/images/tab-break.png create mode 100644 vector/images/tab-current-fade.png create mode 100644 vector/images/tab-normal-fade.png create mode 100644 vector/images/unwatch-icon-hl.png create mode 100644 vector/images/unwatch-icon-hl.svg create mode 100644 vector/images/unwatch-icon.png create mode 100644 vector/images/unwatch-icon.svg create mode 100644 vector/images/user-icon.png create mode 100644 vector/images/user-icon.svg create mode 100644 vector/images/watch-icon-hl.png create mode 100644 vector/images/watch-icon-hl.svg create mode 100644 vector/images/watch-icon-loading.png create mode 100644 vector/images/watch-icon-loading.svg create mode 100644 vector/images/watch-icon.png create mode 100644 vector/images/watch-icon.svg create mode 100644 vector/screen-hd.less create mode 100644 vector/screen.less create mode 100644 vector/special.less create mode 100644 vector/special.preferences.less create mode 100644 vector/variables.less create mode 100644 vector/vector.js diff --git a/CologneBlue.php b/CologneBlue.php new file mode 100644 index 0000000..7c2860e --- /dev/null +++ b/CologneBlue.php @@ -0,0 +1,573 @@ +addModuleStyles( 'mediawiki.legacy.oldshared' ); + $out->addModuleStyles( 'skins.cologneblue' ); + } + + /** + * Override langlink formatting behavior not to uppercase the language names. + * See otherLanguages() in CologneBlueTemplate. + */ + function formatLanguageName( $name ) { + return $name; + } +} + +class CologneBlueTemplate extends BaseTemplate { + function execute() { + // Suppress warnings to prevent notices about missing indexes in $this->data + wfSuppressWarnings(); + $this->html( 'headelement' ); + echo $this->beforeContent(); + $this->html( 'bodytext' ); + echo "\n"; + echo $this->afterContent(); + $this->html( 'dataAfterContent' ); + $this->printTrail(); + echo "\n"; + wfRestoreWarnings(); + } + + /** + * Language/charset variant links for classic-style skins + * @return string + */ + function variantLinks() { + $s = array(); + + $variants = $this->data['content_navigation']['variants']; + + foreach ( $variants as $key => $link ) { + $s[] = $this->makeListItem( $key, $link, array( 'tag' => 'span' ) ); + } + + return $this->getSkin()->getLanguage()->pipeList( $s ); + } + + function otherLanguages() { + global $wgHideInterlanguageLinks; + if ( $wgHideInterlanguageLinks ) { + return ""; + } + + $html = ''; + + // We override SkinTemplate->formatLanguageName() in SkinCologneBlue + // not to capitalize the language names. + $language_urls = $this->data['language_urls']; + if ( !empty( $language_urls ) ) { + $s = array(); + foreach ( $language_urls as $key => $data ) { + $s[] = $this->makeListItem( $key, $data, array( 'tag' => 'span' ) ); + } + + $html = wfMessage( 'otherlanguages' )->text() + . wfMessage( 'colon-separator' )->text() + . $this->getSkin()->getLanguage()->pipeList( $s ); + } + + $html .= $this->renderAfterPortlet( 'lang' ); + + return $html; + } + + /** + * @param string $name + */ + protected function renderAfterPortlet( $name ) { + $content = ''; + wfRunHooks( 'BaseTemplateAfterPortlet', array( $this, $name, &$content ) ); + + $html = $content !== '' ? "
$content
" : ''; + + return $html; + } + + function pageTitleLinks() { + $s = array(); + $footlinks = $this->getFooterLinks(); + + foreach ( $footlinks['places'] as $item ) { + $s[] = $this->data[$item]; + } + + return $this->getSkin()->getLanguage()->pipeList( $s ); + } + + /** + * Used in bottomLinks() to eliminate repetitive code. + * + * @param $key string Key to be passed to makeListItem() + * @param $navlink array Navlink suitable for processNavlinkForDocument() + * @param $message string Key of the message to use in place of standard text + * + * @return string + */ + function processBottomLink( $key, $navlink, $message = null ) { + if ( !$navlink ) { + // Empty navlinks might be passed. + return null; + } + + if ( $message ) { + $navlink['text'] = wfMessage( $message )->escaped(); + } + + return $this->makeListItem( $key, $this->processNavlinkForDocument( $navlink ), array( 'tag' => 'span' ) ); + } + + function bottomLinks() { + $toolbox = $this->getToolbox(); + $content_nav = $this->data['content_navigation']; + + $lines = array(); + + if ( $this->getSkin()->getOutput()->isArticleRelated() ) { + // First row. Regular actions. + $element = array(); + + $editLinkMessage = $this->getSkin()->getTitle()->exists() ? 'editthispage' : 'create-this-page'; + $element[] = $this->processBottomLink( 'edit', $content_nav['views']['edit'], $editLinkMessage ); + $element[] = $this->processBottomLink( 'viewsource', $content_nav['views']['viewsource'], 'viewsource' ); + + $element[] = $this->processBottomLink( 'watch', $content_nav['actions']['watch'], 'watchthispage' ); + $element[] = $this->processBottomLink( 'unwatch', $content_nav['actions']['unwatch'], 'unwatchthispage' ); + + $element[] = $this->talkLink(); + + $element[] = $this->processBottomLink( 'history', $content_nav['views']['history'], 'history' ); + $element[] = $this->processBottomLink( 'info', $toolbox['info'] ); + $element[] = $this->processBottomLink( 'whatlinkshere', $toolbox['whatlinkshere'] ); + $element[] = $this->processBottomLink( 'recentchangeslinked', $toolbox['recentchangeslinked'] ); + + $element[] = $this->processBottomLink( 'contributions', $toolbox['contributions'] ); + $element[] = $this->processBottomLink( 'emailuser', $toolbox['emailuser'] ); + + $lines[] = $this->getSkin()->getLanguage()->pipeList( array_filter( $element ) ); + + // Second row. Privileged actions. + $element = array(); + + $element[] = $this->processBottomLink( 'delete', $content_nav['actions']['delete'], 'deletethispage' ); + $element[] = $this->processBottomLink( 'undelete', $content_nav['actions']['undelete'], 'undeletethispage' ); + + $element[] = $this->processBottomLink( 'protect', $content_nav['actions']['protect'], 'protectthispage' ); + $element[] = $this->processBottomLink( 'unprotect', $content_nav['actions']['unprotect'], 'unprotectthispage' ); + + $element[] = $this->processBottomLink( 'move', $content_nav['actions']['move'], 'movethispage' ); + + $lines[] = $this->getSkin()->getLanguage()->pipeList( array_filter( $element ) ); + + // Third row. Language links. + $lines[] = $this->otherLanguages(); + } + + return implode( array_filter( $lines ), "
\n" ) . "
\n"; + } + + function talkLink() { + $title = $this->getSkin()->getTitle(); + + if ( $title->getNamespace() == NS_SPECIAL ) { + // No discussion links for special pages + return ""; + } + + $companionTitle = $title->isTalkPage() ? $title->getSubjectPage() : $title->getTalkPage(); + $companionNamespace = $companionTitle->getNamespace(); + + // TODO these messages are only be used by CologneBlue, + // kill and replace with something more sensibly named? + $nsToMessage = array( + NS_MAIN => 'articlepage', + NS_USER => 'userpage', + NS_PROJECT => 'projectpage', + NS_FILE => 'imagepage', + NS_MEDIAWIKI => 'mediawikipage', + NS_TEMPLATE => 'templatepage', + NS_HELP => 'viewhelppage', + NS_CATEGORY => 'categorypage', + NS_FILE => 'imagepage', + ); + + // Find out the message to use for link text. Use either the array above or, + // for non-talk pages, a generic "discuss this" message. + // Default is the same as for main namespace. + if ( isset( $nsToMessage[$companionNamespace] ) ) { + $message = $nsToMessage[$companionNamespace]; + } else { + $message = $companionTitle->isTalkPage() ? 'talkpage' : 'articlepage'; + } + + // Obviously this can't be reasonable and just return the key for talk namespace, only for content ones. + // Thus we have to mangle it in exactly the same way SkinTemplate does. (bug 40805) + $key = $companionTitle->getNamespaceKey( '' ); + if ( $companionTitle->isTalkPage() ) { + $key = ( $key == 'main' ? 'talk' : $key . "_talk" ); + } + + // Use the regular navigational link, but replace its text. Everything else stays unmodified. + $namespacesLinks = $this->data['content_navigation']['namespaces']; + return $this->processBottomLink( $message, $namespacesLinks[$key], $message ); + } + + /** + * Takes a navigational link generated by SkinTemplate in whichever way + * and mangles attributes unsuitable for repeated use. In particular, this modifies the ids + * and removes the accesskeys. This is necessary to be able to use the same navlink twice, + * e.g. in sidebar and in footer. + * + * @param $navlink array Navigational link generated by SkinTemplate + * @param $idPrefix mixed Prefix to add to id of this navlink. If false, id is removed entirely. Default is 'cb-'. + */ + function processNavlinkForDocument( $navlink, $idPrefix = 'cb-' ) { + if ( $navlink['id'] ) { + $navlink['single-id'] = $navlink['id']; // to allow for tooltip generation + $navlink['tooltiponly'] = true; // but no accesskeys + + // mangle or remove the id + if ( $idPrefix === false ) { + unset( $navlink['id'] ); + } else { + $navlink['id'] = $idPrefix . $navlink['id']; + } + } + + return $navlink; + } + + /** + * @return string + */ + function beforeContent() { + ob_start(); +?> +
+
+ +

escaped() ?>

+ +
+
+ getSkin()->getSiteNotice() ) { ?> +
getSkin()->getSiteNotice() ?>
+ +

data['title'] ?>

+ translator->translate( 'tagline' ) ) { ?> +

translator->translate( 'tagline' ) ) ?>

+ + getSkin()->getOutput()->getSubtitle() ) { ?> +

getSkin()->getOutput()->getSubtitle() ?>

+ + getSkin()->subPageSubtitle() ) { ?> +

getSkin()->subPageSubtitle() ?>

+ + +
+ +
+
+

escaped() ?>

+ + quickBar() ?> +
+getSkin()->mainPageLink(), + Linker::linkKnown( + Title::newFromText( wfMessage( 'aboutpage' )->inContentLanguage()->text() ), + wfMessage( 'about' )->text() + ), + Linker::makeExternalLink( + Skin::makeInternalOrExternalUrl( wfMessage( 'helppage' )->inContentLanguage()->text() ), + wfMessage( 'help' )->text(), + false + ), + Linker::linkKnown( + Title::newFromText( wfMessage( 'faqpage' )->inContentLanguage()->text() ), + wfMessage( 'faq' )->text() + ), + ); + + $personalUrls = $this->getPersonalTools(); + foreach ( array( 'logout', 'createaccount', 'login' ) as $key ) { + if ( $personalUrls[$key] ) { + $s[] = $this->makeListItem( $key, $personalUrls[$key], array( 'tag' => 'span' ) ); + } + } + + return $this->getSkin()->getLanguage()->pipeList( $s ); + } + + /** + * Adds CologneBlue-specific items to the sidebar: qbedit, qbpageoptions and qbmyoptions menus. + * + * @param $bar sidebar data + * @return array modified sidebar data + */ + function sidebarAdditions( $bar ) { + // "This page" and "Edit" menus + // We need to do some massaging here... we reuse all of the items, except for $...['views']['view'], + // as $...['namespaces']['main'] and $...['namespaces']['talk'] together serve the same purpose. + // We also don't use $...['variants'], these are displayed in the top menu. + $content_navigation = $this->data['content_navigation']; + $qbpageoptions = array_merge( + $content_navigation['namespaces'], + array( + 'history' => $content_navigation['views']['history'], + 'watch' => $content_navigation['actions']['watch'], + 'unwatch' => $content_navigation['actions']['unwatch'], + ) + ); + $content_navigation['actions']['watch'] = null; + $content_navigation['actions']['unwatch'] = null; + $qbedit = array_merge( + array( + 'edit' => $content_navigation['views']['edit'], + 'addsection' => $content_navigation['views']['addsection'], + ), + $content_navigation['actions'] + ); + + // Personal tools ("My pages") + $qbmyoptions = $this->getPersonalTools(); + foreach ( array( 'logout', 'createaccount', 'login', ) as $key ) { + $qbmyoptions[$key] = null; + } + + // Use the closest reasonable name + $bar['cactions'] = $qbedit; + $bar['pageoptions'] = $qbpageoptions; // this is a non-standard portlet name, but nothing fits + $bar['personal'] = $qbmyoptions; + + return $bar; + } + + /** + * Compute the sidebar + * @access private + * + * @return string + */ + function quickBar() { + // Massage the sidebar. We want to: + // * place SEARCH at the beginning + // * add new portlets before TOOLBOX (or at the end, if it's missing) + // * remove LANGUAGES (langlinks are displayed elsewhere) + $orig_bar = $this->data['sidebar']; + $bar = array(); + $hasToolbox = false; + + // Always display search first + $bar['SEARCH'] = true; + // Copy everything except for langlinks, inserting new items before toolbox + foreach ( $orig_bar as $heading => $data ) { + if ( $heading == 'TOOLBOX' ) { + // Insert the stuff + $bar = $this->sidebarAdditions( $bar ); + $hasToolbox = true; + } + + if ( $heading != 'LANGUAGES' ) { + $bar[$heading] = $data; + } + } + // If toolbox is missing, add our items at the end + if ( !$hasToolbox ) { + $bar = $this->sidebarAdditions( $bar ); + } + + // Fill out special sidebar items with content + $orig_bar = $bar; + $bar = array(); + foreach ( $orig_bar as $heading => $data ) { + if ( $heading == 'SEARCH' ) { + $bar['search'] = $this->searchForm( 'sidebar' ); + } elseif ( $heading == 'TOOLBOX' ) { + $bar['tb'] = $this->getToolbox(); + } else { + $bar[$heading] = $data; + } + } + + // Output the sidebar + // CologneBlue uses custom messages for some portlets, but we should keep the ids for consistency + $idToMessage = array( + 'search' => 'qbfind', + 'navigation' => 'qbbrowse', + 'tb' => 'toolbox', + 'cactions' => 'qbedit', + 'personal' => 'qbmyoptions', + 'pageoptions' => 'qbpageoptions', + ); + + $s = "
\n"; + + foreach ( $bar as $heading => $data ) { + $portletId = Sanitizer::escapeId( "p-$heading" ); + $headingMsg = wfMessage( $idToMessage[$heading] ? $idToMessage[$heading] : $heading ); + $headingHTML = "

" . ( $headingMsg->exists() ? $headingMsg->escaped() : htmlspecialchars( $heading ) ) . "

"; + $listHTML = ""; + + if ( is_array( $data ) ) { + // $data is an array of links + foreach ( $data as $key => $link ) { + // Can be empty due to how the sidebar additions are done + if ( $link ) { + $listHTML .= $this->makeListItem( $key, $link ); + } + } + if ( $listHTML ) { + $listHTML = ""; + } + } else { + // $data is a HTML
\n"; + return $s; + } + + /** + * @param $label string + * @return string + */ + function searchForm( $which ) { + global $wgUseTwoButtonsSearchForm; + + $search = $this->getSkin()->getRequest()->getText( 'search' ); + $action = $this->data['searchaction']; + $s = "
"; + if ( $which == 'footer' ) { + $s .= wfMessage( 'qbfind' )->text() . ": "; + } + + $s .= $this->makeSearchInput( array( 'class' => 'mw-searchInput', 'type' => 'text', 'size' => '14' ) ); + $s .= ( $which == 'footer' ? " " : "
" ); + $s .= $this->makeSearchButton( 'go', array( 'class' => 'searchButton' ) ); + + if ( $wgUseTwoButtonsSearchForm ) { + $s .= $this->makeSearchButton( 'fulltext', array( 'class' => 'searchButton' ) ); + } else { + $s .= '
\n"; + } + + $s .= '
'; + + return $s; + } +} diff --git a/Modern.php b/Modern.php new file mode 100644 index 0000000..8d778cf --- /dev/null +++ b/Modern.php @@ -0,0 +1,169 @@ +addModuleStyles( 'skins.modern' ); + } +} + +/** + * @todo document + * @ingroup Skins + */ +class ModernTemplate extends MonoBookTemplate { + + /** + * Template filter callback for Modern skin. + * Takes an associative array of data set from a SkinTemplate-based + * class, and a wrapper for MediaWiki's localization database, and + * outputs a formatted page. + * + * @access private + */ + function execute() { + // Suppress warnings to prevent notices about missing indexes in $this->data + wfSuppressWarnings(); + + $this->html( 'headelement' ); +?> + + +

html( 'title' ) ?>

+ +
+
+ +cactions(); ?> + + +
+ +
+
+ +
msg( 'tagline' ) ?>
+ data['newtalk'] ) { + ?>
html( 'newtalk' ) ?>
+ + data['sitenotice'] ) { + ?>
html( 'sitenotice' ) ?>
+ +
+ +
html( 'userlangattributes' ) ?>>html( 'subtitle' ) ?>
+ + data['undelete'] ) { ?>
html( 'undelete' ) ?>
+
msg( 'jumpto' ) ?> msg( 'jumptonavigation' ) ?>msg( 'comma-separator' ) ?>msg( 'jumptosearch' ) ?>
+ + html( 'bodytext' ) ?> +
+ data['catlinks'] ) { $this->html( 'catlinks' ); } ?> + html( 'dataAfterContent' ) ?> +
+
+
+ +
html( "userlangattributes" ) ?>> +

msg( 'navigation-heading' ) ?>

+ + + renderPortals( $this->data['sidebar'] ); ?> + +
+ + +
+ +
+ + + + + + + + + printTrail(); ?> + +addModuleStyles( array( 'mediawiki.skinning.interface', 'skins.monobook.styles' ) ); + + // TODO: Migrate all of these + $out->addStyle( 'monobook/IE60Fixes.css', 'screen', 'IE 6' ); + $out->addStyle( 'monobook/IE70Fixes.css', 'screen', 'IE 7' ); + + } +} + +/** + * @todo document + * @ingroup Skins + */ +class MonoBookTemplate extends BaseTemplate { + + /** + * Template filter callback for MonoBook skin. + * Takes an associative array of data set from a SkinTemplate-based + * class, and a wrapper for MediaWiki's localization database, and + * outputs a formatted page. + * + * @access private + */ + function execute() { + // Suppress warnings to prevent notices about missing indexes in $this->data + wfSuppressWarnings(); + + $this->html( 'headelement' ); +?>
+
+ + data['sitenotice'] ) { ?>
html( 'sitenotice' ) ?>
+ +

html( 'title' ) ?>

+
+
msg( 'tagline' ) ?>
+
html( 'userlangattributes' ) ?>>html( 'subtitle' ) ?>
+data['undelete'] ) { ?> +
html( 'undelete' ) ?>
+data['newtalk'] ) { ?> +
html( 'newtalk' ) ?>
+ +
msg( 'jumpto' ) ?> msg( 'jumptonavigation' ) ?>msg( 'comma-separator' ) ?>msg( 'jumptosearch' ) ?>
+ + +html( 'bodytext' ) ?> + data['catlinks'] ) { $this->html( 'catlinks' ); } ?> + + data['dataAfterContent'] ) { $this->html( 'dataAfterContent' ); } ?> +
+
+
+
html( 'userlangattributes' ) ?>> +

msg( 'navigation-heading' ) ?>

+cactions(); ?> + + +renderPortals( $this->data['sidebar'] ); +?> +
+
+getFooterIcons( "icononly" ); + $validFooterLinks = $this->getFooterLinks( "flat" ); // Additional footer links + + if ( count( $validFooterIcons ) + count( $validFooterLinks ) > 0 ) { ?> + +printTrail(); + echo Html::closeElement( 'body' ); + echo Html::closeElement( 'html' ); + wfRestoreWarnings(); + } // end of execute() method + + /*************************************************************************************************/ + + /** + * @param $sidebar array + */ + protected function renderPortals( $sidebar ) { + if ( !isset( $sidebar['SEARCH'] ) ) { + $sidebar['SEARCH'] = true; + } + if ( !isset( $sidebar['TOOLBOX'] ) ) { + $sidebar['TOOLBOX'] = true; + } + if ( !isset( $sidebar['LANGUAGES'] ) ) { + $sidebar['LANGUAGES'] = true; + } + + foreach ( $sidebar as $boxName => $content ) { + if ( $content === false ) { + continue; + } + + if ( $boxName == 'SEARCH' ) { + $this->searchBox(); + } elseif ( $boxName == 'TOOLBOX' ) { + $this->toolbox(); + } elseif ( $boxName == 'LANGUAGES' ) { + $this->languageBox(); + } else { + $this->customBox( $boxName, $content ); + } + } + } + + function searchBox() { + global $wgUseTwoButtonsSearchForm; +?> + + + + + +data['language_urls'] !== false ) { +?> + + 'generated-sidebar portlet', 'id' => Sanitizer::escapeId( "p-$bar" ), 'role' => 'navigation' ); + $tooltip = Linker::titleAttrib( "p-$bar" ); + if ( $tooltip !== false ) { + $portletAttribs['title'] = $tooltip; + } + echo ' ' . Html::openElement( 'div', $portletAttribs ); + $msgObj = wfMessage( $bar ); +?> + +

exists() ? $msgObj->text() : $bar ); ?>

+
+ +
    + $val ) { ?> + makeListItem( $key, $val ); ?> + + +
+renderAfterPortlet( $bar ); +?> +
+
+getRequest()->getFuzzyBool( 'debug' ) ? '' : '.min'; + $out->addHeadItem( 'csshover', + '" + ); + + $out->addModules( array( 'skins.vector.js', 'skins.vector.collapsibleNav' ) ); + } + + /** + * Loads skin and user CSS files. + * @param $out OutputPage object + */ + function setupSkinUserCss( OutputPage $out ) { + parent::setupSkinUserCss( $out ); + + $styles = array( 'mediawiki.skinning.interface', 'skins.vector.styles' ); + wfRunHooks( 'SkinVectorStyleModules', array( $this, &$styles ) ); + $out->addModuleStyles( $styles ); + } + + /** + * Adds classes to the body element. + * + * @param $out OutputPage object + * @param &$bodyAttrs Array of attributes that will be set on the body element + */ + function addToBodyAttributes( $out, &$bodyAttrs ) { + if ( isset( $bodyAttrs['class'] ) && strlen( $bodyAttrs['class'] ) > 0 ) { + $bodyAttrs['class'] .= ' ' . implode( ' ', static::$bodyClasses ); + } else { + $bodyAttrs['class'] = implode( ' ', static::$bodyClasses ); + } + } +} + +/** + * QuickTemplate class for Vector skin + * @ingroup Skins + */ +class VectorTemplate extends BaseTemplate { + + /* Functions */ + + /** + * Outputs the entire contents of the (X)HTML page + */ + public function execute() { + global $wgVectorUseIconWatch; + + // Build additional attributes for navigation urls + $nav = $this->data['content_navigation']; + + if ( $wgVectorUseIconWatch ) { + $mode = $this->getSkin()->getUser()->isWatched( $this->getSkin()->getRelevantTitle() ) ? 'unwatch' : 'watch'; + if ( isset( $nav['actions'][$mode] ) ) { + $nav['views'][$mode] = $nav['actions'][$mode]; + $nav['views'][$mode]['class'] = rtrim( 'icon ' . $nav['views'][$mode]['class'], ' ' ); + $nav['views'][$mode]['primary'] = true; + unset( $nav['actions'][$mode] ); + } + } + + $xmlID = ''; + foreach ( $nav as $section => $links ) { + foreach ( $links as $key => $link ) { + if ( $section == 'views' && !( isset( $link['primary'] ) && $link['primary'] ) ) { + $link['class'] = rtrim( 'collapsible ' . $link['class'], ' ' ); + } + + $xmlID = isset( $link['id'] ) ? $link['id'] : 'ca-' . $xmlID; + $nav[$section][$key]['attributes'] = + ' id="' . Sanitizer::escapeId( $xmlID ) . '"'; + if ( $link['class'] ) { + $nav[$section][$key]['attributes'] .= + ' class="' . htmlspecialchars( $link['class'] ) . '"'; + unset( $nav[$section][$key]['class'] ); + } + if ( isset( $link['tooltiponly'] ) && $link['tooltiponly'] ) { + $nav[$section][$key]['key'] = + Linker::tooltip( $xmlID ); + } else { + $nav[$section][$key]['key'] = + Xml::expandAttributes( Linker::tooltipAndAccesskeyAttribs( $xmlID ) ); + } + } + } + $this->data['namespace_urls'] = $nav['namespaces']; + $this->data['view_urls'] = $nav['views']; + $this->data['action_urls'] = $nav['actions']; + $this->data['variant_urls'] = $nav['variants']; + + // Reverse horizontally rendered navigation elements + if ( $this->data['rtl'] ) { + $this->data['view_urls'] = + array_reverse( $this->data['view_urls'] ); + $this->data['namespace_urls'] = + array_reverse( $this->data['namespace_urls'] ); + $this->data['personal_urls'] = + array_reverse( $this->data['personal_urls'] ); + } + // Output HTML Page + $this->html( 'headelement' ); +?> +
+
+
+ + + data['sitenotice'] ) { ?> +
html( 'sitenotice' ) ?>
+ +

html( 'title' ) ?>

+ html( 'prebodyhtml' ) ?> +
+ data['isarticle'] ) { ?> +
msg( 'tagline' ) ?>
+ +
html( 'userlangattributes' ) ?>>html( 'subtitle' ) ?>
+ data['undelete'] ) { ?> +
html( 'undelete' ) ?>
+ + data['newtalk'] ) { ?> +
html( 'newtalk' ) ?>
+ +
+ msg( 'jumpto' ) ?> + msg( 'jumptonavigation' ) ?>msg( 'comma-separator' ) ?> + msg( 'jumptosearch' ) ?> +
+ html( 'bodycontent' ) ?> + data['printfooter'] ) { ?> +
+ html( 'printfooter' ); ?> +
+ + data['catlinks'] ) { ?> + html( 'catlinks' ); ?> + + data['dataAfterContent'] ) { ?> + html( 'dataAfterContent' ); ?> + +
+ html( 'debughtml' ); ?> +
+
+
+

msg( 'navigation-heading' ) ?>

+
+ renderNavigation( 'PERSONAL' ); ?> +
+ renderNavigation( array( 'NAMESPACES', 'VARIANTS' ) ); ?> +
+
+ renderNavigation( array( 'VIEWS', 'ACTIONS', 'SEARCH' ) ); ?> +
+
+
+ + renderPortals( $this->data['sidebar'] ); ?> +
+
+ + printTrail(); ?> + + + + $content ) { + if ( $content === false ) { + continue; + } + + switch ( $name ) { + case 'SEARCH': + break; + case 'TOOLBOX': + $this->renderPortal( 'tb', $this->getToolbox(), 'toolbox', 'SkinTemplateToolboxEnd' ); + break; + case 'LANGUAGES': + if ( $this->data['language_urls'] !== false ) { + $this->renderPortal( 'lang', $this->data['language_urls'], 'otherlanguages' ); + } + break; + default: + $this->renderPortal( $name, $content ); + break; + } + } + } + + /** + * @param $name string + * @param $content array + * @param $msg null|string + * @param $hook null|string|array + */ + protected function renderPortal( $name, $content, $msg = null, $hook = null ) { + if ( $msg === null ) { + $msg = $name; + } + $msgObj = wfMessage( $msg ); + ?> + +data['rtl'] ) { + $elements = array_reverse( $elements ); + } + // Render elements + foreach ( $elements as $name => $element ) { + switch ( $element ) { + case 'NAMESPACES': +?> + + + + + + + + + + +'; + } + } + } else { + alert( 'Bad target for sajax_do_call: not a function or object: ' + target ); + } + }; + + debug( func_name + ' uri = ' + uri + ' / post = ' + post_data ); + x.send( post_data ); + debug( func_name + ' waiting..' ); + + return true; +} + +/** + * @return {boolean} Whether the browser supports AJAX + */ +function wfSupportsAjax() { + var request = createXhr(), + supportsAjax = request ? true : false; + + request = undefined; + return supportsAjax; +} + +// Expose + Mark as deprecated +var deprecationNotice = 'Sajax is deprecated, use jQuery.ajax or mediawiki.api instead.'; + +// Variables +mw.log.deprecate( window, 'sajax_debug_mode', false, deprecationNotice ); +mw.log.deprecate( window, 'sajax_request_type', 'GET', deprecationNotice ); +// Methods +mw.log.deprecate( window, 'sajax_debug', debug, deprecationNotice ); +mw.log.deprecate( window, 'sajax_init_object', createXhr, deprecationNotice ); +mw.log.deprecate( window, 'sajax_do_call', doAjaxRequest, deprecationNotice ); +mw.log.deprecate( window, 'wfSupportsAjax', wfSupportsAjax, deprecationNotice ); + +}( mediaWiki ) ); diff --git a/common/commonContent.css b/common/commonContent.css new file mode 100644 index 0000000..41d20fb --- /dev/null +++ b/common/commonContent.css @@ -0,0 +1,151 @@ +/** + * MediaWiki style sheet for general styles on complex content + * + * Styles for complex things which are a standard part of page content + * (ie: the CSS classing built into the system), like the TOC. + */ + +/* Table of Contents */ +#toc, +.toc, +.mw-warning { + border: 1px solid #aaa; + background-color: #f9f9f9; + padding: 5px; + font-size: 95%; +} + +/** + * We want to display the ToC element with intrinsic width in block mode. The fit-content + * value for width is however not supported by large groups of browsers. + * + * We use display:table. Even though it should only contain other table-* display + * elements, there are no known problems with using this. + * + * Because IE < 8, FF 2 and other older browsers don't support display:table, we fallback to + * using inline-block mode, which features at least intrinsic width, but won't clear preceding + * inline elements. In practice inline elements surrounding the TOC are uncommon enough that + * this is an acceptable sacrifice. + */ +#toc, +.toc { + display: -moz-inline-block; + display: inline-block; + display: table; + + /* IE7 and earlier */ + zoom: 1; + *display: inline; + + padding: 7px; +} + +/* CSS for backwards-compatibility with cached page renders and creative uses in wikitext */ +table#toc, +table.toc { + border-collapse: collapse; +} +/* Remove additional paddings inside table-cells that are not present in
s */ +table#toc td, +table.toc td { + padding: 0; +} + +#toc h2, +.toc h2 { + display: inline; + border: none; + padding: 0; + font-size: 100%; + font-weight: bold; +} +#toc #toctitle, +.toc #toctitle, +#toc .toctitle, +.toc .toctitle { + text-align: center; +} +#toc ul, +.toc ul { + list-style-type: none; + list-style-image: none; + margin-left: 0; + padding: 0; + text-align: left; +} +#toc ul ul, +.toc ul ul { + margin: 0 0 0 2em; +} +#toc .toctoggle, +.toc .toctoggle { + font-size: 94%; +} + +.toccolours { + border: 1px solid #aaa; + background-color: #f9f9f9; + padding: 5px; + font-size: 95%; +} + +/* Warning */ +.mw-warning { + margin-left: 50px; + margin-right: 50px; + text-align: center; +} + +/* Images */ +/* @noflip */div.floatright, table.floatright { + margin: 0 0 .5em .5em; + border: 0; +} +div.floatright p { font-style: italic; } +/* @noflip */div.floatleft, table.floatleft { + margin: 0 .5em .5em 0; + border: 0; +} +div.floatleft p { font-style: italic; } +/* Thumbnails */ +div.thumb { + margin-bottom: .5em; + width: auto; + background-color: transparent; +} +div.thumbinner { + border: 1px solid #ccc; + padding: 3px !important; + background-color: #f9f9f9; + font-size: 94%; + text-align: center; + overflow: hidden; +} +html .thumbimage { + border: 1px solid #ccc; +} +html .thumbcaption { + border: none; + line-height: 1.4em; + padding: 3px !important; + font-size: 94%; +} +div.magnify { + border: none !important; + background: none !important; + margin-left: 3px; +} +div.magnify a, div.magnify img { + display: block; + border: none !important; + background: none !important; +} +/* @noflip */div.tright { + margin: .5em 0 1.3em 1.4em; +} +/* @noflip */div.tleft { + margin: .5em 1.4em 1.3em 0; +} +img.thumbborder { + border: 1px solid #dddddd; +} diff --git a/common/commonElements.css b/common/commonElements.css new file mode 100644 index 0000000..ad7942a --- /dev/null +++ b/common/commonElements.css @@ -0,0 +1,235 @@ +/** + * MediaWiki style sheet for general styles on basic content elements + * + * Styles for basic elements: links, lists, etc... + * + * This style sheet is used by the Monobook and Vector skins. + */ + +/* Links */ +a { + text-decoration: none; + color: #0645ad; + background: none; +} +a:visited { + color: #0b0080; +} +a:active { + color: #faa700; +} +a:hover, a:focus { + text-decoration: underline; +} +a.stub { + color: #772233; +} +a.new, #p-personal a.new { + color: #ba0000; +} +a.new:visited, #p-personal a.new:visited { + color: #a55858; +} + +/* Interwiki Styling */ +.mw-body a.extiw, +.mw-body a.extiw:active { + color: #36b; +} +.mw-body a.extiw:visited { + color: #636; +} +.mw-body a.extiw:active { + color: #b63; +} + +/* External links */ +.mw-body a.external { + color: #36b; +} +.mw-body a.external:visited { + color: #636; /* bug 3112 */ +} +.mw-body a.external:active { + color: #b63; +} + +/* Inline Elements */ +img { + border: none; + vertical-align: middle; +} +hr { + height: 1px; + color: #aaa; + background-color: #aaa; + border: 0; + margin: .2em 0; +} + +/* Structural Elements */ +h1, +h2, +h3, +h4, +h5, +h6 { + color: black; + background: none; + font-weight: normal; + margin: 0; + overflow: hidden; + padding-top: .5em; + padding-bottom: .17em; + border-bottom: 1px solid #aaa; +} +h1 { + font-size: 188%; +} +h2 { + font-size: 150%; +} +h3, +h4, +h5, +h6 { + border-bottom: none; + font-weight: bold; +} +h3 { + font-size: 132%; +} +h4 { + font-size: 116%; +} +h5 { + font-size: 108%; +} +h6 { + font-size: 100%; +} + +/* Some space under the headers in the content area */ +h1, +h2 { + margin-bottom: .6em; +} +h3, +h4, +h5 { + margin-bottom: .3em; +} + +p { + margin: .4em 0 .5em 0; + line-height: 1.5em; +} +p img { + margin: 0; +} + +ul { + line-height: 1.5em; + list-style-type: square; + margin: .3em 0 0 1.6em; + padding: 0; +} +ol { + line-height: 1.5em; + margin: .3em 0 0 3.2em; + padding: 0; + list-style-image: none; +} +li { + margin-bottom: .1em; +} +dt { + font-weight: bold; + margin-bottom: .1em; +} +dl { + margin-top: .2em; + margin-bottom: .5em; +} +dd { + line-height: 1.5em; + margin-left: 1.6em; + margin-bottom: .1em; +} + +/* IE 6 and 7 lack support for quotes aroud the element ('::before' and '::after' + pseudoelements, 'quotes' property). Let's italicize it instead (using the star hack). */ +q { + *font-style: italic; +} + +pre, code, tt, kbd, samp, .mw-code { + /* + * Some browsers will render the monospace text too small, namely Firefox, Chrome and Safari. + * Specifying any valid, second value will trigger correct behavior without forcing a different font. + */ + font-family: monospace, Courier; +} +code { + background-color: #f9f9f9; +} +pre, .mw-code { + padding: 1em; + border: 1px solid #ddd; + color: black; + background-color: #f9f9f9; +} + +/* Tables */ +table { + font-size: 100%; +} + +/* Forms */ +fieldset { + border: 1px solid #2f6fab; + margin: 1em 0 1em 0; + padding: 0 1em 1em; + line-height: 1.5em; +} +fieldset.nested { + margin: 0 0 0.5em 0; + padding: 0 0.5em 0.5em; +} +legend { + padding: .5em; + font-size: 95%; +} +form { + border: none; + margin: 0; +} +textarea { + width: 100%; + padding: .1em; + display: block; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +select { + vertical-align: top; +} + +/* Emulate Center */ +.center { + width: 100%; + text-align: center; +} +*.center * { + margin-left: auto; + margin-right: auto; +} +/* Small for tables and similar */ +.small { + font-size: 94%; +} +table.small { + font-size: 100%; +} + diff --git a/common/commonInterface.css b/common/commonInterface.css new file mode 100644 index 0000000..7eca070 --- /dev/null +++ b/common/commonInterface.css @@ -0,0 +1,68 @@ +/** + * MediaWiki style sheet for common core styles on interfaces + * + * Styles for the Monobook/Vector pattern of laying out common interfaces. + * These ids/classes are not built into the system, + * they are outputted by the actual MonoBook/Vector code by convention. + */ + +/* Categories */ +.catlinks { + border: 1px solid #aaa; + background-color: #f9f9f9; + padding: 5px; + margin-top: 1em; + clear: both; +} + +/* User Message */ +.usermessage { + background-color: #ffce7b; + border: 1px solid #ffa500; + color: black; + font-weight: bold; + margin: 2em 0 1em; + padding: .5em 1em; + vertical-align: middle; +} + +/* Site Notice (includes notices from CentralNotice extension) */ +#siteNotice { + position: relative; + text-align: center; + margin: 0; +} +#localNotice { + margin-bottom: 0.9em; +} + +/* First h1 */ +.firstHeading, +#firstHeading { + margin-bottom: .1em; + /* These two rules hack around bug 2013 (fix for more limited bug 11325). + * When bug 2013 is fixed properly, they should be removed. */ + line-height: 1.2em; + padding-bottom: 0; +} + +/* Sub-navigation */ +#siteSub { + display: none; +} +#jump-to-nav { + /* Negate #contentSub's margin and replicate it so that the jump to links don't affect the spacing */ + margin-top: -1.4em; + margin-bottom: 1.4em +} +#contentSub, #contentSub2 { + font-size: 84%; + line-height: 1.2em; + margin: 0 0 1.4em 1em; + color: #545454; + width: auto; +} +span.subpages { + display: block; +} + diff --git a/common/commonPrint.css b/common/commonPrint.css new file mode 100644 index 0000000..65f3fbe --- /dev/null +++ b/common/commonPrint.css @@ -0,0 +1,401 @@ +/** + * MediaWiki Print style sheet for CSS2-capable browsers. + * Copyright Gabriel Wicke, http://www.aulinx.de/ + * + * Derived from the plone (http://plone.org/) styles + * Copyright Alexander Limi + */ + +/* Thanks to A List Apart (http://alistapart.com/) for useful extras */ +a.stub, +a.new { + color: #ba0000; + text-decoration: none; +} + +#toc { + border: 1px solid #aaaaaa; + background-color: #f9f9f9; + padding: 5px; + display: -moz-inline-block; + display: inline-block; + display: table; + /* IE7 and earlier */ + zoom: 1; + *display: inline; +} + +/* images */ +div.floatright { + float: right; + clear: right; + position: relative; + margin: 0.5em 0 0.8em 1.4em; +} +div.floatright p { + font-style: italic; +} +div.floatleft { + float: left; + clear: left; + position: relative; + margin: 0.5em 1.4em 0.8em 0; +} +div.floatleft p { + font-style: italic; +} +div.center { + text-align: center; +} + +/* thumbnails */ +div.thumb { + border: none; + width: auto; + margin-top: 0.5em; + margin-bottom: 0.8em; + background-color: transparent; +} +div.thumbinner { + border:1px solid #cccccc; + padding: 3px !important; + background-color: White; + font-size: 94%; + text-align: center; + overflow: hidden; +} +html .thumbimage { + border: 1px solid #cccccc; +} +html .thumbcaption { + border: none; + text-align: left; + line-height: 1.4em; + padding: 3px !important; + font-size: 94%; +} + +div.magnify { + display: none; +} +/* @noflip */ +div.tright { + float: right; + clear: right; + margin: 0.5em 0 0.8em 1.4em; +} +/* @noflip */ +div.tleft { + float: left; + clear: left; + margin: 0.5em 1.4em 0.8em 0; +} +img.thumbborder { + border: 1px solid #dddddd; +} + +/* table standards */ +table.rimage { + float: right; + width: 1pt; + position: relative; + margin-left: 1em; + margin-bottom: 1em; + text-align: center; +} + +body { + background: white; + color: black; + margin: 0; + padding: 0; +} + +.noprint, +div#jump-to-nav, +.mw-jump, +div.top, +div#column-one, +#colophon, +.mw-editsection, +.mw-editsection-like, +.toctoggle, +.tochidden, +div#f-poweredbyico, +div#f-copyrightico, +li#viewcount, +li#about, +li#disclaimer, +li#mobileview, +li#privacy, +#footer-places, +.mw-hidden-catlinks, +tr.mw-metadata-show-hide-extended, +span.mw-filepage-other-resolutions, +#filetoc, +.usermessage, +.patrollink, +#mw-navigation { + /* Hides all the elements irrelevant for printing */ + display: none; +} + +ul { + list-style-type: square; +} + +#content { + background: none; + border: none !important; + padding: 0 !important; + margin: 0 !important; + direction: ltr; +} +#footer { + background : white; + color : black; + margin-top: 1em; + border-top: 1px solid #AAA; + direction: ltr; +} + +h1, h2, h3, h4, h5, h6 { + font-weight: bold; +} + +dt { + font-weight: bold; +} + +p { + margin: 1em 0; + line-height: 1.2em; +} + +pre, .mw-code { + border: 1pt dashed black; + white-space: pre; + font-size: 8pt; + overflow: auto; + padding: 1em 0; + background: white; + color: black; +} + +table.listing, +table.listing td { + border: 1pt solid black; + border-collapse: collapse; +} + +a { + color: black !important; + background: none !important; + padding: 0 !important; +} + +a:link, a:visited { + color: #520; + background: transparent; + text-decoration: underline; +} + +#content a.external.text:after, +#content a.external.autonumber:after { + /* Expand URLs for printing */ + content: " (" attr(href) ")"; +} + +#globalWrapper { + width: 100% !important; + min-width: 0 !important; +} + +#content { + background: white; + color: black; +} + +#column-content { + margin: 0 !important; +} + +#column-content #content { + padding: 1em; + margin: 0 !important; +} + +/* MSIE/Win doesn't understand 'inherit' */ +a, +a.external, +a.new, +a.stub { + color: black !important; + text-decoration: none !important; +} + +/* Continue ... */ +a, +a.external, +a.new, +a.stub { + color: inherit !important; + text-decoration: inherit !important; +} + +img { + border: none; + vertical-align: middle; +} + +/* math */ +span.texhtml { + font-family: serif; +} + +#siteNotice { + display: none; +} + +/* Galleries (see shared.css for more info) */ +li.gallerybox { + vertical-align: top; + display: -moz-inline-box; + display: inline-block; +} + +ul.gallery, li.gallerybox { + zoom: 1; + *display: inline; +} + +ul.gallery { + margin: 2px; + padding: 2px; + display: block; +} + +li.gallerycaption { + font-weight: bold; + text-align: center; + display: block; + word-wrap: break-word; +} + +li.gallerybox div.thumb { + text-align: center; + border: 1px solid #ccc; + margin: 2px; +} + +div.gallerytext { + overflow: hidden; + font-size: 94%; + padding: 2px 4px; + word-wrap: break-word; +} + +/** + * Diff rendering + */ +table.diff { + background: white; +} +td.diff-otitle { + background: #ffffff; +} +td.diff-ntitle { + background: #ffffff; +} +td.diff-addedline { + background: #ccffcc; + font-size: smaller; + border: solid 2px black; +} +td.diff-deletedline { + background: #ffffaa; + font-size: smaller; + border: dotted 2px black; +} +td.diff-context { + background: #eeeeee; + font-size: smaller; +} +.diffchange { + color: silver; + font-weight: bold; + text-decoration: underline; +} + +/** + * Table rendering + * As on shared.css but with white background. + */ +table.wikitable, +table.mw_metadata { + margin: 1em 0; + border: 1px #aaa solid; + background: white; + border-collapse: collapse; +} +table.wikitable > tr > th, table.wikitable > tr > td, +table.wikitable > * > tr > th, table.wikitable > * > tr > td, +.mw_metadata th, .mw_metadata td { + border: 1px #aaa solid; + padding: 0.2em; +} +table.wikitable > tr > th, +table.wikitable > * > tr > th, +.mw_metadata th { + text-align: center; + background: white; + font-weight: bold; +} +table.wikitable > caption, +.mw_metadata caption { + font-weight: bold; +} + +a.sortheader { + margin: 0 0.3em; +} + +/* Some pagination options */ +.wikitable, .thumb, img { + page-break-inside: avoid; +} +h2, h3, h4, h5, h6 { + page-break-after: avoid; +} +p { + widows: 3; + orphans: 3; +} + +/** + * Categories + */ +.catlinks ul { + display: inline; + margin: 0; + padding: 0; + list-style: none; + list-style-type: none; + list-style-image: none; + vertical-align: middle !ie; +} + +.catlinks li { + display: inline-block; + line-height: 1.15em; + padding: 0 .4em; + border-left: 1px solid #AAA; + margin: 0.1em 0; + zoom: 1; + display: inline !ie; +} + +.catlinks li:first-child { + padding-left: .2em; + border-left: none; +} diff --git a/common/config-cc.css b/common/config-cc.css new file mode 100644 index 0000000..d81218e --- /dev/null +++ b/common/config-cc.css @@ -0,0 +1,57 @@ +/** + * Copy of CC standard stylesheet, plus tweaks for iframe usage + */ + +body { + margin: 0; + background: #eee; + font-family: Verdana; + color: #333; +} + +#main { + border: 1px solid #D0D0D0; + background: #fff; + margin: 0.5em; +} + +/** + * Looks like you have to specify the width of #menu + * or IE5 Mac stretches it all the way across the div, and + * Opera streches it half way. + */ + +#main #menu { + border-left: 1px dotted #ccc; + float: right; + width: 230px; + background: white; + margin: 0 0 10px 10px; +} + +td, h3, p, h1, pre { + margin: 0 20px 20px 20px; + font-size: 11px; + line-height: 140%; +} + +.header { + padding-left: 10px; + padding-top: 10px; +} + +.nav { + padding-left: 10px; + padding-bottom: 10px; + font-size: 11px; + margin-bottom: 16px; +} + +#menu p { + font-size: 11px; +} + +.dent { + margin-left: 64px; +} + diff --git a/common/config.css b/common/config.css new file mode 100644 index 0000000..d646273 --- /dev/null +++ b/common/config.css @@ -0,0 +1,143 @@ +.env-check { + font-size: 90%; + margin: 1em 0 1em 2.5em; +} + +.config-section { + margin-top: 2em; +} +.config-block { + margin-top: 2em; + display: block; + +} +.config-block-label { + display: block; + margin-bottom: .2em; +} +.config-block-label label, .config-label { + font-weight: bold; + padding-right: .5em; + padding-top: .2em; +} +.config-block-elements { + margin-left: 2em; +} +.config-block-elements li { + list-style: none; +} +.config-input { + clear: left; + zoom: 100%; /* IE hack */ +} + +.config-page-wrapper { + padding: 0.5em; +} + +.config-page-list { + float: right; + width: 12em; + border: 1px solid #aaa; + background: #fff; + padding: 0.5em; + /* 3em left margin to leave space between the list and the page-content */ + margin: 0.5em 0.5em 0.5em 3.5em; +} + +.config-page { + padding: 0.5em 0.5em 0.5em 2em; + margin: 0.5em 0.5em 0.5em 0.5em; + background: #eee; +} + +.config-submit { + clear: left; + text-align: center; + padding: 1em; +} + +.config-submit input { + margin-left: 0.5em; + margin-right: 0.5em; +} + +.config-page-disabled { + color: #aaa; +} + +.config-error-box { + border: 2px solid #f00; +} + +.config-page-current { + font-weight: bold; +} + +.config-message { + display: list-item; + line-height: 1.5em; + /* @embed */ + list-style-image: url(images/bullet.gif); + list-style-type: square; +} + +.config-input-text { + width: 20em; + margin-right: 1em; +} + +.config-input-check { + margin-left: 10em; +} + +.error { + color: red; + background-color: #fff; + font-weight: bold; + left: 1em; + font-size: 100%; +} + +.config-settings-block { + list-style-type: none; + list-style-image: none; + margin: 0; + padding: 0; +} + +.btn-install { + font-weight: bold; + font-size: 110%; + padding: .2em .3em; +} + +.success-message { + font-weight: bold; + font-size: 110%; + color: green; +} +.success-box { + font-size: 130%; +} + +.config-cc-wrapper { + clear: left; + /* If you change this height, also change it in WebInstaller_Options::submitCC() */ + height: 54em; +} + +.config-plainlink a { + background: none !important; + padding: 0 !important; +} + +.config-download-link { + font-size: 1.8em; + margin-left: 2em; +} + +#config-live-log { + overflow: hidden; + min-width: 20em; +} diff --git a/common/config.js b/common/config.js new file mode 100644 index 0000000..2886e08 --- /dev/null +++ b/common/config.js @@ -0,0 +1,108 @@ +( function ( $ ) { + $( function () { + var $label, labelText; + + function syncText() { + var value = $(this).val() + .replace( /[\[\]\{\}|#<>%+? ]/g, '_' ) + .replace( /&/, '&' ) + .replace( /__+/g, '_' ) + .replace( /^_+/, '' ) + .replace( /_+$/, '' ); + value = value.substr( 0, 1 ).toUpperCase() + value.substr( 1 ); + $label.text( labelText.replace( '$1', value ) ); + } + + // Set up the help system + $( '.mw-help-field-data' ) + .hide() + .closest( '.mw-help-field-container' ) + .find( '.mw-help-field-hint' ) + .show() + .click( function () { + $(this) + .closest( '.mw-help-field-container' ) + .find( '.mw-help-field-data' ) + .slideToggle( 'fast' ); + } ); + + // Show/hide code for DB-specific options + // FIXME: Do we want slow, fast, or even non-animated (instantaneous) showing/hiding here? + $( '.dbRadio' ).each( function () { + $( document.getElementById( $(this).attr( 'rel' ) ) ).hide(); + } ); + $( document.getElementById( $( '.dbRadio:checked' ).attr( 'rel' ) ) ).show(); + $( '.dbRadio' ).click( function () { + var $checked = $( '.dbRadio:checked' ), + $wrapper = $( document.getElementById( $checked.attr( 'rel' ) ) ); + if ( $wrapper.is( ':hidden' ) ) { + $( '.dbWrapper' ).hide( 'slow' ); + $wrapper.show( 'slow' ); + } + } ); + + // Scroll to the bottom of upgrade log + $( '#config-live-log' ).children( 'textarea' ).each( function () { + this.scrollTop = this.scrollHeight; + } ); + + // Show/hide Creative Commons thingy + $( '.licenseRadio' ).click( function () { + var $wrapper = $( '#config-cc-wrapper' ); + if ( $( '#config__LicenseCode_cc-choose' ).is( ':checked' ) ) { + $wrapper.show( 'slow' ); + } else { + $wrapper.hide( 'slow' ); + } + } ); + + // Show/hide random stuff (email, upload) + $( '.showHideRadio' ).click( function () { + var $wrapper = $( '#' + $(this).attr( 'rel' ) ); + if ( $(this).is( ':checked' ) ) { + $wrapper.show( 'slow' ); + } else { + $wrapper.hide( 'slow' ); + } + } ); + $( '.hideShowRadio' ).click( function () { + var $wrapper = $( '#' + $(this).attr( 'rel' ) ); + if ( $(this).is( ':checked' ) ) { + $wrapper.hide( 'slow' ); + } else { + $wrapper.show( 'slow' ); + } + } ); + + // Hide "other" textboxes by default + // Should not be done in CSS for javascript disabled compatibility + $( '.enabledByOther' ).closest( '.config-block' ).hide(); + + // Enable/disable "other" textboxes + $( '.enableForOther' ).click( function () { + var $textbox = $( document.getElementById( $(this).attr( 'rel' ) ) ); + // FIXME: Ugh, this is ugly + if ( $(this).val() === 'other' ) { + $textbox.removeProp( 'readonly' ).closest( '.config-block' ).slideDown( 'fast' ); + } else { + $textbox.prop( 'readonly', true ).closest( '.config-block' ).slideUp( 'fast' ); + } + } ); + + // Synchronize radio button label for sitename with textbox + $label = $( 'label[for=config__NamespaceType_site-name]' ); + labelText = $label.text(); + $label.text( labelText.replace( '$1', '' ) ); + $( '#config_wgSitename' ).on( 'keyup change', syncText ).each( syncText ); + + // Show/Hide memcached servers when needed + $( 'input[name$="config_wgMainCacheType"]' ).change( function () { + var $memc = $( '#config-memcachewrapper' ); + if ( $( 'input[name$="config_wgMainCacheType"]:checked' ).val() === 'memcached' ) { + $memc.show( 'slow' ); + } else { + $memc.hide( 'slow' ); + } + } ); + } ); +}( jQuery ) ); diff --git a/common/feed.css b/common/feed.css new file mode 100644 index 0000000..9439663 --- /dev/null +++ b/common/feed.css @@ -0,0 +1,95 @@ +/* +Make RSS and Atom feeds at least semi-legible to folk who accidentally +load them in a browser... + +Compatibility: +* Mozilla is fine. +* Safari 1.2: the RSS text isn't shown +* Opera 7.5 uses the style sheet instead of its native RSS mode. +* IE/Mac 5.2: none of the :before content works; doesn't get the charset right and displays garbage for non-ASCII. +* IE/Win 6.0: No background color, borders, font size, font weight, or :before content. + +*/ + +/* RSS: */ rss, channel, title, link, description, language, generator, lastBuildDate, item, pubDate, author, comments, creator, +/* Atom: */ feed, id, modified, tagline, entry, issued, created, updated, summary, comment { + display: block; +} + +rss, feed { + background: white; + color: black; + margin: 1em; + font-family: "Verdana", "Tahoma", "Arial", "Helvetica", sans-serif; + line-height: 1.5em; + font-size: 76%; +} + +rss:before { + content: "This RSS feed is meant to be read in a syndicated news reader, and isn't ideal for a web browser."; +} + +feed:before { + content: "This Atom feed is meant to be read in a syndicated news reader, and isn't ideal for a web browser."; +} +rss:before, feed:before { + color: red; + text-align: center; + line-height: 2em; +} + +channel>title, +item>title, +feed>title, +entry>title { + font-weight: bold; + border-bottom: solid 1px #aaa; + margin-left: -0.5em; +} +channel>title, feed>title { + font-size: larger; +} +item>title, entry>title { + font-size: large; +} +item, entry { + margin-top: 1em; + margin-left: 2em; +} + +item>description, entry>summary { + white-space: pre; + overflow: auto; + background: #f8f8ff; +} + +pubDate:before { content: "Date: " } +link:before { content: "Link: " } +author:before, creator:before { content: "Author: " } +description:before { content: "Description: " } +id:before { content: "Id: " } + +generator:before { content: "Generator: " } +language:before { content: "Language: " } +lastBuildDate:before { content: "Updated: " } +comments:before { content: "Comments page: " } + +tagline:before { content: "Tagline: " } +issued:before { content: "Issued: " } +created:before { content: "Created: " } +modified:before { content: "Modified: " } +updated:before { content: "Updated: " } +summary:before { content: "Summary: " } +comment:before { content: "Comment: " } + +pubDate:before, link:before, author:before, description:before, +language:before, generator:before, lastBuildDate:before, comments:before, +tagline:before, issued:before, created:before, modified:before, +summary:before, comment:before, creator:before, id:before, updated:before { + color: #224; + font-weight: bold; +} + +feed link:after { + content: attr(href); +} diff --git a/common/images/Arr_.png b/common/images/Arr_.png new file mode 100644 index 0000000..bc67a4b Binary files /dev/null and b/common/images/Arr_.png differ diff --git a/common/images/Arr_d.png b/common/images/Arr_d.png new file mode 100644 index 0000000..58a9fc6 Binary files /dev/null and b/common/images/Arr_d.png differ diff --git a/common/images/Arr_l.png b/common/images/Arr_l.png new file mode 100644 index 0000000..2246254 Binary files /dev/null and b/common/images/Arr_l.png differ diff --git a/common/images/Arr_r.png b/common/images/Arr_r.png new file mode 100644 index 0000000..467a555 Binary files /dev/null and b/common/images/Arr_r.png differ diff --git a/common/images/Arr_u.png b/common/images/Arr_u.png new file mode 100644 index 0000000..1aa543a Binary files /dev/null and b/common/images/Arr_u.png differ diff --git a/common/images/Checker-16x16.png b/common/images/Checker-16x16.png new file mode 100644 index 0000000..3e9e3d0 Binary files /dev/null and b/common/images/Checker-16x16.png differ diff --git a/common/images/Zoom_sans.gif b/common/images/Zoom_sans.gif new file mode 100644 index 0000000..56a49de Binary files /dev/null and b/common/images/Zoom_sans.gif differ diff --git a/common/images/add.png b/common/images/add.png new file mode 100644 index 0000000..3497423 Binary files /dev/null and b/common/images/add.png differ diff --git a/common/images/ajax-loader.gif b/common/images/ajax-loader.gif new file mode 100644 index 0000000..72203fd Binary files /dev/null and b/common/images/ajax-loader.gif differ diff --git a/common/images/ar/button_bold.png b/common/images/ar/button_bold.png new file mode 100644 index 0000000..e524f6c Binary files /dev/null and b/common/images/ar/button_bold.png differ diff --git a/common/images/ar/button_headline.png b/common/images/ar/button_headline.png new file mode 100644 index 0000000..398e561 Binary files /dev/null and b/common/images/ar/button_headline.png differ diff --git a/common/images/ar/button_italic.png b/common/images/ar/button_italic.png new file mode 100644 index 0000000..6ec73e9 Binary files /dev/null and b/common/images/ar/button_italic.png differ diff --git a/common/images/ar/button_link.png b/common/images/ar/button_link.png new file mode 100644 index 0000000..c9c63f6 Binary files /dev/null and b/common/images/ar/button_link.png differ diff --git a/common/images/ar/button_nowiki.png b/common/images/ar/button_nowiki.png new file mode 100644 index 0000000..743ea61 Binary files /dev/null and b/common/images/ar/button_nowiki.png differ diff --git a/common/images/arrow_disabled_first_25.png b/common/images/arrow_disabled_first_25.png new file mode 100644 index 0000000..78a493e Binary files /dev/null and b/common/images/arrow_disabled_first_25.png differ diff --git a/common/images/arrow_disabled_last_25.png b/common/images/arrow_disabled_last_25.png new file mode 100644 index 0000000..2a64fd0 Binary files /dev/null and b/common/images/arrow_disabled_last_25.png differ diff --git a/common/images/arrow_disabled_left_25.png b/common/images/arrow_disabled_left_25.png new file mode 100644 index 0000000..83df068 Binary files /dev/null and b/common/images/arrow_disabled_left_25.png differ diff --git a/common/images/arrow_disabled_right_25.png b/common/images/arrow_disabled_right_25.png new file mode 100644 index 0000000..aa4fbf8 Binary files /dev/null and b/common/images/arrow_disabled_right_25.png differ diff --git a/common/images/arrow_first_25.png b/common/images/arrow_first_25.png new file mode 100644 index 0000000..52b32a5 Binary files /dev/null and b/common/images/arrow_first_25.png differ diff --git a/common/images/arrow_last_25.png b/common/images/arrow_last_25.png new file mode 100644 index 0000000..caf5033 Binary files /dev/null and b/common/images/arrow_last_25.png differ diff --git a/common/images/arrow_left_25.png b/common/images/arrow_left_25.png new file mode 100644 index 0000000..f363bf6 Binary files /dev/null and b/common/images/arrow_left_25.png differ diff --git a/common/images/arrow_right_25.png b/common/images/arrow_right_25.png new file mode 100644 index 0000000..3f8fee3 Binary files /dev/null and b/common/images/arrow_right_25.png differ diff --git a/common/images/be-tarask/button_bold.png b/common/images/be-tarask/button_bold.png new file mode 100644 index 0000000..5c10cfe Binary files /dev/null and b/common/images/be-tarask/button_bold.png differ diff --git a/common/images/be-tarask/button_italic.png b/common/images/be-tarask/button_italic.png new file mode 100644 index 0000000..72209d7 Binary files /dev/null and b/common/images/be-tarask/button_italic.png differ diff --git a/common/images/be-tarask/button_link.png b/common/images/be-tarask/button_link.png new file mode 100644 index 0000000..09c86fb Binary files /dev/null and b/common/images/be-tarask/button_link.png differ diff --git a/common/images/bullet.gif b/common/images/bullet.gif new file mode 100644 index 0000000..b43de48 Binary files /dev/null and b/common/images/bullet.gif differ diff --git a/common/images/button_bold.png b/common/images/button_bold.png new file mode 100644 index 0000000..75c3f10 Binary files /dev/null and b/common/images/button_bold.png differ diff --git a/common/images/button_extlink.png b/common/images/button_extlink.png new file mode 100644 index 0000000..458943c Binary files /dev/null and b/common/images/button_extlink.png differ diff --git a/common/images/button_headline.png b/common/images/button_headline.png new file mode 100644 index 0000000..9cf751d Binary files /dev/null and b/common/images/button_headline.png differ diff --git a/common/images/button_hr.png b/common/images/button_hr.png new file mode 100644 index 0000000..47e1ca4 Binary files /dev/null and b/common/images/button_hr.png differ diff --git a/common/images/button_image.png b/common/images/button_image.png new file mode 100644 index 0000000..6919296 Binary files /dev/null and b/common/images/button_image.png differ diff --git a/common/images/button_italic.png b/common/images/button_italic.png new file mode 100644 index 0000000..527fbd1 Binary files /dev/null and b/common/images/button_italic.png differ diff --git a/common/images/button_link.png b/common/images/button_link.png new file mode 100644 index 0000000..eb5634b Binary files /dev/null and b/common/images/button_link.png differ diff --git a/common/images/button_media.png b/common/images/button_media.png new file mode 100644 index 0000000..4194ec1 Binary files /dev/null and b/common/images/button_media.png differ diff --git a/common/images/button_nowiki.png b/common/images/button_nowiki.png new file mode 100644 index 0000000..2ba818d Binary files /dev/null and b/common/images/button_nowiki.png differ diff --git a/common/images/button_sig.png b/common/images/button_sig.png new file mode 100644 index 0000000..fe34b3f Binary files /dev/null and b/common/images/button_sig.png differ diff --git a/common/images/button_template.png b/common/images/button_template.png new file mode 100644 index 0000000..94d9d0b Binary files /dev/null and b/common/images/button_template.png differ diff --git a/common/images/cc-0.png b/common/images/cc-0.png new file mode 100644 index 0000000..9d3fe5f Binary files /dev/null and b/common/images/cc-0.png differ diff --git a/common/images/cc-by-nc-sa.png b/common/images/cc-by-nc-sa.png new file mode 100644 index 0000000..0d24a71 Binary files /dev/null and b/common/images/cc-by-nc-sa.png differ diff --git a/common/images/cc-by-sa.png b/common/images/cc-by-sa.png new file mode 100644 index 0000000..518fb64 Binary files /dev/null and b/common/images/cc-by-sa.png differ diff --git a/common/images/cc-by.png b/common/images/cc-by.png new file mode 100644 index 0000000..9cca2f9 Binary files /dev/null and b/common/images/cc-by.png differ diff --git a/common/images/closewindow.png b/common/images/closewindow.png new file mode 100644 index 0000000..990702e Binary files /dev/null and b/common/images/closewindow.png differ diff --git a/common/images/closewindow19x19.png b/common/images/closewindow19x19.png new file mode 100644 index 0000000..c96d9ff Binary files /dev/null and b/common/images/closewindow19x19.png differ diff --git a/common/images/critical-32.png b/common/images/critical-32.png new file mode 100644 index 0000000..9b38e6a Binary files /dev/null and b/common/images/critical-32.png differ diff --git a/common/images/cyrl/LICENSE b/common/images/cyrl/LICENSE new file mode 100644 index 0000000..bedcec6 --- /dev/null +++ b/common/images/cyrl/LICENSE @@ -0,0 +1,17 @@ +button_bold.png +--------------- +Source : http://commons.wikimedia.org/wiki/Image:Button_bold_ukr.png +License: Public domain +Author : Alexey Belomoev + +button_italic.png +------------------------ +Source : http://commons.wikimedia.org/wiki/Image:Button_italic_ukr.png +License: Public domain +Author : Alexey Belomoev + +button_link.png +----------------- +Source : http://commons.wikimedia.org/wiki/Image:Button_internal_link_ukr.png +License: GPL +Author : Saproj, Erik Möller diff --git a/common/images/cyrl/button_bold.png b/common/images/cyrl/button_bold.png new file mode 100644 index 0000000..eae30d9 Binary files /dev/null and b/common/images/cyrl/button_bold.png differ diff --git a/common/images/cyrl/button_italic.png b/common/images/cyrl/button_italic.png new file mode 100644 index 0000000..b958d22 Binary files /dev/null and b/common/images/cyrl/button_italic.png differ diff --git a/common/images/cyrl/button_link.png b/common/images/cyrl/button_link.png new file mode 100644 index 0000000..12ad373 Binary files /dev/null and b/common/images/cyrl/button_link.png differ diff --git a/common/images/de/button_bold.png b/common/images/de/button_bold.png new file mode 100644 index 0000000..367d5bc Binary files /dev/null and b/common/images/de/button_bold.png differ diff --git a/common/images/de/button_italic.png b/common/images/de/button_italic.png new file mode 100644 index 0000000..fdd8c9f Binary files /dev/null and b/common/images/de/button_italic.png differ diff --git a/common/images/diffunderline.gif b/common/images/diffunderline.gif new file mode 100644 index 0000000..e062c56 Binary files /dev/null and b/common/images/diffunderline.gif differ diff --git a/common/images/download-32.png b/common/images/download-32.png new file mode 100644 index 0000000..e5b8318 Binary files /dev/null and b/common/images/download-32.png differ diff --git a/common/images/fa/button_bold.png b/common/images/fa/button_bold.png new file mode 100644 index 0000000..c54d094 Binary files /dev/null and b/common/images/fa/button_bold.png differ diff --git a/common/images/fa/button_headline.png b/common/images/fa/button_headline.png new file mode 100644 index 0000000..9890d15 Binary files /dev/null and b/common/images/fa/button_headline.png differ diff --git a/common/images/fa/button_italic.png b/common/images/fa/button_italic.png new file mode 100644 index 0000000..33f91ed Binary files /dev/null and b/common/images/fa/button_italic.png differ diff --git a/common/images/fa/button_link.png b/common/images/fa/button_link.png new file mode 100644 index 0000000..76b939e Binary files /dev/null and b/common/images/fa/button_link.png differ diff --git a/common/images/fa/button_nowiki.png b/common/images/fa/button_nowiki.png new file mode 100644 index 0000000..743ea61 Binary files /dev/null and b/common/images/fa/button_nowiki.png differ diff --git a/common/images/feed-icon.png b/common/images/feed-icon.png new file mode 100644 index 0000000..00f49f6 Binary files /dev/null and b/common/images/feed-icon.png differ diff --git a/common/images/feed-icon.svg b/common/images/feed-icon.svg new file mode 100644 index 0000000..6e5f570 --- /dev/null +++ b/common/images/feed-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/common/images/gnu-fdl.png b/common/images/gnu-fdl.png new file mode 100644 index 0000000..3feaf57 Binary files /dev/null and b/common/images/gnu-fdl.png differ diff --git a/common/images/help-question-hover.gif b/common/images/help-question-hover.gif new file mode 100644 index 0000000..515138d Binary files /dev/null and b/common/images/help-question-hover.gif differ diff --git a/common/images/help-question.gif b/common/images/help-question.gif new file mode 100644 index 0000000..b4fc9c5 Binary files /dev/null and b/common/images/help-question.gif differ diff --git a/common/images/icons/COPYING b/common/images/icons/COPYING new file mode 100644 index 0000000..136530a --- /dev/null +++ b/common/images/icons/COPYING @@ -0,0 +1,43 @@ +The icons used here are derived from the crystalsvg icons in the the +pics/crystalsvg/ directory of kdelibs-3.4.0 they were modified on 2005-05-15 +by Ævar Arnfjörð Bjarmason for use in MediaWiki. + +What follows is the contents of the LICENSE.crystalsvg file found in the pics/ +subdirectory of kdelibs-3.4.0: + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +This copyright and license notice covers all CrystalSVG images. +Note the license notice contains an add-on. +******************************************************************************** +KDE Crystal theme icons. +Copyright (C) 2002 and following years KDE Artists +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation, +version 2.1 of the License. +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + **** NOTE THIS ADD-ON **** +The GNU Lesser General Public License or LGPL is written for software libraries +in the first place. We expressly want the LGPL to be valid for this artwork +library too. +KDE Crystal theme icons is a special kind of software library, it is an +artwork library, it's elements can be used in a Graphical User Interface, or +GUI. +Source code, for this library means: + - for vectors svg; + - for pixels, if applicable, the multi-layered formats xcf or psd, or +otherwise png. +The LGPL in some sections obliges you to make the files carry +notices. With images this is in some cases impossible or hardly useful. +With this library a notice is placed at a prominent place in the directory +containing the elements. You may follow this practice. +The exception in section 6 of the GNU Lesser General Public License covers +the use of elements of this art library in a GUI. +kde-artists [at] kde.org +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ diff --git a/common/images/icons/fileicon-c.png b/common/images/icons/fileicon-c.png new file mode 100644 index 0000000..0d603b7 Binary files /dev/null and b/common/images/icons/fileicon-c.png differ diff --git a/common/images/icons/fileicon-cpp.png b/common/images/icons/fileicon-cpp.png new file mode 100644 index 0000000..123688f Binary files /dev/null and b/common/images/icons/fileicon-cpp.png differ diff --git a/common/images/icons/fileicon-deb.png b/common/images/icons/fileicon-deb.png new file mode 100644 index 0000000..87ca3fa Binary files /dev/null and b/common/images/icons/fileicon-deb.png differ diff --git a/common/images/icons/fileicon-djvu.png b/common/images/icons/fileicon-djvu.png new file mode 100644 index 0000000..1da2276 Binary files /dev/null and b/common/images/icons/fileicon-djvu.png differ diff --git a/common/images/icons/fileicon-djvu.xcf b/common/images/icons/fileicon-djvu.xcf new file mode 100644 index 0000000..8043dcd Binary files /dev/null and b/common/images/icons/fileicon-djvu.xcf differ diff --git a/common/images/icons/fileicon-dvi.png b/common/images/icons/fileicon-dvi.png new file mode 100644 index 0000000..f37878d Binary files /dev/null and b/common/images/icons/fileicon-dvi.png differ diff --git a/common/images/icons/fileicon-exe.png b/common/images/icons/fileicon-exe.png new file mode 100644 index 0000000..dc020eb Binary files /dev/null and b/common/images/icons/fileicon-exe.png differ diff --git a/common/images/icons/fileicon-h.png b/common/images/icons/fileicon-h.png new file mode 100644 index 0000000..339bf02 Binary files /dev/null and b/common/images/icons/fileicon-h.png differ diff --git a/common/images/icons/fileicon-html.png b/common/images/icons/fileicon-html.png new file mode 100644 index 0000000..f28f8a2 Binary files /dev/null and b/common/images/icons/fileicon-html.png differ diff --git a/common/images/icons/fileicon-iso.png b/common/images/icons/fileicon-iso.png new file mode 100644 index 0000000..c73d229 Binary files /dev/null and b/common/images/icons/fileicon-iso.png differ diff --git a/common/images/icons/fileicon-java.png b/common/images/icons/fileicon-java.png new file mode 100644 index 0000000..a1b4f22 Binary files /dev/null and b/common/images/icons/fileicon-java.png differ diff --git a/common/images/icons/fileicon-mid.png b/common/images/icons/fileicon-mid.png new file mode 100644 index 0000000..ce2bebb Binary files /dev/null and b/common/images/icons/fileicon-mid.png differ diff --git a/common/images/icons/fileicon-mov.png b/common/images/icons/fileicon-mov.png new file mode 100644 index 0000000..952de1f Binary files /dev/null and b/common/images/icons/fileicon-mov.png differ diff --git a/common/images/icons/fileicon-o.png b/common/images/icons/fileicon-o.png new file mode 100644 index 0000000..f3523d9 Binary files /dev/null and b/common/images/icons/fileicon-o.png differ diff --git a/common/images/icons/fileicon-ogg.png b/common/images/icons/fileicon-ogg.png new file mode 100644 index 0000000..ef4d801 Binary files /dev/null and b/common/images/icons/fileicon-ogg.png differ diff --git a/common/images/icons/fileicon-ogg.xcf b/common/images/icons/fileicon-ogg.xcf new file mode 100644 index 0000000..a91024b Binary files /dev/null and b/common/images/icons/fileicon-ogg.xcf differ diff --git a/common/images/icons/fileicon-pdf.png b/common/images/icons/fileicon-pdf.png new file mode 100644 index 0000000..8c8da92 Binary files /dev/null and b/common/images/icons/fileicon-pdf.png differ diff --git a/common/images/icons/fileicon-ps.png b/common/images/icons/fileicon-ps.png new file mode 100644 index 0000000..e872833 Binary files /dev/null and b/common/images/icons/fileicon-ps.png differ diff --git a/common/images/icons/fileicon-psd.png b/common/images/icons/fileicon-psd.png new file mode 100644 index 0000000..598f190 Binary files /dev/null and b/common/images/icons/fileicon-psd.png differ diff --git a/common/images/icons/fileicon-rm.png b/common/images/icons/fileicon-rm.png new file mode 100644 index 0000000..81dbe0b Binary files /dev/null and b/common/images/icons/fileicon-rm.png differ diff --git a/common/images/icons/fileicon-rpm.png b/common/images/icons/fileicon-rpm.png new file mode 100644 index 0000000..1903aac Binary files /dev/null and b/common/images/icons/fileicon-rpm.png differ diff --git a/common/images/icons/fileicon-svg.png b/common/images/icons/fileicon-svg.png new file mode 100644 index 0000000..b782113 Binary files /dev/null and b/common/images/icons/fileicon-svg.png differ diff --git a/common/images/icons/fileicon-tar.png b/common/images/icons/fileicon-tar.png new file mode 100644 index 0000000..e5fd1b7 Binary files /dev/null and b/common/images/icons/fileicon-tar.png differ diff --git a/common/images/icons/fileicon-tex.png b/common/images/icons/fileicon-tex.png new file mode 100644 index 0000000..a437284 Binary files /dev/null and b/common/images/icons/fileicon-tex.png differ diff --git a/common/images/icons/fileicon-ttf.png b/common/images/icons/fileicon-ttf.png new file mode 100644 index 0000000..1ed4e74 Binary files /dev/null and b/common/images/icons/fileicon-ttf.png differ diff --git a/common/images/icons/fileicon-txt.png b/common/images/icons/fileicon-txt.png new file mode 100644 index 0000000..9e988e7 Binary files /dev/null and b/common/images/icons/fileicon-txt.png differ diff --git a/common/images/icons/fileicon.png b/common/images/icons/fileicon.png new file mode 100644 index 0000000..59696a3 Binary files /dev/null and b/common/images/icons/fileicon.png differ diff --git a/common/images/info-32.png b/common/images/info-32.png new file mode 100644 index 0000000..ab09e1d Binary files /dev/null and b/common/images/info-32.png differ diff --git a/common/images/ksh/LICENSE b/common/images/ksh/LICENSE new file mode 100644 index 0000000..ba56f97 --- /dev/null +++ b/common/images/ksh/LICENSE @@ -0,0 +1,7 @@ + +button_S_italic.png +------------------- +Source : http://commons.wikimedia.org/wiki/Image:Button_S_italic.png +License: Public domain +Author : Purodha Blissenbach, http://ksh.wikipedia.org/wiki/User:Purodha + diff --git a/common/images/ksh/button_S_italic.png b/common/images/ksh/button_S_italic.png new file mode 100644 index 0000000..15496c0 Binary files /dev/null and b/common/images/ksh/button_S_italic.png differ diff --git a/common/images/link_icon.gif b/common/images/link_icon.gif new file mode 100644 index 0000000..168c1a2 Binary files /dev/null and b/common/images/link_icon.gif differ diff --git a/common/images/magnify-clip-rtl.png b/common/images/magnify-clip-rtl.png new file mode 100644 index 0000000..ff85c07 Binary files /dev/null and b/common/images/magnify-clip-rtl.png differ diff --git a/common/images/magnify-clip.png b/common/images/magnify-clip.png new file mode 100644 index 0000000..00a9cee Binary files /dev/null and b/common/images/magnify-clip.png differ diff --git a/common/images/mediawiki.png b/common/images/mediawiki.png new file mode 100644 index 0000000..8c42118 Binary files /dev/null and b/common/images/mediawiki.png differ diff --git a/common/images/nextredirectltr.png b/common/images/nextredirectltr.png new file mode 100644 index 0000000..cd657c3 Binary files /dev/null and b/common/images/nextredirectltr.png differ diff --git a/common/images/nextredirectrtl.png b/common/images/nextredirectrtl.png new file mode 100644 index 0000000..b788f33 Binary files /dev/null and b/common/images/nextredirectrtl.png differ diff --git a/common/images/poweredby_mediawiki_88x31.png b/common/images/poweredby_mediawiki_88x31.png new file mode 100644 index 0000000..30e1d2e Binary files /dev/null and b/common/images/poweredby_mediawiki_88x31.png differ diff --git a/common/images/public-domain.png b/common/images/public-domain.png new file mode 100644 index 0000000..ebf0107 Binary files /dev/null and b/common/images/public-domain.png differ diff --git a/common/images/question-small.png b/common/images/question-small.png new file mode 100644 index 0000000..f7405d2 Binary files /dev/null and b/common/images/question-small.png differ diff --git a/common/images/question.svg b/common/images/question.svg new file mode 100644 index 0000000..98fbe8d --- /dev/null +++ b/common/images/question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/common/images/redirectltr.png b/common/images/redirectltr.png new file mode 100644 index 0000000..695f2a1 Binary files /dev/null and b/common/images/redirectltr.png differ diff --git a/common/images/redirectrtl.png b/common/images/redirectrtl.png new file mode 100644 index 0000000..c954a2a Binary files /dev/null and b/common/images/redirectrtl.png differ diff --git a/common/images/remove.png b/common/images/remove.png new file mode 100644 index 0000000..cd03d6d Binary files /dev/null and b/common/images/remove.png differ diff --git a/common/images/spinner.gif b/common/images/spinner.gif new file mode 100644 index 0000000..6146be4 Binary files /dev/null and b/common/images/spinner.gif differ diff --git a/common/images/tick-32.png b/common/images/tick-32.png new file mode 100644 index 0000000..34cfa9c Binary files /dev/null and b/common/images/tick-32.png differ diff --git a/common/images/tipsy-arrow.gif b/common/images/tipsy-arrow.gif new file mode 100644 index 0000000..9f1a15b Binary files /dev/null and b/common/images/tipsy-arrow.gif differ diff --git a/common/images/tooltip_icon.png b/common/images/tooltip_icon.png new file mode 100644 index 0000000..ba5718a Binary files /dev/null and b/common/images/tooltip_icon.png differ diff --git a/common/images/warning-32.png b/common/images/warning-32.png new file mode 100644 index 0000000..0400734 Binary files /dev/null and b/common/images/warning-32.png differ diff --git a/common/images/wiki.png b/common/images/wiki.png new file mode 100644 index 0000000..48595b0 Binary files /dev/null and b/common/images/wiki.png differ diff --git a/common/oldshared.css b/common/oldshared.css new file mode 100644 index 0000000..eea8b8e --- /dev/null +++ b/common/oldshared.css @@ -0,0 +1,469 @@ +/** + * oldshared.css + * This file contains CSS settings common to Wikistandard, Nostalgia and + * CologneBlue, the old pre-Monobook skins + */ + +/* For clarity, explicitly state some recommendations from + * http://www.w3.org/TR/CSS21/sample.html to make sure the editsection links scale right + */ + +h1 { font-size: 2em; } +h2 { font-size: 1.5em; } +h3 { font-size: 1.17em; } +h4 { font-size: 1.11em; } +h5 { font-size: 1.05em; } +h6 { font-size: 1em; } +h1, h2, h3, h4, h5, h6 { + font-weight: bolder; +} + +/* Now the custom parts */ + +#footer { clear: both } +/* images */ +/* @noflip */ +div.floatright { + float: right; + clear: right; + margin: 0 0 1em 1em; +} + +/* @noflip */ +div.floatright p { + font-style: italic; +} + +/* @noflip */ +div.floatleft { + float: left; + clear: left; + margin: 0.3em 0.5em 0.5em 0; +} + +/* @noflip */ +div.floatleft p { + font-style: italic; +} + +/* table standards */ +table.rimage { + float: right; + margin-left: 1em; + margin-bottom: 1em; + text-align: center; + font-size: smaller; +} + +/* thumbnails */ +div.thumb { + margin-bottom: .5em; + border-style: solid; + border-color: white; + width: auto; +} +div.thumbinner { + border: 1px solid #ccc; + padding: 3px !important; + background-color: #f9f9f9; + font-size: 94%; + text-align: center; + overflow: hidden; +} +html .thumbimage { + border: 1px solid #ccc; +} +html .thumbcaption { + border: none; + text-align: left; + line-height: 1.4em; + padding: 3px !important; + font-size: 94%; +} +div.magnify { + float: right; + border: none !important; + background: none !important; + margin-left: 3px; +} +div.magnify a, +div.magnify img { + display: block; + border: none !important; + background: none !important; +} +/* @noflip */ +div.tright { + clear: right; + float: right; + border-width: .5em 0 .8em 1.4em; +} +/* @noflip */ +div.tleft { + float: left; + clear: left; + margin-right: .5em; + border-width: .5em 1.4em .8em 0; +} +img.thumbborder { + border: 1px solid #dddddd; +} + +/* Page history styling */ +/* the auto-generated edit comments */ +.autocomment { color: #4b4b4b; } + +img { border: none; } + +#toc, +.toc { + border: 1px solid #bba; + background-color: #f7f8ff; + padding: 5px; + font-size: 95%; + text-align: center; + display: -moz-inline-block; + display: inline-block; + display: table; + + /* IE7 and earlier */ + zoom: 1; + *display: inline; + + padding: 7px; +} +/* CSS for backwards-compatibility with cached page renders and creative uses in wikitext */ +table#toc, +table.toc { + border-collapse: collapse; +} +/* Remove additional paddings inside table-cells that are not present in
s */ +table#toc td, +table.toc td { + padding: 0; +} +#toc h2, +.toc h2 { + display: inline; + border: none; + padding: 0; + font-size: 100%; + font-weight: bold; +} +#toc ul, +.toc ul { + list-style-type: none; + list-style-image: none; + padding: 0; + text-align: left; +} +#toc ul ul, +.toc ul ul { + margin: 0 0 0 2em; +} +#toc .toctoggle, +.toc .toctoggle { + font-size: 94%; +} + +.error { + color: red; + font-size: larger; +} + +/* preference page with js-genrated toc */ +#preftoc { + float: left; + margin: 1em 1em 1em 1em; + width: 13em; +} +#preftoc li { + border: 1px solid White; +} +#preftoc li.selected { + background-color:#f9f9f9; + border:1px dashed #aaaaaa; +} +#preftoc a, +#preftoc a:active { + display: block; + color: #005189; +} +.mw-prefs-buttons { + clear: left; + float: left; + margin-top: 1em; +} +div.htmlform-tip { + font-size: 94%; + margin-top: 0.4em; + color: #666; +} +fieldset.prefsection { + margin-top: 1em; +} +fieldset.operaprefsection { + margin-left: 15em; +} + +/* emulate center */ +.center { + width: 100%; + text-align: center; +} +*.center * { + margin-left: auto; + margin-right: auto; +} + +/* small for tables and similar */ +.small { + font-size: 94%; +} +table.small { + font-size: 100%; +} + +/* use this instead of #toc for page content */ +.toccolours { + border: 1px solid #aaaaaa; + background-color: #f9f9f9; + padding: 5px; + font-size: 95%; +} +#siteNotice { + border: 1px solid #aaaaaa; + padding-left: 0.5em; + padding-right: 0.5em; +} +.redirectText { + font-size: 150%; + margin: 5px; +} +.sharedUploadNotice { + font-style: italic; +} +span.unpatrolled { + font-weight: bold; + color: red; +} + +span.updatedmarker { + color: black; + background-color: #00FF00; +} + +div.gallerybox { + width: 150px; +} + +span.comment { + font-style: italic; +} + +span.changedby { + font-size: 95%; +} + +.previewnote { + text-align: center; + color: #cc0000; +} +.editExternally { + border-style: solid; + border-width: 1px; + border-color: gray; + background: #ffffff; + padding: 3px; + margin-top: 0.5em; + float: left; + font-size: small; + text-align: center; +} +.editExternallyHelp { + font-style: italic; + color: gray; +} + +li span.deleted { + text-decoration: line-through; + color: #888; + font-style: italic; +} + +/* Classes for Exif data display */ +table.mw_metadata { + margin-left: 0.5em; +} + +table.mw_metadata caption { + font-weight: bold; +} +table.mw_metadata th { + font-weight: normal; +} +table.mw_metadata td { + padding: 0.1em; +} + +table.mw_metadata { + border: none; + border-collapse: collapse; +} +table.mw_metadata td, +table.mw_metadata th { + border: 1px solid #aaaaaa; + padding-left: 4px; + padding-right: 4px; +} +table.mw_metadata th { + background-color: #f9f9f9; +} +table.mw_metadata td { + background-color: #fcfcfc; +} +table.mw_metadata td.spacer { + background: inherit; + border-top: none; + border-bottom: none; +} +table.collapsed tr.collapsable { + display: none; +} + +.visualClear { + clear: both; +} + +/* Allmessages table */ +#allmessagestable th { + background-color: #b2b2ff; +} + +#allmessagestable tr.orig { + background-color: #ffe2e2; +} + +#allmessagestable tr.new { + background-color: #e2ffe2; +} + +#allmessagestable tr.def { + background-color: #f0f0ff; +} + +#jump-to-nav { + display: none; +} + +div.multipageimagenavbox { + border: solid 1px silver; + padding: 4px; + margin: 1em; + background: #f0f0f0; +} + +div.multipageimagenavbox div.thumb { + border: none; + margin-left: 2em; + margin-right: 2em; +} + +div.multipageimagenavbox hr { + margin: 6px; +} + +table.multipageimage td { + text-align: center; +} + +/* + Table pager (e.g. Special:Imagelist) + - remove underlines from the navigation link + - collapse borders + - set the borders to outsets (similar to Special:Allmessages) + - remove line wrapping for all td and th, set background color + - restore line wrapping for the last two table cells (description and size) +*/ +.TablePager_nav a { + text-decoration: none; +} +.TablePager { + border-collapse: collapse; +} +.TablePager, +.TablePager td, +.TablePager th { + border: 0.15em solid #777777; + padding: 0 0.15em 0 0.15em; +} +.TablePager th { + background-color: #eeeeff; +} +.TablePager td { + background-color: #ffffff; +} +.TablePager tr:hover td { + background-color: #eeeeff; +} + +.imagelist td, +.imagelist th { + white-space: nowrap; +} +.imagelist .TablePager_col_links { + background-color: #eeeeff; +} +.imagelist .TablePager_col_img_description { + white-space: normal; +} +.imagelist th.TablePager_sort { + background-color: #ccccff; +} + +.templatesUsed { + margin-top: 1em; +} + +.MediaTransformError { + border: thin solid #777; + background-color: #ccc; + padding: 0.1em; +} +.MediaTransformError td { + text-align: center; + vertical-align: middle; + font-size: 90%; +} + +form#specialpages { + display: inline; +} + +body { + direction: ltr; + unicode-bidi: embed; + background-color: #ffffec; +} +body.ns-0 { + background-color: white; +} + +/** RTL specific CSS starts here **/ + +/** + * Lists: + * The following lines don't have a visible effect on non-Gecko browsers + * They fix a problem with Gecko browsers rendering lists to the right of + * left-floated objects in an RTL layout. + */ +/* @noflip */ +html > body.rtl div#article ul { + display: table; +} +/* @noflip */ +html > body.rtl div#bodyContent ul#filetoc { + display: block; +} + +/* RTL specific CSS ends here **/ diff --git a/common/protect.js b/common/protect.js new file mode 100644 index 0000000..dc142ca --- /dev/null +++ b/common/protect.js @@ -0,0 +1,387 @@ +( function ( mw, $ ) { + +var ProtectionForm = window.ProtectionForm = { + existingMatch: false, + + /** + * Set up the protection chaining interface (i.e. "unlock move permissions" checkbox) + * on the protection form + * + * @param opts Object : parameters with members: + * tableId Identifier of the table containing UI bits + * labelText Text to use for the checkbox label + * numTypes The number of protection types + * existingMatch True if all the existing expiry times match + */ + init: function ( opts ) { + var box, boxbody, row, cell, check, label; + + if ( !( document.createTextNode && document.getElementById && document.getElementsByTagName ) ) { + return false; + } + + box = document.getElementById( opts.tableId ); + if ( !box ) { + return false; + } + + boxbody = box.getElementsByTagName( 'tbody' )[0]; + row = document.createElement( 'tr' ); + boxbody.insertBefore( row, boxbody.firstChild.nextSibling ); + + this.existingMatch = opts.existingMatch; + + cell = document.createElement( 'td' ); + row.appendChild( cell ); + // If there is only one protection type, there is nothing to chain + if ( opts.numTypes > 1 ) { + check = document.createElement( 'input' ); + check.id = 'mwProtectUnchained'; + check.type = 'checkbox'; + $( check ).click( function () { + ProtectionForm.onChainClick(); + } ); + + label = document.createElement( 'label' ); + label.htmlFor = 'mwProtectUnchained'; + label.appendChild( document.createTextNode( opts.labelText ) ); + + cell.appendChild( check ); + cell.appendChild( document.createTextNode( ' ' ) ); + cell.appendChild( label ); + + check.checked = !this.areAllTypesMatching(); + this.enableUnchainedInputs( check.checked ); + } + + $( '#mwProtect-reason' ).byteLimit( 180 ); + + this.updateCascadeCheckbox(); + + return true; + }, + + /** + * Sets the disabled attribute on the cascade checkbox depending on the current selected levels + */ + updateCascadeCheckbox: function () { + var i, lists, items, selected; + + // For non-existent titles, there is no cascade option + if ( !document.getElementById( 'mwProtect-cascade' ) ) { + return; + } + lists = this.getLevelSelectors(); + for ( i = 0; i < lists.length; i++ ) { + if ( lists[i].selectedIndex > -1 ) { + items = lists[i].getElementsByTagName( 'option' ); + selected = items[ lists[i].selectedIndex ].value; + if ( !this.isCascadeableLevel( selected ) ) { + document.getElementById( 'mwProtect-cascade' ).checked = false; + document.getElementById( 'mwProtect-cascade' ).disabled = true; + return; + } + } + } + document.getElementById( 'mwProtect-cascade' ).disabled = false; + }, + + /** + * Checks if a cerain protection level is cascadeable. + * @param level {String} + * @return {Boolean} + */ + isCascadeableLevel: function ( level ) { + var cascadeLevels, len, i; + + cascadeLevels = mw.config.get( 'wgCascadeableLevels' ); + // cascadeLevels isn't defined on all pages + if ( cascadeLevels ) { + for ( i = 0, len = cascadeLevels.length; i < len; i += 1 ) { + if ( cascadeLevels[i] === level ) { + return true; + } + } + } + return false; + }, + + /** + * When protection levels are locked together, update the rest + * when one action's level changes + * + * @param source Element Level selector that changed + */ + updateLevels: function ( source ) { + if ( !this.isUnchained() ) { + this.setAllSelectors( source.selectedIndex ); + } + this.updateCascadeCheckbox(); + }, + + /** + * When protection levels are locked together, update the + * expiries when one changes + * + * @param source Element expiry input that changed + */ + + updateExpiry: function ( source ) { + var expiry, listId, list; + + if ( !this.isUnchained() ) { + expiry = source.value; + this.forEachExpiryInput( function ( element ) { + element.value = expiry; + } ); + } + listId = source.id.replace( /^mwProtect-(\w+)-expires$/, 'mwProtectExpirySelection-$1' ); + list = document.getElementById( listId ); + if ( list && list.value !== 'othertime' ) { + if ( this.isUnchained() ) { + list.value = 'othertime'; + } else { + this.forEachExpirySelector( function ( element ) { + element.value = 'othertime'; + } ); + } + } + }, + + /** + * When protection levels are locked together, update the + * expiry lists when one changes and clear the custom inputs + * + * @param source Element expiry selector that changed + */ + updateExpiryList: function ( source ) { + var expiry; + if ( !this.isUnchained() ) { + expiry = source.value; + this.forEachExpirySelector( function ( element ) { + element.value = expiry; + } ); + this.forEachExpiryInput( function ( element ) { + element.value = ''; + } ); + } + }, + + /** + * Update chain status and enable/disable various bits of the UI + * when the user changes the "unlock move permissions" checkbox + */ + onChainClick: function () { + if ( this.isUnchained() ) { + this.enableUnchainedInputs( true ); + } else { + this.setAllSelectors( this.getMaxLevel() ); + this.enableUnchainedInputs( false ); + } + this.updateCascadeCheckbox(); + }, + + /** + * Returns true if the named attribute in all objects in the given array are matching + */ + matchAttribute: function ( objects, attrName ) { + var i, element, value; + + // Check levels + value = null; + for ( i = 0; i < objects.length; i++ ) { + element = objects[i]; + if ( value === null ) { + value = element[attrName]; + } else { + if ( value !== element[attrName] ) { + return false; + } + } + } + return true; + }, + + /** + * Are all actions protected at the same level, with the same expiry time? + * + * @return boolean + */ + areAllTypesMatching: function () { + return this.existingMatch + && this.matchAttribute( this.getLevelSelectors(), 'selectedIndex' ) + && this.matchAttribute( this.getExpirySelectors(), 'selectedIndex' ) + && this.matchAttribute( this.getExpiryInputs(), 'value' ); + }, + + /** + * Is protection chaining off? + * + * @return bool + */ + isUnchained: function () { + var element = document.getElementById( 'mwProtectUnchained' ); + return element + ? element.checked + : true; // No control, so we need to let the user set both levels + }, + + /** + * Find the highest protection level in any selector + */ + getMaxLevel: function () { + var maxIndex = -1; + this.forEachLevelSelector( function ( element ) { + if ( element.selectedIndex > maxIndex ) { + maxIndex = element.selectedIndex; + } + } ); + return maxIndex; + }, + + /** + * Protect all actions at the specified level + * + * @param index int Protection level + */ + setAllSelectors: function ( index ) { + this.forEachLevelSelector( function ( element ) { + if ( element.selectedIndex !== index ) { + element.selectedIndex = index; + } + } ); + }, + + /** + * Apply a callback to each protection selector + * + * @param func callable Callback function + */ + forEachLevelSelector: function ( func ) { + var i, selectors; + + selectors = this.getLevelSelectors(); + for ( i = 0; i < selectors.length; i++ ) { + func( selectors[i] ); + } + }, + + /** + * Get a list of all protection selectors on the page + * + * @return Array + */ + getLevelSelectors: function () { + var i, ours, all, element; + + all = document.getElementsByTagName( 'select' ); + ours = []; + for ( i = 0; i < all.length; i++ ) { + element = all[i]; + if ( element.id.match( /^mwProtect-level-/ ) ) { + ours[ours.length] = element; + } + } + return ours; + }, + + /** + * Apply a callback to each expiry input + * + * @param func callable Callback function + */ + forEachExpiryInput: function ( func ) { + var i, inputs; + + inputs = this.getExpiryInputs(); + for ( i = 0; i < inputs.length; i++ ) { + func( inputs[i] ); + } + }, + + /** + * Get a list of all expiry inputs on the page + * + * @return Array + */ + getExpiryInputs: function () { + var i, all, element, ours; + + all = document.getElementsByTagName( 'input' ); + ours = []; + for ( i = 0; i < all.length; i++ ) { + element = all[i]; + if ( element.name.match( /^mwProtect-expiry-/ ) ) { + ours[ours.length] = element; + } + } + return ours; + }, + + /** + * Apply a callback to each expiry selector list + * @param func callable Callback function + */ + forEachExpirySelector: function ( func ) { + var i, inputs; + + inputs = this.getExpirySelectors(); + for ( i = 0; i < inputs.length; i++ ) { + func( inputs[i] ); + } + }, + + /** + * Get a list of all expiry selector lists on the page + * + * @return Array + */ + getExpirySelectors: function () { + var i, all, ours, element; + + all = document.getElementsByTagName( 'select' ); + ours = []; + for ( i = 0; i < all.length; i++ ) { + element = all[i]; + if ( element.id.match( /^mwProtectExpirySelection-/ ) ) { + ours[ours.length] = element; + } + } + return ours; + }, + + /** + * Enable/disable protection selectors and expiry inputs + * + * @param val boolean Enable? + */ + enableUnchainedInputs: function ( val ) { + var first = true; + + this.forEachLevelSelector( function ( element ) { + if ( first ) { + first = false; + } else { + element.disabled = !val; + } + } ); + first = true; + this.forEachExpiryInput( function ( element ) { + if ( first ) { + first = false; + } else { + element.disabled = !val; + } + } ); + first = true; + this.forEachExpirySelector( function ( element ) { + if ( first ) { + first = false; + } else { + element.disabled = !val; + } + } ); + } +}; + +}( mediaWiki, jQuery ) ); diff --git a/common/shared.css b/common/shared.css new file mode 100644 index 0000000..6b052b3 --- /dev/null +++ b/common/shared.css @@ -0,0 +1,1216 @@ +/** + * CSS in this file is used by *all* skins (that have any CSS at all). Be + * careful what you put in here, since what looks good in one skin may not in + * another, but don't ignore the poor pre-Monobook users either. + */ + +/* GENERAL CLASSES FOR DIRECTIONALITY SUPPORT */ + +/** + * These classes should be used for text depending on the content direction. + * Content stuff like editsection, ul/ol and TOC depend on this. + */ +.mw-content-ltr { + /* @noflip */ + direction: ltr; +} +.mw-content-rtl { + /* @noflip */ + direction: rtl; +} + +/* Most input fields should be in site direction */ +.sitedir-ltr textarea, +.sitedir-ltr input { + /* @noflip */ + direction: ltr; +} +.sitedir-rtl textarea, +.sitedir-rtl input { + /* @noflip */ + direction: rtl; +} + +/* User-Agent styles for new HTML5 elements */ +mark { + background-color: yellow; + color: black; +} + +/* Input types that should follow user direction, like buttons */ +/* TODO: What about buttons in wikipage content ? */ +input[type="submit"], +input[type="button"], +input[type="reset"], +input[type="file"] { + direction: ltr; +} + +/* Override default values */ +textarea[dir="ltr"], +input[dir="ltr"] { + /* @noflip */ + direction: ltr; +} +textarea[dir="rtl"], +input[dir="rtl"] { + /* @noflip */ + direction: rtl; +} + +/* Default style for semantic tags */ +abbr[title], +.explain[title] { + border-bottom: 1px dotted; + cursor: help; +} + +/* Colored watchlist and recent changes numbers */ +.mw-plusminus-pos { + color: #006400; /* dark green */ +} +.mw-plusminus-neg { + color: #8b0000; /* dark red */ +} +.mw-plusminus-null { + color: #aaa; /* gray */ +} + +/** + * Links to redirects appear italicized on [[Special:AllPages]], [[Special:PrefixIndex]], + * [[Special:Watchlist/edit]] and in category listings. + */ +.allpagesredirect, +.redirect-in-category, +.watchlistredir { + font-style: italic; +} + +/* Comment and username portions of RC entries */ +span.comment { + font-style: italic; +} + +span.changedby { + font-size: 95%; +} + +/* Math */ +.texvc { + direction: ltr; + unicode-bidi: embed; +} +img.tex { + vertical-align: middle; +} +span.texhtml { + font-family: serif; +} + +/** + * Add a bit of margin space between the preview and the toolbar. + * This replaces the ugly


we used to insert into the page source + */ +#wikiPreview.ontop { + margin-bottom: 1em; +} + +/* Stop floats from intruding into edit area in previews */ +#editform, +#toolbar, +#wpTextbox1 { + clear: both; +} + +#toolbar img { + cursor: pointer; +} + +/** + * File description page + */ + +div.mw-filepage-resolutioninfo { + font-size: smaller; +} + +/** + * File histories + */ +h2#filehistory { + clear: both; +} + +table.filehistory th, +table.filehistory td { + vertical-align: top; +} +table.filehistory th { + text-align: left; +} +table.filehistory td.mw-imagepage-filesize, +table.filehistory th.mw-imagepage-filesize { + white-space: nowrap; +} + +table.filehistory td.filehistory-selected { + font-weight: bold; +} + +/** + * Add a checkered background image on hover for file + * description pages. (bug 26470) + */ +.filehistory a img, +#file img:hover { + /* @embed */ + background: white url(images/Checker-16x16.png) repeat; +} + +/** + * rev_deleted stuff + */ +li span.deleted, +span.history-deleted { + text-decoration: line-through; + color: #888; + font-style: italic; +} + +/** + * Patrol stuff + */ +.not-patrolled { + background-color: #ffa; +} + +.unpatrolled { + font-weight: bold; + color: red; +} + +div.patrollink { + font-size: 75%; + text-align: right; +} + +/** + * Forms + */ +td.mw-label { + text-align: right; +} +td.mw-input { + text-align: left; +} +td.mw-submit { + text-align: left; +} + +td.mw-label { + vertical-align: top; +} +.prefsection td.mw-label { + width: 20%; +} +.prefsection table { + width: 100%; +} +.prefsection table.mw-htmlform-matrix { + width: auto; +} + +.mw-icon-question { + /* SVG support using a transparent gradient to guarantee cross-browser + * compatibility (browsers able to understand gradient syntax support also SVG). + * http://pauginer.tumblr.com/post/36614680636/invisible-gradient-technique */ + background-image: url(images/question-small.png); + /* @embed */ + background-image: -webkit-linear-gradient(transparent, transparent), url(images/question.svg); + /* @embed */ + background-image: linear-gradient(transparent, transparent), url(images/question.svg); + background-repeat: no-repeat; + background-size: 13px 13px; + display: inline-block; + height: 13px; + width: 13px; + margin-left: 4px; +} + +.mw-icon-question:lang(ar), +.mw-icon-question:lang(fa), +.mw-icon-question:lang(ur) { + -webkit-transform: scaleX(-1); + -ms-transform: scaleX(-1); + transform: scaleX(-1); +} + +td.mw-submit { + white-space: nowrap; +} + +table.mw-htmlform-nolabel td.mw-label { + width: 1px; +} + +tr.mw-htmlform-vertical-label td.mw-label { + text-align: left !important; +} + +.mw-htmlform-invalid-input td.mw-input input { + border-color: red; +} + +.mw-htmlform-flatlist div.mw-htmlform-flatlist-item { + display: inline; + margin-right: 1em; + white-space: nowrap; +} + +.mw-htmlform-matrix td { + padding-left: 0.5em; + padding-right: 0.5em; +} + +input#wpSummary { + width: 80%; + margin-bottom: 1em; +} + +/** + * Image captions + */ +/* @noflip */ +.mw-content-ltr .thumbcaption { + text-align: left; +} +/* @noflip */ +.mw-content-rtl .thumbcaption { + text-align: right; +} +/* @noflip */ +.mw-content-ltr .magnify { + float: right; +} +/* @noflip */ +.mw-content-rtl .magnify { + float: left; +} + +/** + * Categories + */ +#catlinks { + /** + * Overrides text justification (user preference) + * See bug 31990 + */ + text-align: left; +} +.catlinks ul { + display: inline; + margin: 0; + padding: 0; + list-style: none; + list-style-type: none; + list-style-image: none; + vertical-align: middle !ie; +} + +.catlinks li { + display: inline-block; + line-height: 1.25em; + border-left: 1px solid #AAA; + margin: 0.125em 0; + padding: 0 0.5em; + zoom: 1; + display: inline !ie; +} + +.catlinks li:first-child { + padding-left: 0.25em; + border-left: none; +} + +/* (bug 5346) make category redirects italic */ +.catlinks li a.mw-redirect { + font-style: italic; +} +/** + * Hidden categories + */ +.mw-hidden-cats-hidden { + display: none; +} +.catlinks-allhidden { + display: none; +} + +/* Convenience links to edit block, delete and protect reasons */ +p.mw-ipb-conveniencelinks, +p.mw-protect-editreasons, +p.mw-filedelete-editreasons, +p.mw-delete-editreasons, +p.mw-revdel-editreasons { + font-size: 90%; + text-align: right; +} + +/** + * OpenSearch ajax suggestions + */ +.os-suggest { + overflow: auto; + overflow-x: hidden; + position: absolute; + top: 0; + left: 0; + width: 0; + background-color: white; + border-style: solid; + border-color: #AAAAAA; + border-width: 1px; + z-index:99; + font-size:95%; +} + +table.os-suggest-results { + font-size: 95%; + cursor: pointer; + border: 0; + border-collapse: collapse; + width: 100%; +} + +.os-suggest-result, +.os-suggest-result-hl { + white-space: nowrap; + background-color: white; + color: black; + padding: 2px; +} +.os-suggest-result-hl, +.os-suggest-result-hl-webkit { + background-color: #4C59A6; + color: white; +} + +.os-suggest-toggle { + position: relative; + left: 1ex; + font-size: 65%; +} +.os-suggest-toggle-def { + position: absolute; + top: 0; + left: 0; + font-size: 65%; + visibility: hidden; +} + +/* Page history styling */ + +/* The auto-generated edit comments */ +.autocomment { + color: gray; +} +#pagehistory .history-user { + margin-left: 0.4em; + margin-right: 0.2em; +} +#pagehistory span.minor { + font-weight: bold; +} +#pagehistory li { + border: 1px solid white; +} +#pagehistory li.selected { + background-color: #f9f9f9; + border: 1px dashed #aaa; +} + +.mw-history-revisiondelete-button, #mw-fileduplicatesearch-icon { + float: right; +} + +/** Generic minor/bot/newpage styling (recent changes) */ +.newpage, +.minoredit, +.botedit { + font-weight: bold; +} + +#shared-image-dup, +#shared-image-conflict { + font-style: italic; +} + +/** + * Recreating deleted page warning + * Reupload file warning + * Page protection warning + * incl. log entries for these warnings + */ +div.mw-warning-with-logexcerpt { + padding: 3px; + margin-bottom: 3px; + border: 2px solid #2F6FAB; + clear: both; +} +div.mw-warning-with-logexcerpt ul li { + font-size: 90%; +} + +/* (show/hide) revision deletion links */ +span.mw-revdelundel-link, +strong.mw-revdelundel-link { + font-size: 90%; +} +span.mw-revdelundel-hidden, +input.mw-revdelundel-hidden { + visibility: hidden; +} + +td.mw-revdel-checkbox, +th.mw-revdel-checkbox { + padding-right: 10px; + text-align: center; +} + +/* red links; see bug 36276 */ +a.new { + color: #BA0000; +} + +/* feed links */ +a.feedlink { + /* SVG support using a transparent gradient to guarantee cross-browser + * compatibility (browsers able to understand gradient syntax support also SVG). + * http://pauginer.tumblr.com/post/36614680636/invisible-gradient-technique */ + background-image: url(images/feed-icon.png); + /* @embed */ + background-image: -webkit-linear-gradient(transparent, transparent), url(images/feed-icon.svg); + /* @embed */ + background-image: linear-gradient(transparent, transparent), url(images/feed-icon.svg); + background-position: center left; + background-repeat: no-repeat; + background-size: 12px 12px; + padding-left: 16px; +} + +/* Plainlinks - this can be used to switch + * off special external link styling */ +.plainlinks a { + background: none !important; + padding: 0 !important; +} +/* External URLs should always be treated as LTR (bug 4330) */ +/* @noflip */ .rtl a.external.free, +.rtl a.external.autonumber { + direction: ltr; + unicode-bidi: embed; +} + +/** + * wikitable class for skinning normal tables + * keep in sync with commonPrint.css + */ +table.wikitable { + margin: 1em 0; + background-color: #f9f9f9; + border: 1px #aaa solid; + border-collapse: collapse; + color: black; +} +table.wikitable > tr > th, +table.wikitable > tr > td, +table.wikitable > * > tr > th, +table.wikitable > * > tr > td { + border: 1px #aaa solid; + padding: 0.2em; +} +table.wikitable > tr > th, +table.wikitable > * > tr > th { + background-color: #f2f2f2; + text-align: center; +} +table.wikitable > caption { + font-weight: bold; +} + +/** + * Hide collapsable rows in a collapsed table. + * + * Used by ImagePage and the mediawiki.action.view.metadata module. + */ +table.collapsed tr.collapsable { + display: none; +} + +/* success and error messages */ +.error, +.warning, +.success { + font-size: larger; +} +.error { + color: #cc0000; +} +.warning { + color: #705000; +} +.success { + color: #009000; +} + +.errorbox, +.warningbox, +.successbox { + border: 1px solid; + padding: .5em 1em; + margin-bottom: 1em; + display: -moz-inline-block; + display: inline-block; + zoom: 1; + *display: inline; +} +.errorbox h2, +.warningbox h2, +.successbox h2 { + font-size: 1em; + color: inherit; + font-weight: bold; + display: inline; + margin: 0 .5em 0 0; + border: none; +} +.errorbox { + color: #cc0000; + border-color: #fac5c5; + background-color: #fae3e3; +} +.warningbox { + color: #705000; + border-color: #fde29b; + background-color: #fdf1d1; +} +.successbox { + color: #009000; + border-color: #b7fdb5; + background-color: #e1fddf; +} + +/* general info/warning box for SP */ +.mw-infobox { + border: 2px solid #ff7f00; + margin: 0.5em; + clear: left; + overflow: hidden; +} + +.mw-infobox-left { + margin: 7px; + float: left; + width: 35px; +} + +.mw-infobox-right { + margin: 0.5em 0.5em 0.5em 49px; +} + +/* Note on preview page */ +.previewnote { + color: #c00; + margin-bottom: 1em; +} + +.previewnote p { + text-indent: 3em; + margin: 0.8em 0; +} + +.visualClear { + clear: both; +} + +/** + * Data table style + * + * Transparent table with suddle borders + * and blue row-highlighting. + */ +.mw-datatable { + border-collapse: collapse; +} +.mw-datatable, +.mw-datatable td, +.mw-datatable th { + border: 1px solid #aaaaaa; + padding: 0 0.15em 0 0.15em; +} +.mw-datatable th { + background-color: #ddddff; +} +.mw-datatable td { + background-color: #ffffff; +} +.mw-datatable tr:hover td { + background-color: #eeeeff; +} + + +/** + * TablePager tables generated by the TablePager PHP class + * in MediaWiki (e.g. Special:ListFiles). + */ +.TablePager { + min-width: 80%; +} +.TablePager_nav { + margin: 0 auto; +} +.TablePager_nav td { + padding: 3px; + text-align: center; +} +.TablePager_nav a { + text-decoration: none; +} + +.imagelist td, +.imagelist th { + white-space: nowrap; +} +.imagelist .TablePager_col_links { + background-color: #eeeeff; +} +.imagelist .TablePager_col_img_description { + white-space: normal; +} +.imagelist th.TablePager_sort { + background-color: #ccccff; +} + +/* filetoc */ +ul#filetoc { + text-align: center; + border: 1px solid #aaaaaa; + background-color: #f9f9f9; + padding: 5px; + font-size: 95%; + margin-bottom: 0.5em; + margin-left: 0; + margin-right: 0; +} + +#filetoc li { + display: inline; + list-style-type: none; + padding-right: 2em; +} + +/* Classes for Exif data display */ +table.mw_metadata { + font-size: 0.8em; + margin-left: 0.5em; + margin-bottom: 0.5em; + width: 400px; +} + +table.mw_metadata caption { + font-weight: bold; +} + +table.mw_metadata th { + font-weight: normal; +} + +table.mw_metadata td { + padding: 0.1em; +} + +table.mw_metadata { + border: none; + border-collapse: collapse; +} + +table.mw_metadata td, +table.mw_metadata th { + text-align: center; + border: 1px solid #aaaaaa; + padding-left: 5px; + padding-right: 5px; +} + +table.mw_metadata th { + background-color: #f9f9f9; +} + +table.mw_metadata td { + background-color: #fcfcfc; +} + +table.mw_metadata ul.metadata-langlist { + list-style-type: none; + list-style-image: none; + padding-right: 5px; + padding-left: 5px; + margin: 0; +} + +/* Correct directionality when page dir is different from site/user dir */ +.mw-content-ltr ul, +.mw-content-rtl .mw-content-ltr ul { + /* @noflip */ + margin: 0.3em 0 0 1.6em; + padding: 0; +} +.mw-content-rtl ul, +.mw-content-ltr .mw-content-rtl ul { + /* @noflip */ + margin: 0.3em 1.6em 0 0; + padding: 0; +} +.mw-content-ltr ol, +.mw-content-rtl .mw-content-ltr ol { + /* @noflip */ + margin: 0.3em 0 0 3.2em; + padding: 0; +} +.mw-content-rtl ol, +.mw-content-ltr .mw-content-rtl ol { + /* @noflip */ + margin: 0.3em 3.2em 0 0; + padding: 0; +} +/* @noflip */ +.mw-content-ltr dd, +.mw-content-rtl .mw-content-ltr dd { + margin-left: 1.6em; + margin-right: 0; +} +/* @noflip */ +.mw-content-rtl dd, +.mw-content-ltr .mw-content-rtl dd { + margin-right: 1.6em; + margin-left: 0; +} + +/* Galleries */ +/* These display attributes look nonsensical, but are needed to support IE and FF2 */ +/* Don't forget to update commonPrint.css */ +li.gallerybox { + vertical-align: top; + display: -moz-inline-box; + display: inline-block; +} + +ul.gallery, +li.gallerybox { + zoom: 1; + *display: inline; +} + +ul.gallery { + margin: 2px; + padding: 2px; + display: block; +} + +li.gallerycaption { + font-weight: bold; + text-align: center; + display: block; + word-wrap: break-word; +} + +li.gallerybox div.thumb { + text-align: center; + border: 1px solid #ccc; + background-color: #f9f9f9; + margin: 2px; +} + +li.gallerybox div.thumb img { + display: block; + margin: 0 auto; +} + +div.gallerytext { + overflow: hidden; + font-size: 94%; + padding: 2px 4px; + word-wrap: break-word; +} + +/* new gallery stuff */ +ul.mw-gallery-nolines li.gallerybox div.thumb { + background-color: transparent; + border: none; +} + +ul.mw-gallery-nolines li.gallerybox div.gallerytext { + text-align: center; +} + +/* height constrained gallery */ + +ul.mw-gallery-packed li.gallerybox div.thumb, +ul.mw-gallery-packed-overlay li.gallerybox div.thumb, +ul.mw-gallery-packed-hover li.gallerybox div.thumb { + background-color: transparent; + border: none; +} +ul.mw-gallery-packed li.gallerybox div.thumb img, +ul.mw-gallery-packed-overlay li.gallerybox div.thumb img, +ul.mw-gallery-packed-hover li.gallerybox div.thumb img { + margin: 0 auto; +} + +ul.mw-gallery-packed-hover li.gallerybox, +ul.mw-gallery-packed-overlay li.gallerybox { + position:relative; +} + +ul.mw-gallery-packed-hover div.gallerytextwrapper { + overflow: hidden; + height: 0; +} + +ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper, +ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper, +ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper { + position:absolute; + background: white; + background: rgba(255, 255, 255, 0.8); + padding: 5px 10px; + bottom: 0; + left: 0; /* Needed for IE */ + height: auto; + font-weight: bold; + margin: 2px; /* correspond to style on div.thumb */ +} + +ul.mw-gallery-packed-hover, +ul.mw-gallery-packed-overlay, +ul.mw-gallery-packed { + text-align: center; +} + +.mw-ajax-loader { + /* @embed */ + background-image: url(images/ajax-loader.gif); + background-position: center center; + background-repeat: no-repeat; + padding: 16px; + position: relative; + top: -16px; +} + +.mw-small-spinner { + padding: 10px !important; + margin-right: 0.6em; + /* @embed */ + background-image: url(images/spinner.gif); + background-position: center center; + background-repeat: no-repeat; +} + +/* Language specific height correction for titles. Ref Bug 29405 and Bug 30809 */ +/* Languages like hi or ml require slightly more vertical space to show diacritics properly */ +h1:lang(anp), +h1:lang(as), +h1:lang(bh), /* Macrolanguage, used on bh.wikipedia.org, should be removed one day */ +h1:lang(bho), +h1:lang(bn), +h1:lang(gu), +h1:lang(hi), +h1:lang(kn), +h1:lang(ks), +h1:lang(ml), +h1:lang(mr), +h1:lang(my), +h1:lang(mai), +h1:lang(ne), +h1:lang(new), +h1:lang(or), +h1:lang(pa), +h1:lang(pi), +h1:lang(sa), +h1:lang(ta), +h1:lang(te) { + line-height: 1.6em !important; +} +h2:lang(anp), h3:lang(anp), h4:lang(anp), h5:lang(anp), h6:lang(anp), +h2:lang(as), h3:lang(as), h4:lang(as), h5:lang(as), h6:lang(as), +h2:lang(bho), h3:lang(bho), h4:lang(bho), h5:lang(bho), h6:lang(bho), +h2:lang(bh), h3:lang(bh), h4:lang(bh), h5:lang(bh), h6:lang(bh), +h2:lang(bn), h3:lang(bn), h4:lang(bn), h5:lang(bn), h6:lang(bn), +h2:lang(gu), h3:lang(gu), h4:lang(gu), h5:lang(gu), h6:lang(gu), +h2:lang(hi), h3:lang(hi), h4:lang(hi), h5:lang(hi), h6:lang(hi), +h2:lang(kn), h3:lang(kn), h4:lang(kn), h5:lang(kn), h6:lang(kn), +h2:lang(ks), h3:lang(ks), h4:lang(ks), h5:lang(ks), h6:lang(ks), +h2:lang(ml), h3:lang(ml), h4:lang(ml), h5:lang(ml), h6:lang(ml), +h2:lang(mr), h3:lang(mr), h4:lang(mr), h5:lang(mr), h6:lang(mr), +h2:lang(my), h3:lang(my), h4:lang(my), h5:lang(my), h6:lang(my), +h2:lang(mai), h3:lang(mai), h4:lang(mai), h5:lang(mai), h6:lang(mai), +h2:lang(ne), h3:lang(ne), h4:lang(ne), h5:lang(ne), h6:lang(ne), +h2:lang(new), h3:lang(new), h4:lang(new), h5:lang(new), h6:lang(new), +h2:lang(or), h3:lang(or), h4:lang(or), h5:lang(or), h6:lang(or), +h2:lang(pa), h3:lang(pa), h4:lang(pa), h5:lang(pa), h6:lang(pa), +h2:lang(pi), h3:lang(pi), h4:lang(pi), h5:lang(pi), h6:lang(pi), +h2:lang(sa), h3:lang(sa), h4:lang(sa), h5:lang(sa), h6:lang(sa), +h2:lang(ta), h3:lang(ta), h4:lang(ta), h5:lang(ta), h6:lang(ta), +h2:lang(te), h3:lang(te), h4:lang(te), h5:lang(te), h6:lang(te) { + line-height: 1.2em; +} + +/* Localised ordered list numbering for some languages */ +ol:lang(bcc) li, +ol:lang(bqi) li, +ol:lang(fa) li, +ol:lang(glk) li, +ol:lang(kk-arab) li, +ol:lang(mzn) li { + list-style-type: -moz-persian; + list-style-type: persian; +} + +ol:lang(ckb) li { + list-style-type: -moz-arabic-indic; + list-style-type: arabic-indic; +} + +ol:lang(hi) li, +ol:lang(mr) li { + list-style-type: -moz-devanagari; + list-style-type: devanagari; +} + +ol:lang(as) li, +ol:lang(bn) li { + list-style-type: -moz-bengali; + list-style-type: bengali; +} + +ol:lang(or) li { + list-style-type: -moz-oriya; + list-style-type: oriya; +} + +#toc ul, .toc ul { + margin: .3em 0; +} + +/* Correct directionality when page dir is different from site/user dir */ +/* @noflip */ .mw-content-ltr .toc ul, +.mw-content-ltr #toc ul, +.mw-content-rtl .mw-content-ltr .toc ul, +.mw-content-rtl .mw-content-ltr #toc ul { + text-align: left; +} +/* @noflip */ .mw-content-rtl .toc ul, +.mw-content-rtl #toc ul, +.mw-content-ltr .mw-content-rtl .toc ul, +.mw-content-ltr .mw-content-rtl #toc ul { + text-align: right; +} +/* @noflip */ .mw-content-ltr .toc ul ul, +.mw-content-ltr #toc ul ul, +.mw-content-rtl .mw-content-ltr .toc ul ul, +.mw-content-rtl .mw-content-ltr #toc ul ul { + margin: 0 0 0 2em; +} +/* @noflip */ .mw-content-rtl .toc ul ul, +.mw-content-rtl #toc ul ul, +.mw-content-ltr .mw-content-rtl .toc ul ul, +.mw-content-ltr .mw-content-rtl #toc ul ul { + margin: 0 2em 0 0; +} + +#toc #toctitle, +.toc #toctitle, +#toc .toctitle, +.toc .toctitle { + direction: ltr; +} + +/* tooltip styles */ +.mw-help-field-hint { + display: none; + margin-left: 2px; + margin-bottom: -8px; + padding: 0 0 0 15px; + /* @embed */ + background-image: url(images/help-question.gif); + background-position: left center; + background-repeat: no-repeat; + cursor: pointer; + font-size: .8em; + text-decoration: underline; + color: #0645ad; +} +.mw-help-field-hint:hover { + /* @embed */ + background-image: url(images/help-question-hover.gif); +} +.mw-help-field-data { + display: block; + background-color: #d6f3ff; + padding:5px 8px 4px 8px; + border: 1px solid #5dc9f4; + margin-left: 20px; +} +.tipsy { + padding: 5px 5px 10px; + font-size: 12px; + position: absolute; + z-index: 100000; + overflow: visible; +} +.tipsy-inner { + padding: 5px 8px 4px 8px; + background-color: #d6f3ff; + color: black; + border: 1px solid #5dc9f4; + max-width: 300px; + text-align: left; +} +.tipsy-arrow { + position: absolute; + /* @embed */ + background: url(images/tipsy-arrow.gif) no-repeat top left; + width: 13px; + height: 13px; +} +.tipsy-se .tipsy-arrow { + bottom: -2px; + right: 10px; + background-position: 0% 100%; +} + +#mw-clearyourcache, +#mw-sitecsspreview, +#mw-sitejspreview, +#mw-usercsspreview, +#mw-userjspreview { + direction: ltr; + unicode-bidi: embed; +} + +/* Correct user & content directionality when viewing a diff */ +.diff-currentversion-title, +.diff { + direction: ltr; + unicode-bidi: embed; +} +/* @noflip */ .diff-contentalign-right td { + direction: rtl; + unicode-bidi: embed; +} +/* @noflip */ .diff-contentalign-left td { + direction: ltr; + unicode-bidi: embed; +} +.diff-multi, +.diff-otitle, +.diff-ntitle, +.diff-lineno { + direction: ltr !important; + unicode-bidi: embed; +} + +#mw-revision-info, +#mw-revision-info-current, +#mw-revision-nav { + direction: ltr; + display: inline; +} + +/* Images */ + +/* @noflip */ div.tright, +div.floatright, +table.floatright { + clear: right; + float: right; +} +/* @noflip */ div.tleft, +div.floatleft, +table.floatleft { + float: left; + clear: left; +} +div.floatright, +table.floatright, +div.floatleft, +table.floatleft { + position: relative; +} + +/* bug 12205 */ +#mw-credits a { + unicode-bidi: embed; +} + +/* Accessibility */ +.mw-jump, +#jump-to-nav { + overflow: hidden; + height: 0; + zoom: 1; /* http://webaim.org/techniques/skipnav/#iequirk */ +} + +/* Print footer should be hidden by default in screen. */ +.printfooter { + display: none; +} + +/* For developers */ +.xdebug-error { + position: absolute; + z-index: 99; +} + +.mw-editsection, +.toctoggle, +#jump-to-nav { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} + +/* Display editsection links smaller and next to headings */ +.mw-editsection, +.mw-editsection-like { + font-size: small; + font-weight: normal; + margin-left: 1em; + vertical-align: baseline; + /* Reset line-height; headings tend to have it set to larger values */ + line-height: 1em; + /* As .mw-editsection is a (inline element), it is treated as part */ + /* of the heading content when selecting text by multiple clicks and thus */ + /* selected together with heading content, despite the user-select: none; */ + /* rule set above. This enforces non-selection without changing the look. */ + display: inline-block; +} + +/* Correct directionality when page dir is different from site/user dir */ +/* @noflip */ +.mw-content-ltr .mw-editsection, +.mw-content-rtl .mw-content-ltr .mw-editsection { + margin-left: 1em; +} +/* @noflip */ +.mw-content-rtl .mw-editsection, +.mw-content-ltr .mw-content-rtl .mw-editsection { + margin-right: 1em; +} + +/* Prevent citations and subscripts from interfering with the line-height */ +sup, +sub { + line-height: 1; +} diff --git a/common/upload.js b/common/upload.js new file mode 100644 index 0000000..7933caf --- /dev/null +++ b/common/upload.js @@ -0,0 +1,355 @@ +/*jshint camelcase:false */ +( function ( mw, $ ) { +var licenseSelectorCheck, wgUploadWarningObj, wgUploadLicenseObj, fillDestFilename, + ajaxUploadDestCheck = mw.config.get( 'wgAjaxUploadDestCheck' ), + fileExtensions = mw.config.get( 'wgFileExtensions' ), + $spinnerDestCheck, $spinnerLicense; + +licenseSelectorCheck = window.licenseSelectorCheck = function () { + var selector = document.getElementById( 'wpLicense' ), + selection = selector.options[selector.selectedIndex].value; + if ( selector.selectedIndex > 0 ) { + if ( !selection ) { + // Option disabled, but browser is broken and doesn't respect this + selector.selectedIndex = 0; + } + } + // We might show a preview + wgUploadLicenseObj.fetchPreview( selection ); +}; + +function uploadSetup() { + // Disable URL box if the URL copy upload source type is not selected + var ein, + selector, ua, isMacIe, i, + optionsTable, row, td, + wpLicense, wpLicenseRow, wpLicenseTbody, + uploadSourceIds, len, onchange, + e = document.getElementById( 'wpSourceTypeurl' ); + if ( e ) { + if ( !e.checked ) { + ein = document.getElementById( 'wpUploadFileURL' ); + if ( ein ) { + ein.disabled = true; + } + } + } + + // For MSIE/Mac: non-breaking spaces cause the