X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Fchanges%2FChangesList.php;h=cac476929b3282f0224aa6f3487e59b433ccfea1;hp=5aa693ddd9a0e6248b9c928f5ef8037ce06f9fec;hb=6c9a2923fe1ee3a65cb027be5e781772f2b12fbd;hpb=08e0ed2b70ba5986a96c701f84a7679c98a6f2fd diff --git a/includes/changes/ChangesList.php b/includes/changes/ChangesList.php index 5aa693ddd9..cac476929b 100644 --- a/includes/changes/ChangesList.php +++ b/includes/changes/ChangesList.php @@ -41,6 +41,9 @@ class ChangesList extends ContextSource { protected $rclistOpen; protected $rcMoveIndex; + /** @var callable */ + protected $changeLinePrefixer; + /** @var BagOStuff */ protected $watchMsgCache; @@ -102,7 +105,7 @@ class ChangesList extends ContextSource { * * @since 1.27 * - * @param RecentChange $rc Passed by reference + * @param RecentChange &$rc Passed by reference * @param bool $watched (default false) * @param int $linenumber (default null) * @@ -169,12 +172,14 @@ class ChangesList extends ContextSource { * @return array of classes */ protected function getHTMLClasses( $rc, $watched ) { - $classes = []; + $classes = [ self::CSS_CLASS_PREFIX . 'line' ]; $logType = $rc->mAttribs['rc_log_type']; if ( $logType ) { + $classes[] = self::CSS_CLASS_PREFIX . 'log'; $classes[] = Sanitizer::escapeClass( self::CSS_CLASS_PREFIX . 'log-' . $logType ); } else { + $classes[] = self::CSS_CLASS_PREFIX . 'edit'; $classes[] = Sanitizer::escapeClass( self::CSS_CLASS_PREFIX . 'ns' . $rc->mAttribs['rc_namespace'] . '-' . $rc->mAttribs['rc_title'] ); $classes[] = Sanitizer::escapeClass( self::CSS_CLASS_PREFIX . 'ns-' . @@ -362,7 +367,7 @@ class ChangesList extends ContextSource { } /** - * @param string $s HTML to update + * @param string &$s HTML to update * @param mixed $rc_timestamp */ public function insertDateHeader( &$s, $rc_timestamp ) { @@ -379,7 +384,7 @@ class ChangesList extends ContextSource { } /** - * @param string $s HTML to update + * @param string &$s HTML to update * @param Title $title * @param string $logtype */ @@ -392,8 +397,8 @@ class ChangesList extends ContextSource { } /** - * @param string $s HTML to update - * @param RecentChange $rc + * @param string &$s HTML to update + * @param RecentChange &$rc * @param bool|null $unpatrolled Unused variable, since 1.27. */ public function insertDiffHist( &$s, &$rc, $unpatrolled = null ) { @@ -442,7 +447,7 @@ class ChangesList extends ContextSource { } /** - * @param string $s Article link will be appended to this string, in place. + * @param string &$s Article link will be appended to this string, in place. * @param RecentChange $rc * @param bool $unpatrolled * @param bool $watched @@ -453,7 +458,7 @@ class ChangesList extends ContextSource { } /** - * @param RecentChange $rc + * @param RecentChange &$rc * @param bool $unpatrolled * @param bool $watched * @return string HTML @@ -508,7 +513,7 @@ class ChangesList extends ContextSource { /** * Insert time timestamp string from $rc into $s * - * @param string $s HTML to update + * @param string &$s HTML to update * @param RecentChange $rc */ public function insertTimestamp( &$s, $rc ) { @@ -620,8 +625,8 @@ class ChangesList extends ContextSource { /** Inserts a rollback link * - * @param string $s - * @param RecentChange $rc + * @param string &$s + * @param RecentChange &$rc */ public function insertRollback( &$s, &$rc ) { if ( $rc->mAttribs['rc_type'] == RC_EDIT @@ -658,9 +663,9 @@ class ChangesList extends ContextSource { } /** - * @param string $s - * @param RecentChange $rc - * @param array $classes + * @param string &$s + * @param RecentChange &$rc + * @param array &$classes */ public function insertTags( &$s, &$rc, &$classes ) { if ( empty( $rc->mAttribs['ts_tags'] ) ) { @@ -678,7 +683,7 @@ class ChangesList extends ContextSource { /** * @param RecentChange $rc - * @param array $classes + * @param array &$classes * @return string * @since 1.26 */ @@ -747,20 +752,34 @@ class ChangesList extends ContextSource { * @return string[] attribute name => value */ protected function getDataAttributes( RecentChange $rc ) { + $attrs = []; + $type = $rc->getAttribute( 'rc_source' ); switch ( $type ) { case RecentChange::SRC_EDIT: case RecentChange::SRC_NEW: - return [ - 'data-mw-revid' => $rc->mAttribs['rc_this_oldid'], - ]; + $attrs['data-mw-revid'] = $rc->mAttribs['rc_this_oldid']; + break; case RecentChange::SRC_LOG: - return [ - 'data-mw-logid' => $rc->mAttribs['rc_logid'], - 'data-mw-logaction' => $rc->mAttribs['rc_log_type'] . '/' . $rc->mAttribs['rc_log_action'], - ]; - default: - return []; + $attrs['data-mw-logid'] = $rc->mAttribs['rc_logid']; + $attrs['data-mw-logaction'] = + $rc->mAttribs['rc_log_type'] . '/' . $rc->mAttribs['rc_log_action']; + break; } + + $attrs[ 'data-mw-ts' ] = $rc->getAttribute( 'rc_timestamp' ); + + return $attrs; + } + + /** + * Sets the callable that generates a change line prefix added to the beginning of each line. + * + * @param callable $prefixer Callable to run that generates the change line prefix. + * Takes three parameters: a RecentChange object, a ChangesList object, + * and whether the current entry is a grouped entry. + */ + public function setChangeLinePrefixer( callable $prefixer ) { + $this->changeLinePrefixer = $prefixer; } }