diff --git a/i18n/en.json b/i18n/en.json
index 6e6e898e..80c07e82 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -61,5 +61,6 @@
"gadgets-validate-unknownpages": "Contains one or more pages without .js, .css or .json suffix. They would not be used.",
"gadgets-validate-duplicate": "A second definition of gadget $1 was detected and shall be ignored",
"gadgets-validate-nopage": "Page \"$1\" does not exist.",
- "gadgets-supports-urlload": "This gadget supports loading via URL with ?withgadget
query parameter."
+ "gadgets-supports-urlload": "This gadget supports loading via URL with ?withgadget
query parameter.",
+ "gadgets-hidden": "This gadget is [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:Gadgets#hidden hidden], meaning it will not show up on the preferences page."
}
diff --git a/i18n/qqq.json b/i18n/qqq.json
index 29a2bf11..4eb9604d 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -77,5 +77,6 @@
"gadgets-validate-unknownpages": "Warning message to indicate that a gadget contains pages without .js, .css or .json suffix, which are not recognised.",
"gadgets-validate-duplicate": "Warning message to indicate that the second gadget definition with the same name would be ignored. Parameters:\n* $1 -gadget name",
"gadgets-validate-nopage": "Warning message to indicate the script/style/json page does not exist. Parameters:\n* $1 - page name",
- "gadgets-supports-urlload": "Used in [[Special:Gadgets]], if the gadget supports ?withgadget query parameter."
+ "gadgets-supports-urlload": "Used in [[Special:Gadgets]], if the gadget supports ?withgadget query parameter.",
+ "gadgets-hidden": "Used in [[Special:Gadgets]], if the gadget is hidden."
}
diff --git a/includes/Special/SpecialGadgets.php b/includes/Special/SpecialGadgets.php
index b2bcb3bc..c6e3df64 100644
--- a/includes/Special/SpecialGadgets.php
+++ b/includes/Special/SpecialGadgets.php
@@ -376,7 +376,16 @@ class SpecialGadgets extends SpecialPage {
);
$needLineBreakAfter = true;
}
+ // Show if hidden
+ if ( $gadget->isHidden() ) {
+ if ( $needLineBreakAfter ) {
+ $output->addHTML( '
' );
+ }
+ $output->addHTML( $this->msg( 'gadgets-hidden' )->parse() );
+ $needLineBreakAfter = true;
+ }
+ // Show if supports URL load
if ( $gadget->supportsUrlLoad() ) {
if ( $needLineBreakAfter ) {
$output->addHTML( '
' );