Index: Gadgets_body.php =================================================================== --- Gadgets_body.php (wersja 98061) +++ Gadgets_body.php (kopia robocza) @@ -65,6 +65,10 @@ $available = array(); foreach ( $thisSection as $gadget ) { + if ( $gadget->isHidden() ) { + continue; + } + if ( $gadget->isAllowed( $user ) ) { $gname = $gadget->getName(); $available[$gadget->getDescription()] = $gname; @@ -224,7 +228,7 @@ /** * Increment this when changing class structure */ - const GADGET_CLASS_VERSION = 5; + const GADGET_CLASS_VERSION = 6; private $version = self::GADGET_CLASS_VERSION, $scripts = array(), @@ -235,6 +239,7 @@ $resourceLoaded = false, $requiredRights = array(), $onByDefault = false, + $hidden = false, $category; /** @@ -278,6 +283,9 @@ case 'default': $gadget->onByDefault = true; break; + case 'hidden': + $gadget->hidden = true; + break; } } @@ -365,6 +373,13 @@ } /** + * @return Boolean: Whether this gadget is hidden in preferences + */ + public function isHidden() { + return $this->hidden; + } + + /** * @return Boolean: Whether all of this gadget's JS components support ResourceLoader */ public function supportsResourceLoader() { Index: ApiQueryGadgets.php =================================================================== --- ApiQueryGadgets.php (wersja 98061) +++ ApiQueryGadgets.php (kopia robocza) @@ -120,7 +120,7 @@ 'settings' => array( 'rights' => $g->getRequiredRights(), 'default' => $g->isOnByDefault(), - 'hidden' => false, // Only exists in RL2 branch + 'hidden' => $g->isHidden(), 'shared' => false, // Only exists in RL2 branch 'category' => $g->getCategory(), ), Index: Gadgets_tests.php =================================================================== --- Gadgets_tests.php (wersja 98061) +++ Gadgets_tests.php (kopia robocza) @@ -28,6 +28,7 @@ $this->assertEquals( array( 'Gadget-foo.js' ), $g->getLegacyScripts() ); $this->assertFalse( $g->supportsResourceLoader() ); $this->assertTrue( $g->hasModule() ); + $this->assertFalse( $g->isHidden() ); } function testRLtag() { @@ -35,6 +36,7 @@ $this->assertEquals( 'foo', $g->getName() ); $this->assertTrue( $g->supportsResourceLoader() ); $this->assertEquals( 0, count( $g->getLegacyScripts() ) ); + $this->assertFalse( $g->isHidden() ); } function testDependencies() { @@ -42,8 +44,17 @@ $this->assertEquals( array( 'Gadget-bar.js' ), $g->getScripts() ); $this->assertTrue( $g->supportsResourceLoader() ); $this->assertEquals( array( 'jquery.ui' ), $g->getDependencies() ); + $this->assertFalse( $g->isHidden() ); } + function testHiding() { + $g = $this->create( '*foo [ResourceLoader | hidden]|foo.js|foo.css' ); + $this->assertEquals( 'foo', $g->getName() ); + $this->assertTrue( $g->supportsResourceLoader() ); + $this->assertTrue( $g->isHidden() ); + $this->assertEquals( 0, count( $g->getLegacyScripts() ) ); + } + function testPreferences() { global $wgUser, $wgOut, $wgTitle;