diff options
Diffstat (limited to 'resources/mediawiki.special')
26 files changed, 0 insertions, 1434 deletions
diff --git a/resources/mediawiki.special/images/glyph-people-large.png b/resources/mediawiki.special/images/glyph-people-large.png Binary files differdeleted file mode 100644 index 0578be0b..00000000 --- a/resources/mediawiki.special/images/glyph-people-large.png +++ /dev/null diff --git a/resources/mediawiki.special/images/icon-contributors.png b/resources/mediawiki.special/images/icon-contributors.png Binary files differdeleted file mode 100644 index f933aa69..00000000 --- a/resources/mediawiki.special/images/icon-contributors.png +++ /dev/null diff --git a/resources/mediawiki.special/images/icon-edits.png b/resources/mediawiki.special/images/icon-edits.png Binary files differdeleted file mode 100644 index 39f4f2de..00000000 --- a/resources/mediawiki.special/images/icon-edits.png +++ /dev/null diff --git a/resources/mediawiki.special/images/icon-lock.png b/resources/mediawiki.special/images/icon-lock.png Binary files differdeleted file mode 100644 index 03f0eecd..00000000 --- a/resources/mediawiki.special/images/icon-lock.png +++ /dev/null diff --git a/resources/mediawiki.special/images/icon-pages.png b/resources/mediawiki.special/images/icon-pages.png Binary files differdeleted file mode 100644 index 59513db2..00000000 --- a/resources/mediawiki.special/images/icon-pages.png +++ /dev/null diff --git a/resources/mediawiki.special/mediawiki.special.block.js b/resources/mediawiki.special/mediawiki.special.block.js deleted file mode 100644 index b8bcf177..00000000 --- a/resources/mediawiki.special/mediawiki.special.block.js +++ /dev/null @@ -1,46 +0,0 @@ -/** - * JavaScript for Special:Block - */ -( function ( mw, $ ) { - $( function () { - var $blockTarget = $( '#mw-bi-target' ), - $anonOnlyRow = $( '#mw-input-wpHardBlock' ).closest( 'tr' ), - $enableAutoblockRow = $( '#mw-input-wpAutoBlock' ).closest( 'tr' ), - $hideUser = $( '#mw-input-wpHideUser' ).closest( 'tr' ), - $watchUser = $( '#mw-input-wpWatch' ).closest( 'tr' ); - - function updateBlockOptions( instant ) { - var blocktarget = $.trim( $blockTarget.val() ), - isEmpty = blocktarget === '', - isIp = mw.util.isIPv4Address( blocktarget, true ) || mw.util.isIPv6Address( blocktarget, true ), - isIpRange = isIp && blocktarget.match( /\/\d+$/ ); - - if ( isIp && !isEmpty ) { - $enableAutoblockRow.goOut( instant ); - $hideUser.goOut( instant ); - } else { - $enableAutoblockRow.goIn( instant ); - $hideUser.goIn( instant ); - } - if ( !isIp && !isEmpty ) { - $anonOnlyRow.goOut( instant ); - } else { - $anonOnlyRow.goIn( instant ); - } - if ( isIpRange && !isEmpty ) { - $watchUser.goOut( instant ); - } else { - $watchUser.goIn( instant ); - } - } - - if ( $blockTarget.length ) { - // Bind functions so they're checked whenever stuff changes - $blockTarget.keyup( updateBlockOptions ); - - // Call them now to set initial state (ie. Special:Block/Foobar?wpBlockExpiry=2+hours) - updateBlockOptions( /* instant= */ true ); - } - } ); -}( mediaWiki, jQuery ) ); - diff --git a/resources/mediawiki.special/mediawiki.special.changeemail.css b/resources/mediawiki.special/mediawiki.special.changeemail.css deleted file mode 100644 index 9461fbdc..00000000 --- a/resources/mediawiki.special/mediawiki.special.changeemail.css +++ /dev/null @@ -1,19 +0,0 @@ -#mw-emailaddress-validity { - padding: 2px 1em; -} -#mw-emailaddress-validity { - border-bottom-right-radius: 0.8em; - border-top-right-radius: 0.8em; -} - -/** colors also used in mediawiki.special.preferences.css */ -#mw-emailaddress-validity.valid { - border: 1px solid #80FF80; - background-color: #C0FFC0; - color: black; -} -#mw-emailaddress-validity.invalid { - border: 1px solid #FF8080; - background-color: #FFC0C0; - color: black; -} diff --git a/resources/mediawiki.special/mediawiki.special.changeemail.js b/resources/mediawiki.special/mediawiki.special.changeemail.js deleted file mode 100644 index 2d22bad0..00000000 --- a/resources/mediawiki.special/mediawiki.special.changeemail.js +++ /dev/null @@ -1,42 +0,0 @@ -/** - * JavaScript for Special:ChangeEmail - */ -( function ( mw, $ ) { - /** - * Given an email validity status (true, false, null) update the label CSS class - */ - function updateMailValidityLabel( mail ) { - var isValid = mw.util.validateEmail( mail ), - $label = $( '#mw-emailaddress-validity' ); - - // We allow empty address - if ( isValid === null ) { - $label.text( '' ).removeClass( 'valid invalid' ); - - // Valid - } else if ( isValid ) { - $label.text( mw.msg( 'email-address-validity-valid' ) ).addClass( 'valid' ).removeClass( 'invalid' ); - - // Not valid - } else { - $label.text( mw.msg( 'email-address-validity-invalid' ) ).addClass( 'invalid' ).removeClass( 'valid' ); - } - } - - $( function () { - // Lame tip to let user know if its email is valid. See bug 22449. - // Only bind once for 'blur' so that the user can fill it in without errors; - // after that, look at every keypress for immediate feedback. - $( '#wpNewEmail' ).one( 'blur', function () { - var $this = $( this ); - if ( $( '#mw-emailaddress-validity' ).length === 0 ) { - $this.after( '<label for="wpNewEmail" id="mw-emailaddress-validity"></label>' ); - } - - updateMailValidityLabel( $this.val() ); - $this.keyup( function () { - updateMailValidityLabel( $this.val() ); - } ); - } ); - } ); -}( mediaWiki, jQuery ) ); diff --git a/resources/mediawiki.special/mediawiki.special.changeslist.css b/resources/mediawiki.special/mediawiki.special.changeslist.css deleted file mode 100644 index 5e4af7b6..00000000 --- a/resources/mediawiki.special/mediawiki.special.changeslist.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Styling for Special:Watchlist and Special:RecentChanges - */ - -.mw-changeslist-line-watched .mw-title { - font-weight: bold; -} diff --git a/resources/mediawiki.special/mediawiki.special.changeslist.enhanced.css b/resources/mediawiki.special/mediawiki.special.changeslist.enhanced.css deleted file mode 100644 index bed580d7..00000000 --- a/resources/mediawiki.special/mediawiki.special.changeslist.enhanced.css +++ /dev/null @@ -1,66 +0,0 @@ -/** - * Styling for Special:Watchlist and Special:RecentChanges when preference 'usenewrc' - * a.k.a. Enhanced Recent Changes is enabled. - */ - -table.mw-enhanced-rc { - border: 0; - border-spacing: 0; -} - -table.mw-enhanced-rc th, -table.mw-enhanced-rc td { - padding: 0; - vertical-align: top; -} - -td.mw-enhanced-rc { - white-space: nowrap; - font-family: monospace; -} - -.mw-enhanced-rc-time { - font-family: monospace; -} - -table.mw-enhanced-rc td.mw-enhanced-rc-nested { - padding-left: 1em; -} - -/* Show/hide arrows in enhanced changeslist */ -.mw-enhanced-rc .collapsible-expander { - float: none; -} - -/* If JS is disabled, the arrows or the placeholder space shouldn't be shown */ -.client-nojs .mw-enhancedchanges-arrow-space { - display: none; -} - -/* - * And if it's enabled, let's optimize the collapsing a little: hide the rows - * that would be hidden by jquery.makeCollapsible with CSS to save us some - * reflows and repaints. This doesn't work on browsers that don't fully support - * CSS2 (IE6), but it's okay, this will be done in JavaScript with old degraded - * performance instead. - */ -.client-js table.mw-enhanced-rc.mw-collapsed tr + tr { - display: none; -} - -.mw-enhancedchanges-arrow-space { - display: inline-block; - *display: inline; /* IE7 and below */ - zoom: 1; - width: 15px; - height: 15px; -} - -/* let it look like it is clickable */ -.mw-enhancedchanges-arrow.mw-collapsible-toggle { - cursor: pointer; -} - -.mw-enhanced-watched .mw-enhanced-rc-time { - font-weight: bold; -} diff --git a/resources/mediawiki.special/mediawiki.special.createAccount.css b/resources/mediawiki.special/mediawiki.special.createAccount.css deleted file mode 100644 index 11d00e75..00000000 --- a/resources/mediawiki.special/mediawiki.special.createAccount.css +++ /dev/null @@ -1,89 +0,0 @@ -/* Disable the underline that Vector puts on h2 headings, and bold them. */ -.mw-ui-container h2 { - border: 0; - font-weight: bold; -} - -/**** shuffled CAPTCHA ****/ -#wpCaptchaWord { - margin-top: 6px; -} - -.mw-createacct-captcha-container { - background-color: #f8f8f8; - border: 1px solid #c9c9c9; - padding: 10px; - text-align: center; -} - -.mw-createacct-captcha-assisted { - display: block; - margin-top: 0.5em; -} - -/* Put a border around the fancycaptcha-image-container. */ -.mw-createacct-captcha-and-reload { - border: 1px solid #c9c9c9; - display: table-cell; /* Other display formats end up too wide */ - width: 270px; - background-color: #FFF; -} - -/* Make the fancycaptcha-image-container full-width within its parent. */ -.fancycaptcha-image-container -{ - width: 100%; -} - -/**** Benefits column CSS to the right (if it fits) of the form. ****/ -.mw-ui-container #userloginForm { - float: left; -} - -div.mw-createacct-benefits-container { - /* Keeps this column compact and close to the form, but tends to squish contents. */ - float: left; -} - -div.mw-createacct-benefits-container h2 { - margin-bottom: 30px; -} - -.mw-number-text.icon-edits { - /* @embed */ - background: url(images/icon-edits.png) no-repeat left center; -} - -.mw-number-text.icon-pages { - /* @embed */ - background: url(images/icon-pages.png) no-repeat left center; -} - -.mw-number-text.icon-contributors { - /* @embed */ - background: url(images/icon-contributors.png) no-repeat left center; -} - -/* Special font for numbers in benefits*/ -div.mw-number-text h3 { - top: 0; - margin: 0; - padding: 0; - color: #252525; - font-family: 'Georgia', serif; - font-weight: normal; - font-size: 2.2em; - line-height: 1.2; - text-align: center; -} - -/* Contains a number and explanatory text, with space for an icon */ -div.mw-number-text { - display: block; - font-size: 1.2em; - color: #444; - margin-top: 1em; - padding: 0 0 0 95px; /* 80px wide icon plus "margin" */ - min-height: 75px; /* matches max icon height, ensures icon emblem is visible */ - text-align: center; -} diff --git a/resources/mediawiki.special/mediawiki.special.createAccount.js b/resources/mediawiki.special/mediawiki.special.createAccount.js deleted file mode 100644 index 5cbb1ee0..00000000 --- a/resources/mediawiki.special/mediawiki.special.createAccount.js +++ /dev/null @@ -1,112 +0,0 @@ -/** - * JavaScript for Create account form (Special:UserLogin?type=signup). - */ -( function ( mw, $ ) { - - // When sending password by email, hide the password input fields. - // This function doesn't need to be loaded early by ResourceLoader, but is tiny. - function hidePasswordOnEmail() { - // Always required if checked, otherwise it depends, so we use the original - var $emailLabel = $( 'label[for="wpEmail"]' ), - originalText = $emailLabel.text(), - requiredText = mw.message( 'createacct-emailrequired' ).text(), - $createByMailCheckbox = $( '#wpCreateaccountMail' ), - $beforePwds = $( '.mw-row-password:first' ).prev(), - $pwds; - - function updateForCheckbox() { - var checked = $createByMailCheckbox.prop( 'checked' ); - if ( checked ) { - $pwds = $( '.mw-row-password' ).detach(); - $emailLabel.text( requiredText ); - } else { - if ( $pwds ) { - $beforePwds.after( $pwds ); - $pwds = null; - } - $emailLabel.text( originalText ); - } - } - - $createByMailCheckbox.on( 'change', updateForCheckbox ); - updateForCheckbox(); - } - - // Move the FancyCaptcha image into a more attractive container. - // This function does need to be run early by ResourceLoader. - function adjustFancyCaptcha() { - var $content = $( '#mw-content-text' ), - $submit = $content.find( '#wpCreateaccount' ), - tabIndex, - $captchaStuff, - $captchaImageContainer, - // JavaScript can't yet parse the message createacct-imgcaptcha-help when it - // contains a MediaWiki transclusion, so PHP parses it and sends the HTML. - helpMsg = mw.config.get( 'wgCreateacctImgcaptchaHelp' ), - helpHtml = ''; - - /* - * CAPTCHA - * The CAPTCHA is in a div style="captcha" at the top of the form. - * If it's a FancyCaptcha, then we remove it and insert it lower down, - * in a customized div with just what we need (e.g. no - * fancycaptcha-createaccount message). - */ - if ( !$submit.length) { - return; - } - tabIndex = $submit.prop( 'tabindex' ) - 1; - $captchaStuff = $content.find ( '.captcha' ); - - if ( $captchaStuff.length ) { - - // The FancyCaptcha has this class in the ConfirmEdit extension - // after 2013-04-18. - $captchaImageContainer = $captchaStuff.find( '.fancycaptcha-image-container' ); - if ( $captchaImageContainer.length !== 1 ) { - return; - } - - $captchaStuff.remove(); - - if ( helpMsg) { - helpHtml = '<small class="mw-createacct-captcha-assisted">' + helpMsg + '</small>'; - } - - // Insert another div before the submit button that will include the - // repositioned FancyCaptcha div, an input field, and possible help. - $submit.closest( 'div' ) - .before( [ - '<div>', - '<label for="wpCaptchaWord">' + mw.message( 'createacct-captcha' ).escaped() + '</label>', - '<div class="mw-createacct-captcha-container">', - '<div class="mw-createacct-captcha-and-reload" />', - '<input id="wpCaptchaWord" name="wpCaptchaWord" type="text" placeholder="' + - mw.message( 'createacct-imgcaptcha-ph' ).escaped() + - '" tabindex="' + tabIndex + '" autocapitalize="off" autocorrect="off">', - helpHtml, - '</div>', - '</div>' - ].join( '' ) - ); - - // Stick the FancyCaptcha container inside our bordered and framed parents. - $captchaImageContainer - .prependTo( $content.find( '.mw-createacct-captcha-and-reload' ) ); - - // Find the input field, add the text (if any) of the existing CAPTCHA - // field (although usually it's blanked out on every redisplay), - // and after it move over the hidden field that tells the CAPTCHA - // what to do. - $content.find( '#wpCaptchaWord' ) - .val( $captchaStuff.find( '#wpCaptchaWord' ).val() ) - .after( $captchaStuff.find( '#wpCaptchaId' ) ); - } - } - - $( function () { - adjustFancyCaptcha(); - hidePasswordOnEmail(); - } ); - -}( mediaWiki, jQuery ) ); diff --git a/resources/mediawiki.special/mediawiki.special.css b/resources/mediawiki.special/mediawiki.special.css deleted file mode 100644 index 3cd97397..00000000 --- a/resources/mediawiki.special/mediawiki.special.css +++ /dev/null @@ -1,274 +0,0 @@ - -/**** Special:AllMessages ****/ -#mw-allmessagestable .allmessages-customised td.am_default { - background-color: #fcffc4; -} - -#mw-allmessagestable tr.allmessages-customised:hover td.am_default { - background-color: #faff90; -} - -#mw-allmessagestable td.am_actual { - background-color: #e2ffe2; -} - -#mw-allmessagestable tr.allmessages-customised:hover + tr.allmessages-customised td.am_actual { - background-color: #b1ffb1; -} - -/**** Special:Allpages ****/ -table.mw-allpages-table-form, table.mw-allpages-table-chunk { - width: 100%; -} -td.mw-allpages-alphaindexline { - text-align: right; -} -.mw-allpages-nav { - text-align: right; - margin-bottom: 1em; -} -table.mw-allpages-table-form tr { - vertical-align: top; -} - -/**** Special:Block ****/ -tr.mw-block-hideuser { - font-weight: bold; -} - -/**** Special:BlockList ****/ -table.mw-blocklist span.mw-usertoollinks, -span.mw-blocklist-actions{ - white-space: nowrap; - font-size: 90%; -} - -/**** Special:Contributions ****/ -.mw-uctop { - font-weight: bold; -} - -/**** Special:EmailUser ****/ -table.mw-emailuser-table { - width: 98%; -} -td#mw-emailuser-sender, -td#mw-emailuser-recipient { - font-weight: bold; -} - -/**** Special:ListGroupRights ****/ -table.mw-listgrouprights-table tr { - vertical-align: top; -} -.listgrouprights-revoked { - text-decoration: line-through; -} - -/**** Special:Prefixindex ****/ -table#mw-prefixindex-list-table, -table#mw-prefixindex-nav-table { - width: 98%; -} -td#mw-prefixindex-nav-form { - margin-bottom: 1em; - vertical-align: top; -} -.mw-prefixindex-nav { - text-align: right; -} - - -/**** Special:Search ****/ -.searchresults { -} - -.searchresults p { - margin-left: 0.4em; - margin-top: 1em; - margin-bottom: 1.2em; -} -div.searchresult { - font-size: 95%; - width: 38em; -} -.mw-search-results { - margin-left: 0.4em; -} -.mw-search-results li { - padding-bottom: 1em; - list-style: none; - list-style-image: none; -} -.mw-search-results li a { - font-size: 108%; -} -.mw-search-result-data { - color: green; - font-size: 97%; -} -.mw-search-formheader { - background-color: #f3f3f3; - margin-top: 1em; - border: 1px solid silver; -} -.mw-search-formheader div.search-types { - float: left; - padding-left: 0.25em; -} -.mw-search-formheader div.search-types ul { - margin: 0 !important; - padding: 0 !important; - list-style: none !important; -} -.mw-search-formheader div.search-types ul li { - float: left; - margin: 0; - padding: 0; -} -.mw-search-formheader div.search-types ul li a { - display: block; - padding: 0.5em; -} -.mw-search-formheader div.search-types ul li.current a { - color: #333333; - cursor: default; -} -.mw-search-formheader div.search-types ul li.current a:hover { - text-decoration: none; -} -.mw-search-formheader div.results-info { - float: right; - padding: 0.5em; - padding-right: 0.75em; -} -.mw-search-formheader div.results-info ul { - margin: 0 !important; - padding: 0 !important; - list-style: none !important; -} -.mw-search-formheader div.results-info ul li { - float: right; - margin: 0; - padding: 0; -} -fieldset#mw-searchoptions { - margin: 0; - padding: 0.5em 0.75em 0.75em 0.75em !important; - border: none; - background-color: #f9f9f9; - border: 1px solid silver !important; - border-top-width: 0 !important; -} -fieldset#mw-searchoptions legend { - display: none; -} -fieldset#mw-searchoptions h4 { - padding: 0; - margin: 0; - float: left; -} -fieldset#mw-searchoptions div#mw-search-togglebox { - float: right; -} -fieldset#mw-searchoptions div#mw-search-togglebox label { - margin-right: 0.25em; -} -fieldset#mw-searchoptions div#mw-search-togglebox input { - margin-left: 0.25em; -} -fieldset#mw-searchoptions table { - float: left; - margin-right: 3em; -} -fieldset#mw-searchoptions table td { - padding-right: 1em; -} -fieldset#mw-searchoptions div.divider { - clear: both; - border-bottom: 1px solid #DDDDDD; - padding-top: 0.5em; - margin-bottom: 0.5em; -} -td#mw-search-menu { - padding-left:6em; - font-size:85%; -} -div#mw-search-interwiki { - float: right; - width: 18em; - border: 1px solid #AAAAAA; - margin-top: 2ex; -} -div#mw-search-interwiki li { - font-size: 95%; -} -.mw-search-interwiki-more { - float: right; - font-size: 90%; -} -div#mw-search-interwiki-caption { - text-align: center; - font-weight: bold; - font-size: 95%; -} -.mw-search-interwiki-project { - font-size: 97%; - text-align: left; - padding: 0.15em 0.15em 0.2em 0.2em; - background-color: #ececec; - border-top: 1px solid #BBBBBB; -} -span.searchalttitle { - font-size: 95%; -} -div.searchdidyoumean { - font-size: 127%; - margin-top: 0.8em; - /* Note that this color won't affect the link, as desired. */ - color: #c00; -} -div.searchdidyoumean em { - font-weight: bold; -} -.searchmatch { - font-weight: bold; -} -/* Advanced PowerSearch box */ -td#mw-search-togglebox { - text-align: right; -} -table#mw-search-powertable { - width: 100%; -} -form#powersearch { - clear: both; -} - -/**** Special:Specialpages ****/ -.mw-specialpagerestricted { - font-weight: bold; -} - -.mw-specialpages-table { - margin-top: -1em; - margin-bottom: 1em; -} - -.mw-specialpages-table td { - vertical-align: top; -} - -/**** Special:Statistics ****/ -td.mw-statistics-numbers { - text-align: right; -} - -/**** Special:UserRights ****/ -.mw-userrights-disabled { - color: #888; -} -table.mw-userrights-groups * td, -table.mw-userrights-groups * th { - padding-right: 1.5em; -} diff --git a/resources/mediawiki.special/mediawiki.special.javaScriptTest.js b/resources/mediawiki.special/mediawiki.special.javaScriptTest.js deleted file mode 100644 index a560ca95..00000000 --- a/resources/mediawiki.special/mediawiki.special.javaScriptTest.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * JavaScript for Special:JavaScriptTest - */ -( function ( mw, $ ) { - $( function () { - - // Create useskin dropdown menu and reload onchange to the selected skin - // (only if a framework was found, not on error pages). - $( '#mw-javascripttest-summary.mw-javascripttest-frameworkfound' ).append( function () { - - var $html = $( '<p><label for="useskin">' - + mw.message( 'javascripttest-pagetext-skins' ).escaped() - + ' ' - + '</label></p>' ), - select = '<select name="useskin" id="useskin">'; - - // Build <select> further - $.each( mw.config.get( 'wgAvailableSkins' ), function ( id ) { - select += '<option value="' + id + '"' - + ( mw.config.get( 'skin' ) === id ? ' selected="selected"' : '' ) - + '>' + mw.message( 'skinname-' + id ).escaped() + '</option>'; - } ); - select += '</select>'; - - // Bind onchange event handler and append to form - $html.append( - $( select ).change( function () { - window.location = QUnit.url( { useskin: $(this).val() } ); - } ) - ); - - return $html; - } ); - } ); - -}( mediaWiki, jQuery ) ); - diff --git a/resources/mediawiki.special/mediawiki.special.js b/resources/mediawiki.special/mediawiki.special.js deleted file mode 100644 index 8edb1cbe..00000000 --- a/resources/mediawiki.special/mediawiki.special.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - * Namespace for mediawiki.special.* modules - */ - -mediaWiki.special = {}; diff --git a/resources/mediawiki.special/mediawiki.special.movePage.js b/resources/mediawiki.special/mediawiki.special.movePage.js deleted file mode 100644 index 922eba5e..00000000 --- a/resources/mediawiki.special/mediawiki.special.movePage.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * JavaScript for Special:MovePage - */ -jQuery( function ( $ ) { - $( '#wpReason, #wpNewTitleMain' ).byteLimit(); -} ); diff --git a/resources/mediawiki.special/mediawiki.special.pagesWithProp.css b/resources/mediawiki.special/mediawiki.special.pagesWithProp.css deleted file mode 100644 index 7ef75d0c..00000000 --- a/resources/mediawiki.special/mediawiki.special.pagesWithProp.css +++ /dev/null @@ -1,4 +0,0 @@ -/* Distinguish actual data from information about it being hidden visually */ -.prop-value-hidden { - font-style: italic; -} diff --git a/resources/mediawiki.special/mediawiki.special.preferences.css b/resources/mediawiki.special/mediawiki.special.preferences.css deleted file mode 100644 index 161efde3..00000000 --- a/resources/mediawiki.special/mediawiki.special.preferences.css +++ /dev/null @@ -1,11 +0,0 @@ -/** Reuses colors from mediawiki.special.changeemail.css */ -.mw-email-not-authenticated .mw-input, -.mw-email-none .mw-input{ - border: 1px solid #FF8080; - background-color: #FFC0C0; - color: black; -} -/** Authenticated email field has its own class too. Unstyled by default */ -/* -.mw-email-authenticated .mw-input { } -*/ diff --git a/resources/mediawiki.special/mediawiki.special.preferences.js b/resources/mediawiki.special/mediawiki.special.preferences.js deleted file mode 100644 index 03d93d00..00000000 --- a/resources/mediawiki.special/mediawiki.special.preferences.js +++ /dev/null @@ -1,199 +0,0 @@ -/** - * JavaScript for Special:Preferences - */ -jQuery( function ( $ ) { - var $preftoc, $preferences, $fieldsets, $legends, - hash, - $tzSelect, $tzTextbox, $localtimeHolder, servertime; - - $( '#prefsubmit' ).attr( 'id', 'prefcontrol' ); - - $preftoc = $('<ul id="preftoc"></ul>'); - $preferences = $( '#preferences' ) - .addClass( 'jsprefs' ) - .before( $preftoc ); - $fieldsets = $preferences.children( 'fieldset' ) - .hide() - .addClass( 'prefsection' ); - $legends = $fieldsets - .children( 'legend' ) - .addClass( 'mainLegend' ); - - /** - * It uses document.getElementById for security reasons (HTML injections in $()). - * - * @param String name: the name of a tab without the prefix ("mw-prefsection-") - * @param String mode: [optional] A hash will be set according to the current - * open section. Set mode 'noHash' to surpress this. - */ - function switchPrefTab( name, mode ) { - var $tab, scrollTop; - // Handle hash manually to prevent jumping, - // therefore save and restore scrollTop to prevent jumping. - scrollTop = $( window ).scrollTop(); - if ( mode !== 'noHash' ) { - window.location.hash = '#mw-prefsection-' + name; - } - $( window ).scrollTop( scrollTop ); - - $preftoc.find( 'li' ).removeClass( 'selected' ); - $tab = $( document.getElementById( 'preftab-' + name ) ); - if ( $tab.length ) { - $tab.parent().addClass( 'selected' ); - $preferences.children( 'fieldset' ).hide(); - $( document.getElementById( 'mw-prefsection-' + name ) ).show(); - } - } - - // Populate the prefToc - $legends.each( function ( i, legend ) { - var $legend = $(legend), - ident, $li, $a; - if ( i === 0 ) { - $legend.parent().show(); - } - ident = $legend.parent().attr( 'id' ); - - $li = $( '<li>' ) - .addClass( i === 0 ? 'selected' : '' ); - $a = $( '<a>' ) - .attr( { - id: ident.replace( 'mw-prefsection', 'preftab' ), - href: '#' + ident - } ) - .text( $legend.text() ); - $li.append( $a ); - $preftoc.append( $li ); - } ); - - // If we've reloaded the page or followed an open-in-new-window, - // make the selected tab visible. - hash = window.location.hash; - if ( hash.match( /^#mw-prefsection-[\w\-]+/ ) ) { - switchPrefTab( hash.replace( '#mw-prefsection-' , '' ) ); - } - - // In browsers that support the onhashchange event we will not bind click - // handlers and instead let the browser do the default behavior (clicking the - // <a href="#.."> will naturally set the hash, handled by onhashchange. - // But other things that change the hash will also be catched (e.g. using - // the Back and Forward browser navigation). - // Note the special check for IE "compatibility" mode. - if ( 'onhashchange' in window && - ( document.documentMode === undefined || document.documentMode >= 8 ) - ) { - $(window).on( 'hashchange' , function () { - var hash = window.location.hash; - if ( hash.match( /^#mw-prefsection-[\w\-]+/ ) ) { - switchPrefTab( hash.replace( '#mw-prefsection-', '' ) ); - } else if ( hash === '' ) { - switchPrefTab( 'personal', 'noHash' ); - } - }); - // In older browsers we'll bind a click handler as fallback. - // We must not have onhashchange *and* the click handlers, other wise - // the click handler calls switchPrefTab() which sets the hash value, - // which triggers onhashcange and calls switchPrefTab() again. - } else { - $preftoc.on( 'click', 'li a', function ( e ) { - switchPrefTab( $( this ).attr( 'href' ).replace( '#mw-prefsection-', '' ) ); - e.preventDefault(); - }); - } - - /** - * Timezone functions. - * Guesses Timezone from browser and updates fields onchange - */ - - $tzSelect = $( '#mw-input-wptimecorrection' ); - $tzTextbox = $( '#mw-input-wptimecorrection-other' ); - $localtimeHolder = $( '#wpLocalTime' ); - servertime = parseInt( $( 'input[name="wpServerTime"]' ).val(), 10 ); - - function minutesToHours( min ) { - var tzHour = Math.floor( Math.abs( min ) / 60 ), - tzMin = Math.abs( min ) % 60, - tzString = ( ( min >= 0 ) ? '' : '-' ) + ( ( tzHour < 10 ) ? '0' : '' ) + tzHour + - ':' + ( ( tzMin < 10 ) ? '0' : '' ) + tzMin; - return tzString; - } - - function hoursToMinutes( hour ) { - var minutes, - arr = hour.split( ':' ); - - arr[0] = parseInt( arr[0], 10 ); - - if ( arr.length === 1 ) { - // Specification is of the form [-]XX - minutes = arr[0] * 60; - } else { - // Specification is of the form [-]XX:XX - minutes = Math.abs( arr[0] ) * 60 + parseInt( arr[1], 10 ); - if ( arr[0] < 0 ) { - minutes *= -1; - } - } - // Gracefully handle non-numbers. - if ( isNaN( minutes ) ) { - return 0; - } else { - return minutes; - } - } - - function updateTimezoneSelection () { - var minuteDiff, localTime, - type = $tzSelect.val(); - - if ( type === 'guess' ) { - // Get browser timezone & fill it in - minuteDiff = -( new Date().getTimezoneOffset() ); - $tzTextbox.val( minutesToHours( minuteDiff ) ); - $tzSelect.val( 'other' ); - $tzTextbox.prop( 'disabled', false ); - } else if ( type === 'other' ) { - // Grab data from the textbox, parse it. - minuteDiff = hoursToMinutes( $tzTextbox.val() ); - } else { - // Grab data from the $tzSelect value - minuteDiff = parseInt( type.split( '|' )[1], 10 ) || 0; - $tzTextbox.val( minutesToHours( minuteDiff ) ); - } - - // Determine local time from server time and minutes difference, for display. - localTime = servertime + minuteDiff; - - // Bring time within the [0,1440) range. - while ( localTime < 0 ) { - localTime += 1440; - } - while ( localTime >= 1440 ) { - localTime -= 1440; - } - $localtimeHolder.text( minutesToHours( localTime ) ); - } - - if ( $tzSelect.length && $tzTextbox.length ) { - $tzSelect.change( updateTimezoneSelection ); - $tzTextbox.blur( updateTimezoneSelection ); - updateTimezoneSelection(); - } - - // Preserve the tab after saving the preferences - // Not using cookies, because their deletion results are inconsistent. - // Not using jStorage due to its enormous size (for this feature) - if ( window.sessionStorage ) { - if ( sessionStorage.getItem( 'mediawikiPreferencesTab' ) !== null ) { - switchPrefTab( sessionStorage.getItem( 'mediawikiPreferencesTab' ), 'noHash' ); - } - // Deleting the key, the tab states should be reset until we press Save - sessionStorage.removeItem( 'mediawikiPreferencesTab' ); - - $( '#mw-prefs-form' ).submit( function () { - var storageData = $( $preftoc ).find( 'li.selected a' ).attr( 'id' ).replace( 'preftab-', '' ); - sessionStorage.setItem( 'mediawikiPreferencesTab', storageData ); - } ); - } -} ); diff --git a/resources/mediawiki.special/mediawiki.special.recentchanges.js b/resources/mediawiki.special/mediawiki.special.recentchanges.js deleted file mode 100644 index 79d793af..00000000 --- a/resources/mediawiki.special/mediawiki.special.recentchanges.js +++ /dev/null @@ -1,34 +0,0 @@ -/** - * JavaScript for Special:RecentChanges - */ -( function ( mw, $ ) { - var rc, $checkboxes, $select; - - rc = { - /** - * Handler to disable/enable the namespace selector checkboxes when the - * special 'all' namespace is selected/unselected respectively. - */ - updateCheckboxes: function () { - // The option element for the 'all' namespace has an empty value - var isAllNS = $select.val() === ''; - - // Iterates over checkboxes and propagate the selected option - $checkboxes.prop( 'disabled', isAllNS ); - }, - - init: function () { - $select = $( '#namespace' ); - $checkboxes = $( '#nsassociated, #nsinvert' ); - - // Bind to change event, and trigger once to set the initial state of the checkboxes. - rc.updateCheckboxes(); - $select.change( rc.updateCheckboxes ); - } - }; - - $( rc.init ); - - mw.special.recentchanges = rc; - -}( mediaWiki, jQuery ) ); diff --git a/resources/mediawiki.special/mediawiki.special.search.css b/resources/mediawiki.special/mediawiki.special.search.css deleted file mode 100644 index 914e47e3..00000000 --- a/resources/mediawiki.special/mediawiki.special.search.css +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Fixes sister projects box moving down the extract - * of the first result (bug #16886). - * It only happens when the window is small and - * This changes slightly the layout for big screens - * where there was space for the extracts and the - * sister projects and thus it showed like in any - * other browser. - * - * This will only affect IE 7 and lower - */ -.searchresult { - display: inline !ie; -} diff --git a/resources/mediawiki.special/mediawiki.special.search.js b/resources/mediawiki.special/mediawiki.special.search.js deleted file mode 100644 index 035252bf..00000000 --- a/resources/mediawiki.special/mediawiki.special.search.js +++ /dev/null @@ -1,53 +0,0 @@ -/** - * JavaScript for Special:Search - */ -( function ( mw, $ ) { - $( function () { - var $checkboxes, $headerLinks; - - // Emulate HTML5 autofocus behavior in non HTML5 compliant browsers - if ( !( 'autofocus' in document.createElement( 'input' ) ) ) { - $( 'input[autofocus]' ).eq( 0 ).focus(); - } - - // Create check all/none button - $checkboxes = $('#powersearch input[id^=mw-search-ns]'); - $('#mw-search-togglebox').append( - $('<label>') - .text(mw.msg('powersearch-togglelabel')) - ).append( - $('<input type="button" />') - .attr( 'id', 'mw-search-toggleall' ) - .prop( 'value', mw.msg('powersearch-toggleall' ) ) - .click( function () { - $checkboxes.prop('checked', true); - } ) - ).append( - $('<input type="button" />') - .attr( 'id', 'mw-search-togglenone' ) - .prop( 'value', mw.msg('powersearch-togglenone' ) ) - .click( function() { - $checkboxes.prop( 'checked', false ); - } ) - ); - - // Change the header search links to what user entered - $headerLinks = $( '.search-types a' ); - $( '#searchText, #powerSearchText' ).change( function () { - var searchterm = $(this).val(); - $headerLinks.each( function () { - var parts = $(this).attr('href').split( 'search=' ), - lastpart = '', - prefix = 'search='; - if ( parts.length > 1 && parts[1].indexOf('&') >= 0 ) { - lastpart = parts[1].substring( parts[1].indexOf('&') ); - } else { - prefix = '&search='; - } - this.href = parts[0] + prefix + encodeURIComponent( searchterm ) + lastpart; - }); - }).trigger( 'change' ); - - } ); - -}( mediaWiki, jQuery ) ); diff --git a/resources/mediawiki.special/mediawiki.special.undelete.js b/resources/mediawiki.special/mediawiki.special.undelete.js deleted file mode 100644 index 0dea3ef9..00000000 --- a/resources/mediawiki.special/mediawiki.special.undelete.js +++ /dev/null @@ -1,11 +0,0 @@ -/** - * JavaScript for Special:Undelete - */ -jQuery( function ( $ ) { - $( '#mw-undelete-invert' ).click( function ( e ) { - $( '#undelete input[type="checkbox"]' ).prop( 'checked', function ( i, val ) { - return !val; - } ); - e.preventDefault(); - } ); -} ); diff --git a/resources/mediawiki.special/mediawiki.special.upload.js b/resources/mediawiki.special/mediawiki.special.upload.js deleted file mode 100644 index 3f40c549..00000000 --- a/resources/mediawiki.special/mediawiki.special.upload.js +++ /dev/null @@ -1,320 +0,0 @@ -/** - * JavaScript for Special:Upload - * Note that additional code still lives in skins/common/upload.js - */ -( function ( mw, $ ) { - /** - * Add a preview to the upload form - */ - $( function () { - /** - * Is the FileAPI available with sufficient functionality? - */ - function hasFileAPI() { - return window.FileReader !== undefined; - } - - /** - * Check if this is a recognizable image type... - * Also excludes files over 10M to avoid going insane on memory usage. - * - * @todo is there a way we can ask the browser what's supported in <img>s? - * @todo put SVG back after working around Firefox 7 bug <https://bugzilla.wikimedia.org/show_bug.cgi?id=31643> - * - * @param {File} file - * @return boolean - */ - function fileIsPreviewable( file ) { - var known = ['image/png', 'image/gif', 'image/jpeg', 'image/svg+xml'], - tooHuge = 10 * 1024 * 1024; - return ( $.inArray( file.type, known ) !== -1 ) && file.size > 0 && file.size < tooHuge; - } - - /** - * Show a thumbnail preview of PNG, JPEG, GIF, and SVG files prior to upload - * in browsers supporting HTML5 FileAPI. - * - * As of this writing, known good: - * - Firefox 3.6+ - * - Chrome 7.something - * - * @todo check file size limits and warn of likely failures - * - * @param {File} file - */ - function showPreview( file ) { - var $canvas, - ctx, - meta, - previewSize = 180, - thumb = $( '<div id="mw-upload-thumbnail" class="thumb tright">' + - '<div class="thumbinner">' + - '<div class="mw-small-spinner" style="width: 180px; height: 180px"></div>' + - '<div class="thumbcaption"><div class="filename"></div><div class="fileinfo"></div></div>' + - '</div>' + - '</div>' ); - - thumb.find( '.filename' ).text( file.name ).end() - .find( '.fileinfo' ).text( prettySize( file.size ) ).end(); - - $canvas = $('<canvas width="' + previewSize + '" height="' + previewSize + '" ></canvas>'); - ctx = $canvas[0].getContext( '2d' ); - $( '#mw-htmlform-source' ).parent().prepend( thumb ); - - fetchPreview( file, function ( dataURL ) { - var img = new Image(), - rotation = 0; - - if ( meta && meta.tiff && meta.tiff.Orientation ) { - rotation = ( 360 - ( function () { - // See includes/media/Bitmap.php - switch ( meta.tiff.Orientation.value ) { - case 8: - return 90; - case 3: - return 180; - case 6: - return 270; - default: - return 0; - } - }() ) ) % 360; - } - - img.onload = function () { - var info, width, height, x, y, dx, dy, logicalWidth, logicalHeight; - - // Fit the image within the previewSizexpreviewSize box - if ( img.width > img.height ) { - width = previewSize; - height = img.height / img.width * previewSize; - } else { - height = previewSize; - width = img.width / img.height * previewSize; - } - // Determine the offset required to center the image - dx = (180 - width) / 2; - dy = (180 - height) / 2; - switch ( rotation ) { - // If a rotation is applied, the direction of the axis - // changes as well. You can derive the values below by - // drawing on paper an axis system, rotate it and see - // where the positive axis direction is - case 0: - x = dx; - y = dy; - logicalWidth = img.width; - logicalHeight = img.height; - break; - case 90: - - x = dx; - y = dy - previewSize; - logicalWidth = img.height; - logicalHeight = img.width; - break; - case 180: - x = dx - previewSize; - y = dy - previewSize; - logicalWidth = img.width; - logicalHeight = img.height; - break; - case 270: - x = dx - previewSize; - y = dy; - logicalWidth = img.height; - logicalHeight = img.width; - break; - } - - ctx.clearRect( 0, 0, 180, 180 ); - ctx.rotate( rotation / 180 * Math.PI ); - ctx.drawImage( img, x, y, width, height ); - thumb.find('.mw-small-spinner').replaceWith($canvas); - - // Image size - info = mw.msg( 'widthheight', logicalWidth, logicalHeight ) + - ', ' + prettySize( file.size ); - - $( '#mw-upload-thumbnail .fileinfo' ).text( info ); - }; - img.src = dataURL; - }, mw.config.get( 'wgFileCanRotate' ) ? function ( data ) { - /*jshint camelcase: false, nomen: false */ - try { - meta = mw.libs.jpegmeta( data, file.fileName ); - meta._binary_data = null; - } catch ( e ) { - meta = null; - } - } : null ); - } - - /** - * Start loading a file into memory; when complete, pass it as a - * data URL to the callback function. If the callbackBinary is set it will - * first be read as binary and afterwards as data URL. Useful if you want - * to do preprocessing on the binary data first. - * - * @param {File} file - * @param {function} callback - * @param {function} callbackBinary - */ - function fetchPreview( file, callback, callbackBinary ) { - var reader = new FileReader(); - if ( callbackBinary && 'readAsBinaryString' in reader ) { - // To fetch JPEG metadata we need a binary string; start there. - // todo: - reader.onload = function() { - callbackBinary( reader.result ); - - // Now run back through the regular code path. - fetchPreview( file, callback ); - }; - reader.readAsBinaryString( file ); - } else if ( callbackBinary && 'readAsArrayBuffer' in reader ) { - // readAsArrayBuffer replaces readAsBinaryString - // However, our JPEG metadata library wants a string. - // So, this is going to be an ugly conversion. - reader.onload = function() { - var i, - buffer = new Uint8Array( reader.result ), - string = ''; - for ( i = 0; i < buffer.byteLength; i++ ) { - string += String.fromCharCode( buffer[i] ); - } - callbackBinary( string ); - - // Now run back through the regular code path. - fetchPreview( file, callback ); - }; - reader.readAsArrayBuffer( file ); - } else if ( 'URL' in window && 'createObjectURL' in window.URL ) { - // Supported in Firefox 4.0 and above <https://developer.mozilla.org/en/DOM/window.URL.createObjectURL> - // WebKit has it in a namespace for now but that's ok. ;) - // - // Lifetime of this URL is until document close, which is fine - // for Special:Upload -- if this code gets used on longer-running - // pages, add a revokeObjectURL() when it's no longer needed. - // - // Prefer this over readAsDataURL for Firefox 7 due to bug reading - // some SVG files from data URIs <https://bugzilla.mozilla.org/show_bug.cgi?id=694165> - callback( window.URL.createObjectURL( file ) ); - } else { - // This ends up decoding the file to base-64 and back again, which - // feels horribly inefficient. - reader.onload = function () { - callback( reader.result ); - }; - reader.readAsDataURL( file ); - } - } - - /** - * Format a file size attractively. - * @todo match numeric formatting - * - * @param {number} s - * @return string - */ - function prettySize( s ) { - var sizeMsgs = ['size-bytes', 'size-kilobytes', 'size-megabytes', 'size-gigabytes']; - while ( s >= 1024 && sizeMsgs.length > 1 ) { - s /= 1024; - sizeMsgs = sizeMsgs.slice( 1 ); - } - return mw.msg( sizeMsgs[0], Math.round( s ) ); - } - - /** - * Clear the file upload preview area. - */ - function clearPreview() { - $( '#mw-upload-thumbnail' ).remove(); - } - - /** - * Check if the file does not exceed the maximum size - */ - function checkMaxUploadSize( file ) { - var maxSize, $error; - - function getMaxUploadSize( type ) { - var sizes = mw.config.get( 'wgMaxUploadSize' ); - - if ( sizes[type] !== undefined ) { - return sizes[type]; - } - return sizes['*']; - } - - $( '.mw-upload-source-error' ).remove(); - - maxSize = getMaxUploadSize( 'file' ); - if ( file.size > maxSize ) { - $error = $( '<p class="error mw-upload-source-error" id="wpSourceTypeFile-error">' + - mw.message( 'largefileserver', file.size, maxSize ).escaped() + '</p>' ); - - $( '#wpUploadFile' ).after( $error ); - - return false; - } - - return true; - } - - - /** - * Initialization - */ - if ( hasFileAPI() ) { - // Update thumbnail when the file selection control is updated. - $( '#wpUploadFile' ).change( function () { - clearPreview(); - if ( this.files && this.files.length ) { - // Note: would need to be updated to handle multiple files. - var file = this.files[0]; - - if ( !checkMaxUploadSize( file ) ) { - return; - } - - if ( fileIsPreviewable( file ) ) { - showPreview( file ); - } - } - } ); - } - } ); - - /** - * Disable all upload source fields except the selected one - */ - $( function () { - var i, $row, - $rows = $( '.mw-htmlform-field-UploadSourceField' ); - - function createHandler( $currentRow ) { - /** - * @param {jQuery.Event} - */ - return function () { - $( '.mw-upload-source-error' ).remove(); - if ( this.checked ) { - // Disable all inputs - $rows.find( 'input[name!="wpSourceType"]' ).prop( 'disabled', true ); - // Re-enable the current one - $currentRow.find( 'input' ).prop( 'disabled', false ); - } - }; - } - - for ( i = $rows.length; i; i-- ) { - $row = $rows.eq(i - 1); - $row - .find( 'input[name="wpSourceType"]' ) - .change( createHandler( $row ) ); - } - } ); - -}( mediaWiki, jQuery ) ); diff --git a/resources/mediawiki.special/mediawiki.special.userLogin.css b/resources/mediawiki.special/mediawiki.special.userLogin.css deleted file mode 100644 index 24c8d771..00000000 --- a/resources/mediawiki.special/mediawiki.special.userLogin.css +++ /dev/null @@ -1,39 +0,0 @@ -/* Styles just for VForm user login */ -#mw-userlogin-help { - text-align: center; -} - -.mw-ui-vform .mw-secure { - /* @embed */ - background: url(images/icon-lock.png) no-repeat scroll left center transparent; - margin: 0 0 0 1px; - padding: 0 0 0 11px; -} - -/* The login form invites users to create an account */ -#mw-createaccount-cta { - width: 20em; - height: 10em; - /* @embed */ - background: url(images/glyph-people-large.png) no-repeat 50%; - margin: 0 auto; -} - -#mw-createaccount-cta h3, -#mw-createaccount-another h3 { - font-size: 0.9em; - font-weight: normal; - text-align: center; -} - -#mw-createaccount-cta h3 { - padding-top: 4em; -} - -#mw-createaccount-join { - margin-left: 0.75em; - /* Separate from background image */ - box-shadow: 4px 4px 4px 4px rgba(255, 255, 255, 1); - width: auto; - display: inline-block; -} diff --git a/resources/mediawiki.special/mediawiki.special.vforms.css b/resources/mediawiki.special/mediawiki.special.vforms.css deleted file mode 100644 index 768a9c6e..00000000 --- a/resources/mediawiki.special/mediawiki.special.vforms.css +++ /dev/null @@ -1,46 +0,0 @@ -/* - * When inside the VForm style, disable the border that Vector and other skins - * put on the div surrounding the login/create account form. - * Also disable the margin and padding that Vector puts around the form. - */ -.mw-ui-container #userloginForm, -.mw-ui-container #userlogin { - border: 0; - margin: 0; - padding: 0; -} - -/* Reposition and resize language links, which appear on a per-wiki basis */ -.mw-ui-container #languagelinks { - margin-bottom: 2em; - font-size: 0.8em; -} - -/* Put some space under template's header, which may contain CAPTCHA HTML.*/ -section.mw-form-header { - margin-bottom: 10px; -} - -/* - * Styles for information boxes. - */ -.mw-ui-vform .errorbox, -.mw-ui-vform .warningbox, -.mw-ui-vform .successbox { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - font-size: 0.9em; - margin: 0 0 1em 0; - padding: 0.5em; - word-wrap: break-word; -} - -/* - * Override the right margin of the form to give space in case a benefits - * column appears to the side. - * - */ -.mw-ui-container #userloginForm { - margin-right: 100px; -} |