jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/401753 )
Change subject: Revert "Do not collapse references on diffs/old revisions" ...................................................................... Revert "Do not collapse references on diffs/old revisions" This reverts commit e70e72b3f124a4f8fcd8891bbb0595c7a2eff0e0. This also reverts related commit 0864349b1db269d765b5689757b1223947b6bd05. Change-Id: I9da46c36d8152a779ce7ac04a933197615c0cbbf (cherry picked from commit e21bdc368b5a6e628800d0405d72a90384e75b43) --- M repo/includes/Content/EntityContent.php M repo/includes/ParserOutput/EntityParserOutputGenerator.php M repo/includes/ParserOutput/EntityParserOutputGeneratorFactory.php M repo/resources/wikibase.ui.entityViewInit.js M repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorFactoryTest.php M repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php M view/autoload.php M view/resources/wikibase/wikibase.less A view/src/EmptyEditSectionGenerator.php M view/src/StatementHtmlGenerator.php A view/tests/phpunit/EmptyEditSectionGeneratorTest.php M view/tests/phpunit/StatementHtmlGeneratorTest.php 12 files changed, 206 insertions(+), 31 deletions(-) Approvals: WMDE-leszek: Looks good to me, but someone else must approve Chad: Looks good to me, approved Ladsgroup: Looks good to me, but someone else must approve jenkins-bot: Verified diff --git a/repo/includes/Content/EntityContent.php b/repo/includes/Content/EntityContent.php index bfe1061..e5605ff 100644 --- a/repo/includes/Content/EntityContent.php +++ b/repo/includes/Content/EntityContent.php @@ -262,7 +262,8 @@ $entityParserOutputGeneratorFactory = WikibaseRepo::getDefaultInstance()->getEntityParserOutputGeneratorFactory(); $outputGenerator = $entityParserOutputGeneratorFactory->getEntityParserOutputGenerator( - $options->getUserLang() + $options->getUserLang(), + true ); $entityRevision = $this->getEntityRevision( $revisionId ); diff --git a/repo/includes/ParserOutput/EntityParserOutputGenerator.php b/repo/includes/ParserOutput/EntityParserOutputGenerator.php index f779ae5..c7d92ca 100644 --- a/repo/includes/ParserOutput/EntityParserOutputGenerator.php +++ b/repo/includes/ParserOutput/EntityParserOutputGenerator.php @@ -24,6 +24,7 @@ use Wikibase\Repo\MediaWikiLanguageDirectionalityLookup; use Wikibase\Repo\MediaWikiLocalizedTextProvider; use Wikibase\Repo\View\RepoSpecialPageLinker; +use Wikibase\View\EmptyEditSectionGenerator; use Wikibase\View\LocalizedTextProvider; use Wikibase\View\Template\TemplateFactory; use Wikibase\View\TermsListView; @@ -90,6 +91,11 @@ private $languageCode; /** + * @var bool + */ + private $editable; + + /** * @param DispatchingEntityViewFactory $entityViewFactory * @param ParserOutputJsConfigBuilder $configBuilder * @param EntityTitleLookup $entityTitleLookup @@ -100,6 +106,7 @@ * @param EntityDataFormatProvider $entityDataFormatProvider * @param ParserOutputDataUpdater[] $dataUpdaters * @param string $languageCode + * @param bool $editable */ public function __construct( DispatchingEntityViewFactory $entityViewFactory, @@ -111,7 +118,8 @@ LocalizedTextProvider $textProvider, EntityDataFormatProvider $entityDataFormatProvider, array $dataUpdaters, - $languageCode + $languageCode, + $editable ) { $this->entityViewFactory = $entityViewFactory; $this->configBuilder = $configBuilder; @@ -123,6 +131,7 @@ $this->entityDataFormatProvider = $entityDataFormatProvider; $this->dataUpdaters = $dataUpdaters; $this->languageCode = $languageCode; + $this->editable = $editable; } /** @@ -284,11 +293,11 @@ $this->languageFallbackChain ); - $editSectionGenerator = new ToolbarEditSectionGenerator( + $editSectionGenerator = $this->editable ? new ToolbarEditSectionGenerator( new RepoSpecialPageLinker(), $this->templateFactory, $this->textProvider - ); + ) : new EmptyEditSectionGenerator(); $languageDirectionalityLookup = new MediaWikiLanguageDirectionalityLookup(); $languageNameLookup = new LanguageNameLookup( $this->languageCode ); diff --git a/repo/includes/ParserOutput/EntityParserOutputGeneratorFactory.php b/repo/includes/ParserOutput/EntityParserOutputGeneratorFactory.php index a614fca..481c971 100644 --- a/repo/includes/ParserOutput/EntityParserOutputGeneratorFactory.php +++ b/repo/includes/ParserOutput/EntityParserOutputGeneratorFactory.php @@ -131,10 +131,11 @@ * Creates an EntityParserOutputGenerator to create the ParserOutput for the entity * * @param string $userLanguageCode + * @param bool $editable * * @return EntityParserOutputGenerator */ - public function getEntityParserOutputGenerator( $userLanguageCode ) { + public function getEntityParserOutputGenerator( $userLanguageCode, $editable ) { $userLanguage = Language::factory( $userLanguageCode ); return new EntityParserOutputGenerator( @@ -147,7 +148,8 @@ new MediaWikiLocalizedTextProvider( $userLanguageCode ), $this->entityDataFormatProvider, $this->getDataUpdaters(), - $userLanguageCode + $userLanguageCode, + $editable ); } diff --git a/repo/resources/wikibase.ui.entityViewInit.js b/repo/resources/wikibase.ui.entityViewInit.js index e2565bf..d0ebda3 100644 --- a/repo/resources/wikibase.ui.entityViewInit.js +++ b/repo/resources/wikibase.ui.entityViewInit.js @@ -37,6 +37,8 @@ } /** + * Builds an entity store. + * * @param {wikibase.api.RepoApi} repoApi * @param {string} languageCode The language code of the ui language * @return {wikibase.store.CachingEntityStore} diff --git a/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorFactoryTest.php b/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorFactoryTest.php index 33cfb2c..cb1fb06 100644 --- a/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorFactoryTest.php +++ b/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorFactoryTest.php @@ -28,7 +28,9 @@ public function testGetEntityParserOutputGenerator() { $parserOutputGeneratorFactory = $this->getEntityParserOutputGeneratorFactory(); - $instance = $parserOutputGeneratorFactory->getEntityParserOutputGenerator( 'en' ); + $instance = $parserOutputGeneratorFactory->getEntityParserOutputGenerator( + 'en', true + ); $this->assertInstanceOf( EntityParserOutputGenerator::class, $instance ); } diff --git a/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php b/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php index f4e8960..717d9e5 100644 --- a/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php +++ b/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php @@ -215,7 +215,8 @@ $this->getMock( LocalizedTextProvider::class ), $entityDataFormatProvider, $dataUpdaters, - 'en' + 'en', + true ); } @@ -403,7 +404,8 @@ $this->getMock( LocalizedTextProvider::class ), new EntityDataFormatProvider(), $dataUpdaters, - 'en' + 'en', + true ); } diff --git a/view/autoload.php b/view/autoload.php index c100642..c740df4 100644 --- a/view/autoload.php +++ b/view/autoload.php @@ -6,6 +6,7 @@ $wgAutoloadClasses += [ 'Wikibase\\View\\DummyLocalizedTextProvider' => __DIR__ . '/src/DummyLocalizedTextProvider.php', 'Wikibase\\View\\EditSectionGenerator' => __DIR__ . '/src/EditSectionGenerator.php', + 'Wikibase\\View\\EmptyEditSectionGenerator' => __DIR__ . '/src/EmptyEditSectionGenerator.php', 'Wikibase\\View\\EntityIdFormatterFactory' => __DIR__ . '/src/EntityIdFormatterFactory.php', 'Wikibase\\View\\EntityTermsView' => __DIR__ . '/src/EntityTermsView.php', 'Wikibase\\View\\EntityView' => __DIR__ . '/src/EntityView.php', diff --git a/view/resources/wikibase/wikibase.less b/view/resources/wikibase/wikibase.less index bbbdeaf..b84e2ed 100644 --- a/view/resources/wikibase/wikibase.less +++ b/view/resources/wikibase/wikibase.less @@ -515,8 +515,7 @@ } /* Some UI elements are initially hidden if JS is enabled */ -.client-js .wikibase-entitytermsview-entitytermsforlanguagelistview.wikibase-initially-collapsed, -.client-js body:not( .wb-diffpage ):not( .wb-oldrevpage ) .wikibase-initially-collapsed { +.client-js .wikibase-initially-collapsed { display: none; } diff --git a/view/src/EmptyEditSectionGenerator.php b/view/src/EmptyEditSectionGenerator.php new file mode 100644 index 0000000..81dd859 --- /dev/null +++ b/view/src/EmptyEditSectionGenerator.php @@ -0,0 +1,55 @@ +<?php + +namespace Wikibase\View; + +use Wikibase\DataModel\Entity\EntityId; +use Wikibase\DataModel\Entity\PropertyId; +use Wikibase\DataModel\Statement\Statement; + +/** + * An EditSectionGenerator returning empty string for edit sections + * + * @license GPL-2.0+ + * @author Adrian Heine <adrian.he...@wikimedia.de> + */ +class EmptyEditSectionGenerator implements EditSectionGenerator { + + /** + * @param Statement $statement + * + * @return string Always an empty string. + */ + public function getStatementEditSection( Statement $statement ) { + return ''; + } + + /** + * @param string $languageCode Unused. + * @param EntityId|null $entityId Unused. + * + * @return string Always an empty string. + */ + public function getLabelDescriptionAliasesEditSection( $languageCode, EntityId $entityId = null ) { + return ''; + } + + /** + * @param EntityId|null $entityId Unused. + * + * @return string Always an empty string. + */ + public function getSiteLinksEditSection( EntityId $entityId = null ) { + return ''; + } + + /** + * @param PropertyId $propertyId Unused. + * @param EntityId|null $entityId Unused. + * + * @return string Always an empty string. + */ + public function getAddStatementToGroupSection( PropertyId $propertyId, EntityId $entityId = null ) { + return ''; + } + +} diff --git a/view/src/StatementHtmlGenerator.php b/view/src/StatementHtmlGenerator.php index d576fac7..40c119b 100644 --- a/view/src/StatementHtmlGenerator.php +++ b/view/src/StatementHtmlGenerator.php @@ -86,6 +86,7 @@ $references = $statement->getReferences(); $referencesHtml = $this->getHtmlForReferences( $references ); + $collapseReferences = $editSectionHtml !== '' && !$references->isEmpty(); return $this->templateFactory->render( 'wikibase-statementview', @@ -97,7 +98,7 @@ $editSectionHtml, $referencesHeadingHtml, $referencesHtml, - $references->isEmpty() ? '' : 'wikibase-initially-collapsed' + $collapseReferences ? 'wikibase-initially-collapsed' : '' ); } diff --git a/view/tests/phpunit/EmptyEditSectionGeneratorTest.php b/view/tests/phpunit/EmptyEditSectionGeneratorTest.php new file mode 100644 index 0000000..5b73e3b --- /dev/null +++ b/view/tests/phpunit/EmptyEditSectionGeneratorTest.php @@ -0,0 +1,98 @@ +<?php + +namespace Wikibase\View\Tests; + +use PHPUnit_Framework_TestCase; +use Wikibase\DataModel\Entity\PropertyId; +use Wikibase\DataModel\Snak\PropertyNoValueSnak; +use Wikibase\DataModel\Statement\Statement; +use Wikibase\View\EmptyEditSectionGenerator; + +/** + * @covers Wikibase\View\EmptyEditSectionGenerator + * + * @group Wikibase + * @group WikibaseView + * + * @license GPL-2.0+ + * @author Adrian Heine <adrian.he...@wikimedia.de> + */ +class EmptyEditSectionGeneratorTest extends PHPUnit_Framework_TestCase { + + /** + * @dataProvider getAddStatementToGroupSectionProvider + */ + public function testGetAddStatementToGroupSection( $propertyId, $entityId ) { + $generator = $this->newEmptyEditSectionGenerator(); + + $this->assertEquals( + '', + $generator->getAddStatementToGroupSection( $propertyId, $entityId ) + ); + } + + public function getAddStatementToGroupSectionProvider() { + return [ + [ new PropertyId( 'P1' ), null ] + ]; + } + + /** + * @dataProvider getLabelDescriptionAliasesEditSectionProvider + */ + public function testGetLabelDescriptionAliasesEditSection( $languageCode, $entityId ) { + $generator = $this->newEmptyEditSectionGenerator(); + + $this->assertEquals( + '', + $generator->getLabelDescriptionAliasesEditSection( $languageCode, $entityId ) + ); + } + + public function getLabelDescriptionAliasesEditSectionProvider() { + return [ + [ 'en', new PropertyId( 'P1' ) ] + ]; + } + + /** + * @dataProvider getSiteLinksEditSectionProvider + */ + public function testGetSiteLinksEditSection( $entityId ) { + $generator = $this->newEmptyEditSectionGenerator(); + + $this->assertEquals( + '', + $generator->getSiteLinksEditSection( $entityId ) + ); + } + + public function getSiteLinksEditSectionProvider() { + return [ + [ new PropertyId( 'P1' ) ] + ]; + } + + /** + * @dataProvider getStatementEditSection + */ + public function testGetStatementEditSection( $statement ) { + $generator = $this->newEmptyEditSectionGenerator(); + + $this->assertEquals( + '', + $generator->getStatementEditSection( $statement ) + ); + } + + public function getStatementEditSection() { + return [ + [ new Statement( new PropertyNoValueSnak( new PropertyId( 'P1' ) ) ) ] + ]; + } + + private function newEmptyEditSectionGenerator() { + return new EmptyEditSectionGenerator(); + } + +} diff --git a/view/tests/phpunit/StatementHtmlGeneratorTest.php b/view/tests/phpunit/StatementHtmlGeneratorTest.php index b0b4930..99e0506 100644 --- a/view/tests/phpunit/StatementHtmlGeneratorTest.php +++ b/view/tests/phpunit/StatementHtmlGeneratorTest.php @@ -114,7 +114,14 @@ return $testCases; } - public function testGivenNoReferences_SectionIsNotCollapsed() { + /** + * @dataProvider referencesProvider + */ + public function testCollapsedReferences( + Statement $statement, + $editSectionHtml, + $expected + ) { $templateFactory = TemplateFactory::getDefaultInstance(); $statementHtmlGenerator = new StatementHtmlGenerator( $templateFactory, @@ -123,30 +130,26 @@ new DummyLocalizedTextProvider() ); - $snak = new PropertyNoValueSnak( 1 ); - $statement = new Statement( $snak ); + $html = $statementHtmlGenerator->getHtmlForStatement( $statement, $editSectionHtml ); - $html = $statementHtmlGenerator->getHtmlForStatement( $statement, '<EDIT SECTION HTML>' ); - - $this->assertNotContains( 'wikibase-initially-collapsed', $html ); + $this->assertSame( + $expected ? 1 : 0, + substr_count( $html, 'wikibase-initially-collapsed' ) + ); } - public function testGivenReferencedStatement_SectionIsCollapsed() { - $templateFactory = TemplateFactory::getDefaultInstance(); - $statementHtmlGenerator = new StatementHtmlGenerator( - $templateFactory, - $this->getSnakHtmlGeneratorMock(), - new BasicNumberLocalizer(), - new DummyLocalizedTextProvider() - ); - + public function referencesProvider() { $snak = new PropertyNoValueSnak( 1 ); $statement = new Statement( $snak ); - $statement->addNewReference( $snak ); + $referencedStatement = clone $statement; + $referencedStatement->addNewReference( $snak ); - $html = $statementHtmlGenerator->getHtmlForStatement( $statement, '<EDIT SECTION HTML>' ); - - $this->assertContains( 'wikibase-initially-collapsed', $html ); + return [ + [ $statement, '', false ], + [ $statement, '<EDIT SECTION>', false ], + [ $referencedStatement, '', false ], + [ $referencedStatement, '<EDIT SECTION>', true ], + ]; } } -- To view, visit https://gerrit.wikimedia.org/r/401753 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I9da46c36d8152a779ce7ac04a933197615c0cbbf Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: wmf/1.31.0-wmf.15 Gerrit-Owner: Chad <ch...@wikimedia.org> Gerrit-Reviewer: Chad <ch...@wikimedia.org> Gerrit-Reviewer: Ladsgroup <ladsgr...@gmail.com> Gerrit-Reviewer: WMDE-leszek <leszek.mani...@wikimedia.de> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits