jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/326074 )
Change subject: Avatars in page diff views ...................................................................... Avatars in page diff views Requires MW 1.28 (with https://gerrit.wikimedia.org/r/326075) or newer. Based on code written by Scott Cushman for wikiHow, modified by Jack Phoenix and SamanthaNguyen for use in the SocialProfile extension. Change-Id: I296c11cd64cd405df78b052604d8a9047679941e --- A UserProfile/AvatarsInDiffs.css M UserProfile/UserProfile.php M UserProfile/UserProfileHooks.php 3 files changed, 183 insertions(+), 1 deletion(-) Approvals: Jack Phoenix: Looks good to me, approved jenkins-bot: Verified diff --git a/UserProfile/AvatarsInDiffs.css b/UserProfile/AvatarsInDiffs.css new file mode 100644 index 0000000..b412e1a --- /dev/null +++ b/UserProfile/AvatarsInDiffs.css @@ -0,0 +1,58 @@ +/* Various interesting bits and pieces from wikiHow's /skins/common/diff.css + * @date 25 April 2015 (with tweaks in December 2016 to remove stuff we don't + * need for SocialProfile) + */ +table.diff td { + text-align: left; +} + +#mw-diff-otitle1, +#mw-diff-ntitle1, +#mw-diff-otitle4, +#mw-diff-ntitle4, +.rccomment { + text-align: center; +} + +#mw-diff-otitle2, +#mw-diff-ntitle2 { + padding: .5em; + margin: 1em 0; +} + +#mw-diff-oinfo .comment { + display: block; +} + +table.diff td.diff-multi { + text-align: center; +} + +table.diff td div { + /* As fallback, scrollbars will be added for very wide cells + instead of text overflowing or widening */ + overflow: auto; +} + +table.diff h4 { + font-size: 14px; + background: none; + padding: 0; + margin: 0; +} + +/* details at top */ +.diff_details { + margin: 0 auto; +} + +.diff-avatar { + border-radius: .125em; + float: left; + margin: 0 .75em 0 0; +} + +.diff-hr { + border: 0; + margin: 1em 0 0 0; +} diff --git a/UserProfile/UserProfile.php b/UserProfile/UserProfile.php index a72d744..506b322 100644 --- a/UserProfile/UserProfile.php +++ b/UserProfile/UserProfile.php @@ -3,6 +3,9 @@ define( 'NS_USER_PROFILE', 202 ); define( 'NS_USER_WIKI', 200 ); +// Show user avatars in diffs? +$wgUserProfileAvatarsInDiffs = false; + /** * If you want to require users to have a certain number of certain things, like * five edits or three friends or two comments or whatever (is supported by @@ -92,6 +95,14 @@ 'position' => 'top' ); +// CSS for user avatars in page diffs +$wgResourceModules['ext.socialprofile.userprofile.diff'] = array( + 'styles' => 'AvatarsInDiffs.css', + 'localBasePath' => __DIR__, + 'remoteExtPath' => 'SocialProfile/UserProfile', + 'position' => 'top' +); + # Add new log types for profile edits and avatar uploads global $wgLogTypes, $wgLogNames, $wgLogHeaders, $wgLogActions; $wgLogTypes[] = 'profile'; @@ -105,3 +116,8 @@ $wgLogActions['avatar/avatar'] = 'avatarlogentry'; $wgHooks['ArticleFromTitle'][] = 'UserProfileHooks::onArticleFromTitle'; + +$wgHooks['DifferenceEngineShowDiff'][] = 'UserProfileHooks::onDifferenceEngineShowDiff'; +$wgHooks['DifferenceEngineShowDiffPage'][] = 'UserProfileHooks::onDifferenceEngineShowDiffPage'; +$wgHooks['DifferenceEngineOldHeader'][] = 'UserProfileHooks::onDifferenceEngineOldHeader'; +$wgHooks['DifferenceEngineNewHeader'][] = 'UserProfileHooks::onDifferenceEngineNewHeader'; \ No newline at end of file diff --git a/UserProfile/UserProfileHooks.php b/UserProfile/UserProfileHooks.php index bcb526a..eed7a06 100644 --- a/UserProfile/UserProfileHooks.php +++ b/UserProfile/UserProfileHooks.php @@ -60,4 +60,112 @@ return true; } -} \ No newline at end of file + /** + * Load the necessary CSS for avatars in diffs if that feature is enabled. + * + * @param DifferenceEngine $differenceEngine + * @return bool + */ + public static function onDifferenceEngineShowDiff( $differenceEngine ) { + global $wgUserProfileAvatarsInDiffs; + if ( $wgUserProfileAvatarsInDiffs ) { + $differenceEngine->getOutput()->addModuleStyles( 'ext.socialprofile.userprofile.diff' ); + } + return true; + } + + /** + * Load the necessary CSS for avatars in diffs if that feature is enabled. + * + * @param OutputPage $out + * @return bool + */ + public static function onDifferenceEngineShowDiffPage( $out ) { + global $wgUserProfileAvatarsInDiffs; + if ( $wgUserProfileAvatarsInDiffs ) { + $out->addModuleStyles( 'ext.socialprofile.userprofile.diff' ); + } + return true; + } + + /** + * Displays user avatars in diffs. + * + * This is largely based on wikiHow's /extensions/wikihow/hooks/DiffHooks.php + * (as of 2016-07-08) with some tweaks for SocialProfile. + * + * @author Scott Cushman@wikiHow -- original code + * @author Jack Phoenix -- modifications + */ + public static function onDifferenceEngineOldHeader( $differenceEngine, &$oldHeader, $prevLink, $oldMinor, $diffOnly, $ldel, $unhide ) { + global $wgUserProfileAvatarsInDiffs; + + if ( !$wgUserProfileAvatarsInDiffs ) { + return true; + } + + $oldRevisionHeader = $differenceEngine->getRevisionHeader( $differenceEngine->mOldRev, 'complete', 'old' ); + + $username = $differenceEngine->mOldRev->getUserText(); + $avatar = new wAvatar( $differenceEngine->mOldRev->getUser(), 'l' ); + $avatarElement = $avatar->getAvatarURL( [ + 'alt' => $username, + 'title' => $username, + 'class' => 'diff-avatar' + ] ); + + $oldHeader = '<div id="mw-diff-otitle1"><h4>' . $prevLink . $oldRevisionHeader . '</h4></div>' . + '<div id="mw-diff-otitle2">' . $avatarElement . '<div id="mw-diff-oinfo">' . + Linker::revUserTools( $differenceEngine->mOldRev, !$unhide ) . + //'<br /><div id="mw-diff-odaysago">' . $differenceEngine->mOldRev->getTimestamp() . '</div>' . + Linker::revComment( $differenceEngine->mOldRev, !$diffOnly, !$unhide ) . + '</div></div>' . + '<div id="mw-diff-otitle3" class="rccomment">' . $oldMinor . $ldel . '</div>' . + '<div id="mw-diff-otitle4">' . $prevLink . '</div>'; + + return true; + } + + /** + * Displays user avatars in diffs. + * + * This is largely based on wikiHow's /extensions/wikihow/hooks/DiffHooks.php + * (as of 2016-07-08) with some tweaks for SocialProfile. + * + * @author Scott Cushman@wikiHow -- original code + * @author Jack Phoenix -- modifications + */ + public static function onDifferenceEngineNewHeader( $differenceEngine, &$newHeader, $formattedRevisionTools, $nextLink, $rollback, $newMinor, $diffOnly, $rdel, $unhide ) { + global $wgUserProfileAvatarsInDiffs; + + if ( !$wgUserProfileAvatarsInDiffs ) { + return true; + } + + $newRevisionHeader = + $differenceEngine->getRevisionHeader( $differenceEngine->mNewRev, 'complete', 'new' ) . + ' ' . implode( ' ', $formattedRevisionTools ); + + $username = $differenceEngine->mNewRev->getUserText(); + $avatar = new wAvatar( $differenceEngine->mNewRev->getUser(), 'l' ); + $avatarElement = $avatar->getAvatarURL( [ + 'alt' => $username, + 'title' => $username, + 'class' => 'diff-avatar' + ] ); + + $newHeader = '<div id="mw-diff-ntitle1"><h4>' . $newRevisionHeader . $nextLink . '</h4></div>' . + '<div id="mw-diff-ntitle2">' . $avatarElement . '<div id="mw-diff-oinfo">' + . Linker::revUserTools( $differenceEngine->mNewRev, !$unhide ) . + " $rollback " . + //'<br /><div id="mw-diff-ndaysago">' . $differenceEngine->mNewRev->getTimestamp() . '</div>' . + Linker::revComment( $differenceEngine->mNewRev, !$diffOnly, !$unhide ) . + '</div></div>' . + '<div id="mw-diff-ntitle3" class="rccomment">' . $newMinor . $rdel . '</div>' . + '<div id="mw-diff-ntitle4">' . $differenceEngine->markPatrolledLink() . '</div>'; + + return true; + } + + +} -- To view, visit https://gerrit.wikimedia.org/r/326074 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I296c11cd64cd405df78b052604d8a9047679941e Gerrit-PatchSet: 11 Gerrit-Project: mediawiki/extensions/SocialProfile Gerrit-Branch: master Gerrit-Owner: Jack Phoenix <[email protected]> Gerrit-Reviewer: Jack Phoenix <[email protected]> Gerrit-Reviewer: Lewis Cawte <[email protected]> Gerrit-Reviewer: SamanthaNguyen <[email protected]> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
