return $processor->getHtml();
}
+ /**
+ * @since 6.1
+ */
+ public function getPlainTextMessage(): string
+ {
+ $processor = new HtmlOutputProcessor();
+ $processor->setOutputType('text/plain');
+ $processor->process($this->message, 'com.woltlab.wcf.comment', $this->commentID);
+
+ return $processor->getHtml();
+ }
+
/**
* Returns a version of this message optimized for use in emails.
*
{
switch ($mimeType) {
case 'text/plain':
- $processor = new HtmlOutputProcessor();
- $processor->setOutputType('text/plain');
- $processor->process($this->message, 'com.woltlab.wcf.comment', $this->commentID);
-
- return $processor->getHtml();
+ return $this->getPlainTextMessage();
case 'text/html':
return $this->getSimplifiedFormattedMessage();
}
return $processor->getHtml();
}
+ /**
+ * @since 6.1
+ */
+ public function getPlainTextMessage(): string
+ {
+ $processor = new HtmlOutputProcessor();
+ $processor->setOutputType('text/plain');
+ $processor->process($this->message, 'com.woltlab.wcf.comment.response', $this->responseID);
+
+ return $processor->getHtml();
+ }
+
/**
* Returns a version of this message optimized for use in emails.
*
{
switch ($mimeType) {
case 'text/plain':
- $processor = new HtmlOutputProcessor();
- $processor->setOutputType('text/plain');
- $processor->process($this->message, 'com.woltlab.wcf.comment.response', $this->responseID);
-
- return $processor->getHtml();
+ return $this->getPlainTextMessage();
case 'text/html':
return $this->getSimplifiedFormattedMessage();
}
*/
public $filteredByFollowedUsers = false;
- /**
- * is true if filtering by followed users yielded no results
- * @var bool
- */
- public $filteredByFollowedUsersOverride = false;
-
/**
* @inheritDoc
*/
'eventList' => $this->objectList,
'lastEventTime' => $this->objectList->getLastEventTime(),
'filteredByFollowedUsers' => $this->filteredByFollowedUsers,
- 'filteredByFollowedUsersOverride' => $this->filteredByFollowedUsersOverride,
], true);
} else {
return WCF::getTPL()->fetch('boxRecentActivitySidebar', 'wcf', [
if (!$hasContent) {
if (($this->getBox()->position == 'contentTop' || $this->getBox()->position == 'contentBottom') && $this->filteredByFollowedUsers) {
- $this->filteredByFollowedUsersOverride = true;
-
- $this->loadContent();
-
- return \count($this->objectList) > 0;
+ // Box is empty, but we show it anyway so that the user can change the filtering.
+ return true;
}
}
{
// apply filter
if (($this->getBox()->position == 'contentTop' || $this->getBox()->position == 'contentBottom') && $this->filteredByFollowedUsers) {
- if (!$this->filteredByFollowedUsersOverride) {
- /** @noinspection PhpUndefinedMethodInspection */
- $this->objectList->getConditionBuilder()->add(
- 'user_activity_event.userID IN (?)',
- [WCF::getUserProfileHandler()->getFollowingUsers()]
- );
- }
+ /** @noinspection PhpUndefinedMethodInspection */
+ $this->objectList->getConditionBuilder()->add(
+ 'user_activity_event.userID IN (?)',
+ [WCF::getUserProfileHandler()->getFollowingUsers()]
+ );
} elseif (!empty(UserProfileHandler::getInstance()->getIgnoredUsers(UserIgnore::TYPE_HIDE_MESSAGES))) {
$this->objectList->getConditionBuilder()->add(
"user_activity_event.userID NOT IN (?)",
use wcf\data\article\ViewableArticleList;
use wcf\system\SingletonFactory;
use wcf\system\WCF;
+use wcf\util\StringUtil;
/**
* User activity event implementation for responses to article comments.
}
$event->setIsAccessible();
- // title
- $text = WCF::getLanguage()->getDynamicVariable(
+ $event->setTitle(WCF::getLanguage()->getDynamicVariable(
'wcf.article.recentActivity.articleCommentResponse',
[
'commentAuthor' => $this->commentAuthors[$comment->userID],
'commentID' => $comment->commentID,
'responseID' => $response->responseID,
'article' => $article,
+ 'author' => $event->getUserProfile(),
]
+ ));
+ $event->setDescription(
+ StringUtil::encodeHTML(
+ StringUtil::truncate($response->getPlainTextMessage(), 500)
+ ),
+ true
);
- $event->setTitle($text);
+ $event->setLink($response->getLink());
- // description
- $event->setDescription($response->getExcerpt());
continue;
}
}
use wcf\system\cache\runtime\ViewableCommentRuntimeCache;
use wcf\system\SingletonFactory;
use wcf\system\WCF;
+use wcf\util\StringUtil;
/**
* User activity event implementation for article comments.
}
$event->setIsAccessible();
- // add title
- $text = WCF::getLanguage()->getDynamicVariable('wcf.article.recentActivity.articleComment', [
+ $event->setTitle(WCF::getLanguage()->getDynamicVariable('wcf.article.recentActivity.articleComment', [
'article' => $article,
'commentID' => $comment->commentID,
- ]);
- $event->setTitle($text);
+ 'author' => $event->getUserProfile(),
+ ]));
+ $event->setDescription(
+ StringUtil::encodeHTML(
+ StringUtil::truncate($comment->getPlainTextMessage(), 500)
+ ),
+ true
+ );
+ $event->setLink($comment->getLink());
- // add text
- $event->setDescription($comment->getExcerpt());
continue;
}
}
if ($article->canRead()) {
$event->setIsAccessible();
- $text = WCF::getLanguage()->getDynamicVariable(
+ $event->setTitle(WCF::getLanguage()->getDynamicVariable(
'wcf.article.recentActivity',
- ['article' => $article]
- );
- $event->setTitle($text);
- $event->setDescription($article->getFormattedTeaser());
+ [
+ 'article' => $article,
+ 'author' => $event->getUserProfile(),
+ ]
+ ));
+ $event->setDescription(\strip_tags($article->getFormattedTeaser()), true);
+ $event->setLink($article->getLink());
}
} else {
$event->setIsOrphaned();
$text = WCF::getLanguage()->getDynamicVariable(
'wcf.user.profile.recentActivity.follow',
- ['user' => $users[$event->objectID]]
+ [
+ 'user' => $users[$event->objectID],
+ 'author' => $event->getUserProfile(),
+ ]
);
$event->setTitle($text);
+ $event->setLink($users[$event->objectID]->getLink());
} else {
$event->setIsOrphaned();
}
}
$event->setIsAccessible();
- // short output
- $text = WCF::getLanguage()->getDynamicVariable('wcf.article.recentActivity.likedArticle', [
+ $event->setTitle(WCF::getLanguage()->getDynamicVariable('wcf.article.recentActivity.likedArticle', [
'article' => $article,
'reactionType' => ReactionHandler::getInstance()->getReactionTypeByID(
$event->reactionTypeID ?? $event->reactionType->reactionTypeID
),
- ]);
- $event->setTitle($text);
-
- // output
- $event->setDescription($article->getFormattedTeaser());
+ 'author' => $event->getUserProfile(),
+ ]));
+ $event->setLink($article->getLink());
} else {
$event->setIsOrphaned();
}
use wcf\data\page\PageCache;
use wcf\system\SingletonFactory;
use wcf\system\WCF;
+use wcf\util\StringUtil;
/**
* User activity event implementation for responses to page comments.
}
$event->setIsAccessible();
- // title
- $text = WCF::getLanguage()->getDynamicVariable('wcf.page.recentActivity.pageCommentResponse', [
+ $event->setTitle(WCF::getLanguage()->getDynamicVariable('wcf.page.recentActivity.pageCommentResponse', [
'commentAuthor' => $this->commentAuthors[$comment->userID],
'commentID' => $comment->commentID,
'responseID' => $response->responseID,
'page' => $page,
- ]);
- $event->setTitle($text);
+ 'author' => $event->getUserProfile(),
+ ]));
+ $event->setDescription(
+ StringUtil::encodeHTML(
+ StringUtil::truncate($response->getPlainTextMessage(), 500)
+ ),
+ true
+ );
+ $event->setLink($response->getLink());
- // description
- $event->setDescription($response->getExcerpt());
continue;
}
}
use wcf\system\cache\runtime\ViewableCommentRuntimeCache;
use wcf\system\SingletonFactory;
use wcf\system\WCF;
+use wcf\util\StringUtil;
/**
* User activity event implementation for page comments.
}
$event->setIsAccessible();
- // add title
- $text = WCF::getLanguage()->getDynamicVariable('wcf.page.recentActivity.pageComment', [
+ $event->setTitle(WCF::getLanguage()->getDynamicVariable('wcf.page.recentActivity.pageComment', [
'page' => $page,
'commentID' => $comment->commentID,
- ]);
- $event->setTitle($text);
+ 'author' => $event->getUserProfile(),
+ ]));
+ $event->setDescription(
+ StringUtil::encodeHTML(
+ StringUtil::truncate($comment->getPlainTextMessage(), 500)
+ ),
+ true
+ );
+ $event->setLink($comment->getLink());
- // add text
- $event->setDescription($comment->getExcerpt());
continue;
}
}
use wcf\system\cache\runtime\UserProfileRuntimeCache;
use wcf\system\SingletonFactory;
use wcf\system\WCF;
+use wcf\util\StringUtil;
/**
* User activity event implementation for profile comment responses.
if (!$users[$comment->objectID]->isProtected()) {
$event->setIsAccessible();
- // title
- $text = WCF::getLanguage()->getDynamicVariable(
+ $event->setTitle(WCF::getLanguage()->getDynamicVariable(
'wcf.user.profile.recentActivity.profileCommentResponse',
[
'commentAuthor' => $this->commentAuthors[$comment->userID],
'commentID' => $comment->commentID,
'responseID' => $response->responseID,
'user' => $users[$comment->objectID],
+ 'author' => $event->getUserProfile(),
]
+ ));
+ $event->setDescription(
+ StringUtil::encodeHTML(
+ StringUtil::truncate($response->getPlainTextMessage(), 500)
+ ),
+ true
);
- $event->setTitle($text);
-
- // description
- $event->setDescription($response->getExcerpt());
+ $event->setLink($response->getLink());
}
continue;
}
use wcf\system\cache\runtime\ViewableCommentRuntimeCache;
use wcf\system\SingletonFactory;
use wcf\system\WCF;
+use wcf\util\StringUtil;
/**
* User activity event implementation for profile comments.
if (!$users[$comment->objectID]->isProtected()) {
$event->setIsAccessible();
- $user = $users[$comment->objectID];
- $text = WCF::getLanguage()->getDynamicVariable(
+ $event->setTitle(WCF::getLanguage()->getDynamicVariable(
'wcf.user.profile.recentActivity.profileComment',
[
'commentID' => $comment->commentID,
- 'user' => $user,
+ 'user' => $users[$comment->objectID],
+ 'author' => $event->getUserProfile(),
]
+ ));
+ $event->setDescription(
+ StringUtil::encodeHTML(
+ StringUtil::truncate($comment->getPlainTextMessage(), 500)
+ ),
+ true
);
- $event->setTitle($text);
-
- // output
- $event->setDescription($comment->getExcerpt());
+ $event->setLink($comment->getLink());
}
continue;
}
$event->setTitle(WCF::getLanguage()->getDynamicVariable(
'wcf.user.trophy.recentActivity.received',
- ['userTrophy' => $trophies[$event->objectID]]
+ [
+ 'userTrophy' => $trophies[$event->objectID],
+ 'author' => $event->getUserProfile(),
+ ]
));
- $event->setDescription($trophies[$event->objectID]->getDescription());
+ $event->setDescription(\strip_tags($trophies[$event->objectID]->getDescription()));
+ $event->setLink($event->getUserProfile()->getLink());
} else {
$event->setIsOrphaned();
}
<item name="wcf.article.aboutAuthor"><![CDATA[Über den Autor]]></item>
<item name="wcf.article.articleComments"><![CDATA[{plural value=$articleContent->comments one='# Kommentar' other='# Kommentare'}]]></item>
<item name="wcf.article.articleViews"><![CDATA[{#$article->views} Mal gelesen]]></item>
- <item name="wcf.article.recentActivity.likedArticle"><![CDATA[Hat mit <span title="{$reactionType->getTitle()}" class="jsTooltip">{@$reactionType->renderIcon()}</span> auf den Artikel <a href="{$article->getLink()}">{$article->getTitle()}</a> reagiert.]]></item>
- <item name="wcf.article.recentActivity.articleComment"><![CDATA[Hat einen Kommentar zum Artikel <a href="{$article->getLink()}#comment{$commentID}">{$article->getTitle()}</a> geschrieben.]]></item>
- <item name="wcf.article.recentActivity.articleCommentResponse"><![CDATA[Hat auf einen Kommentar von <a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a> zum Artikel <a href="{$article->getLink()}#comment{@$commentID}/response{@$responseID}">{$article->getTitle()}</a> geantwortet.]]></item>
+ <item name="wcf.article.recentActivity.likedArticle"><![CDATA[<strong>{$author}</strong> hat mit <span title="{$reactionType->getTitle()}" class="jsTooltip">{unsafe:$reactionType->renderIcon()}</span> auf den Artikel <strong>{$article->getTitle()}</strong> reagiert.]]></item>
+ <item name="wcf.article.recentActivity.articleComment"><![CDATA[<strong>{$author}</strong> hat einen Kommentar zum Artikel <strong>{$article->getTitle()}</strong> geschrieben.]]></item>
+ <item name="wcf.article.recentActivity.articleCommentResponse"><![CDATA[<strong>{$author}</strong> hat auf einen Kommentar von <strong>{$commentAuthor->username}</strong> zum Artikel <strong>{$article->getTitle()}</strong> geantwortet.]]></item>
<item name="wcf.article.articles"><![CDATA[Artikel]]></item>
<item name="wcf.article.comment"><![CDATA[Artikel-Kommentar]]></item>
<item name="wcf.article.commentResponse"><![CDATA[Antwort auf Artikel-Kommentar]]></item>
<item name="wcf.article.sortField.time"><![CDATA[Datum]]></item>
<item name="wcf.article.sortField.views"><![CDATA[Zugriffe]]></item>
<item name="wcf.article.showArticlesWritten"><![CDATA[Artikel von {$user->username}]]></item>
- <item name="wcf.article.recentActivity"><![CDATA[Hat den Artikel {if $article->hasLabels()}<ul class="labelList">{foreach from=$article->getLabels() item=label}<li>{@$label->render()}</li>{/foreach}</ul> {/if}<a href="{$article->getLink()}">{$article->getTitle()}</a> verfasst.]]></item>
+ <item name="wcf.article.recentActivity"><![CDATA[<strong>{$author}</strong> hat den Artikel {if $article->hasLabels()}<ul class="labelList">{foreach from=$article->getLabels() item=label}<li>{unsafe:$label->render()}</li>{/foreach}</ul> {/if}<strong>{$article->getTitle()}</strong> verfasst.]]></item>
<item name="wcf.article.button.sort"><![CDATA[Sortieren]]></item>
<item name="wcf.article.search"><![CDATA[Artikel durchsuchen]]></item>
<item name="wcf.article.search.error.noResults"><![CDATA[Es wurden keine Ergebnisse gefunden.]]></item>
<item name="wcf.page.search.results"><![CDATA[Suchergebnisse]]></item>
<item name="wcf.page.comment"><![CDATA[Seiten-Kommentar]]></item>
<item name="wcf.page.commentResponse"><![CDATA[Antwort auf Seiten-Kommentar]]></item>
- <item name="wcf.page.recentActivity.pageComment"><![CDATA[Hat einen Kommentar auf der Seite <a href="{$page->getLink()}#comment{$commentID}">{$page->getTitle()}</a> geschrieben.]]></item>
- <item name="wcf.page.recentActivity.pageCommentResponse"><![CDATA[Hat auf einen Kommentar von <a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a> auf der Seite <a href="{$page->getLink()}#comment{@$commentID}/response{@$responseID}">{$page->getTitle()}</a> geantwortet.]]></item>
+ <item name="wcf.page.recentActivity.pageComment"><![CDATA[<strong>{$author}</strong> hat einen Kommentar auf der Seite <strong>{$page->getTitle()}</strong> geschrieben.]]></item>
+ <item name="wcf.page.recentActivity.pageCommentResponse"><![CDATA[<strong>{$author}</strong> hat auf einen Kommentar von <strong>{$commentAuthor}</strong> auf der Seite <strong>{$page->getTitle()}</strong> geantwortet.]]></item>
<item name="wcf.page.sidebar.left"><![CDATA[Linke Seitenleiste]]></item>
<item name="wcf.page.sidebar.right"><![CDATA[Rechte Seitenleiste]]></item>
<item name="wcf.page.breadcrumb"><![CDATA[Verlaufsnavigation]]></item>
<item name="wcf.user.trophy.specialTrophies.description"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Wähle{else}Wählen Sie{/if} hier {if LANGUAGE_USE_INFORMAL_VARIANT}deine{else}Ihre{/if} {if $__wcf->getSession()->getPermission('user.profile.trophy.maxUserSpecialTrophies') > 1}besonderen Trophäen{else}besondere Trophäe{/if} aus, welche im Profil und in der Nachrichten-Seitenleiste angezeigt {if $__wcf->getSession()->getPermission('user.profile.trophy.maxUserSpecialTrophies') > 1}werden. Es können maximal {#$__wcf->getSession()->getPermission('user.profile.trophy.maxUserSpecialTrophies')} Trophäen ausgewählt werden.{else}wird.{/if}]]></item>
<item name="wcf.user.trophy.specialTrophies.error.tooMany"><![CDATA[{if LANGUAGE_USE_INFORMAL_VARIANT}Du kannst{else}Sie können{/if} maximal {#$__wcf->session->getPermission('user.profile.trophy.maxUserSpecialTrophies')} Trophäen auswählen.]]></item>
<item name="wcf.user.trophy.specialTrophies.error.invalid"><![CDATA[Die angegebenen Trophäen sind ungültig.]]></item>
- <item name="wcf.user.trophy.recentActivity.received"><![CDATA[Hat die Trophäe <a href="{$userTrophy->getTrophy()->getLink()}">{$userTrophy->getTrophy()->getTitle()}</a> erhalten.]]></item>
+ <item name="wcf.user.trophy.recentActivity.received"><![CDATA[<strong>{$author}</strong> hat die Trophäe <strong>{$userTrophy->getTrophy()->getTitle()}</strong> erhalten.]]></item>
<item name="wcf.user.trophy.condition.excludedTrophies"><![CDATA[Ausgeschlossene Trophäen]]></item>
<item name="wcf.user.trophy.condition.excludedTrophyCategories"><![CDATA[Ausgeschlossene Trophäen Kategorien]]></item>
<item name="wcf.user.trophy.trophyAwarded"><![CDATA[{#$items} Mal vergeben]]></item>
<item name="wcf.user.recentActivity.condition.excludedObjectType"><![CDATA[Ausgeschlossene Aktivitäten]]></item>
<item name="wcf.user.recentActivity.scope.all"><![CDATA[Aktivitäten aller Benutzer]]></item>
<item name="wcf.user.recentActivity.scope.followedUsers"><![CDATA[Aktivitäten von Benutzern, denen {if LANGUAGE_USE_INFORMAL_VARIANT}du folgst{else}Sie folgen{/if}]]></item>
- <item name="wcf.user.recentActivity.scope.followedUsers.noResults"><![CDATA[Es gibt aktuell keine Aktivitäten von Benutzern, denen {if LANGUAGE_USE_INFORMAL_VARIANT}du folgst{else}Sie folgen{/if}. Es werden alle Aktivitäten angezeigt.]]></item>
+ <item name="wcf.user.recentActivity.scope.followedUsers.noResults"><![CDATA[Es gibt aktuell keine Aktivitäten von Benutzern, denen {if LANGUAGE_USE_INFORMAL_VARIANT}du folgst{else}Sie folgen{/if}.]]></item>
</category>
<category name="wcf.user.3rdparty">
<item name="wcf.user.3rdparty"><![CDATA[Drittanbieter]]></item>
<item name="wcf.user.profile.menu.about"><![CDATA[Über mich]]></item>
<item name="wcf.user.profile.menu.recentActivity"><![CDATA[Letzte Aktivitäten]]></item>
<item name="wcf.user.profile.oldUsername"><![CDATA[Hieß früher {$user->getOldUsername()}]]></item>
- <item name="wcf.user.profile.recentActivity.follow"><![CDATA[Folgt nun <a href="{link controller='User' object=$user}{/link}">{$user->username}</a>.]]></item>
+ <item name="wcf.user.profile.recentActivity.follow"><![CDATA[<strong>{$author}</strong> folgt nun <strong>{$user}</strong>.]]></item>
<item name="wcf.user.profile.visitors"><![CDATA[Profil-Besucher]]></item>
<item name="wcf.user.profile.content.wall.comment"><![CDATA[Kommentar an der Pinnwand]]></item>
<item name="wcf.user.profile.content.wall.commentResponse"><![CDATA[Antwort auf einen Pinnwand-Kommentar]]></item>
<item name="wcf.user.profile.content.wall.noEntries"><![CDATA[Es wurden noch keine Einträge an der Pinnwand verfasst.]]></item>
<item name="wcf.user.profile.menu.wall"><![CDATA[Pinnwand]]></item>
<item name="wcf.user.profile.menu.likes"><![CDATA[Reaktionen]]></item>
- <item name="wcf.user.profile.recentActivity.profileComment"><![CDATA[Hat einen Kommentar an die <a href="{link controller='User' object=$user}{/link}#wall/comment{@$commentID}">Pinnwand von {$user->username}</a> geschrieben.]]></item>
- <item name="wcf.user.profile.recentActivity.profileCommentResponse"><![CDATA[Hat auf einen Kommentar von <a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a> an der <a href="{link controller='User' object=$user}{/link}#wall/comment{@$commentID}/response{@$responseID}">Pinnwand von {$user->username}</a> geantwortet.]]></item>
+ <item name="wcf.user.profile.recentActivity.profileComment"><![CDATA[<strong>{$author}</strong> hat einen Kommentar an die <strong>Pinnwand von {$user}</strong> geschrieben.]]></item>
+ <item name="wcf.user.profile.recentActivity.profileCommentResponse"><![CDATA[<strong>{$author}</strong> hat auf einen Kommentar von <strong>{$commentAuthor}</strong> an der <strong>Pinnwand von {$user}</strong> geantwortet.]]></item>
<item name="wcf.user.profile.report"><![CDATA[Benutzerprofil melden]]></item>
<item name="wcf.user.profile.protected"><![CDATA[Der Benutzer hat den Zugriff auf sein vollständiges Profil eingeschränkt.]]></item>
<item name="wcf.user.profile.management"><![CDATA[Verwaltung]]></item>
<item name="wcf.article.aboutAuthor"><![CDATA[About the Author]]></item>
<item name="wcf.article.articleComments"><![CDATA[{plural value=$articleContent->comments one='# Comment' other='# Comments'}]]></item>
<item name="wcf.article.articleViews"><![CDATA[{#$article->views} View{if $article->views != 1}s{/if}]]></item>
- <item name="wcf.article.recentActivity.likedArticle"><![CDATA[Reacted with <span title="{$reactionType->getTitle()}" class="jsTooltip">{@$reactionType->renderIcon()}</span> to the article <a href="{$article->getLink()}">{$article->getTitle()}</a>.]]></item>
- <item name="wcf.article.recentActivity.articleComment"><![CDATA[Commented on article <a href="{$article->getLink()}#comment{$commentID}">{$article->getTitle()}</a>.]]></item>
- <item name="wcf.article.recentActivity.articleCommentResponse"><![CDATA[Replied to a comment by <a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a> on article <a href="{$article->getLink()}#comment{@$commentID}/response{@$responseID}">{$article->getTitle()}</a>.]]></item>
+ <item name="wcf.article.recentActivity.likedArticle"><![CDATA[<strong>{$author}</strong> reacted with <span title="{$reactionType->getTitle()}" class="jsTooltip">{unsafe:$reactionType->renderIcon()}</span> to the article <strong>{$article->getTitle()}</strong>.]]></item>
+ <item name="wcf.article.recentActivity.articleComment"><![CDATA[<strong>{$author}</strong> commented on article <strong>{$article->getTitle()}</strong>.]]></item>
+ <item name="wcf.article.recentActivity.articleCommentResponse"><![CDATA[<strong>{$author}</strong> replied to a comment by <strong>{$commentAuthor->username}</strong> on article <strong>{$article->getTitle()}</strong>.]]></item>
<item name="wcf.article.articles"><![CDATA[Articles]]></item>
<item name="wcf.article.comment"><![CDATA[Article Comment]]></item>
<item name="wcf.article.commentResponse"><![CDATA[Reply to Article Comment]]></item>
<item name="wcf.article.sortField.time"><![CDATA[Date]]></item>
<item name="wcf.article.sortField.views"><![CDATA[Views]]></item>
<item name="wcf.article.showArticlesWritten"><![CDATA[Articles by {$user->username}]]></item>
- <item name="wcf.article.recentActivity"><![CDATA[Wrote the article {if $article->hasLabels()}<ul class="labelList">{foreach from=$article->getLabels() item=label}<li>{@$label->render()}</li>{/foreach}</ul> {/if}<a href="{$article->getLink()}">{$article->getTitle()}</a>.]]></item>
+ <item name="wcf.article.recentActivity"><![CDATA[<strong>{$author}</strong> wrote the article {if $article->hasLabels()}<ul class="labelList">{foreach from=$article->getLabels() item=label}<li>{unsafe:$label->render()}</li>{/foreach}</ul> {/if}<strong>{$article->getTitle()}</strong>.]]></item>
<item name="wcf.article.button.sort"><![CDATA[Sort]]></item>
<item name="wcf.article.search"><![CDATA[Search Articles]]></item>
<item name="wcf.article.search.error.noResults"><![CDATA[The search returned no results.]]></item>
<item name="wcf.page.search.results"><![CDATA[Search Results]]></item>
<item name="wcf.page.comment"><![CDATA[Page Comment]]></item>
<item name="wcf.page.commentResponse"><![CDATA[Reply to Page Comment]]></item>
- <item name="wcf.page.recentActivity.pageComment"><![CDATA[Commented on page <a href="{$page->getLink()}#comment{$commentID}">{$page->getTitle()}</a>.]]></item>
- <item name="wcf.page.recentActivity.pageCommentResponse"><![CDATA[Replied to a comment by <a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a> on page <a href="{$page->getLink()}#comment{@$commentID}/response{@$responseID}">{$page->getTitle()}</a>.]]></item>
+ <item name="wcf.page.recentActivity.pageComment"><![CDATA[<strong>{$author}</strong> commented on page <strong>{$page->getTitle()}</strong>.]]></item>
+ <item name="wcf.page.recentActivity.pageCommentResponse"><![CDATA[<strong>{$author}</strong> replied to a comment by <strong>{$commentAuthor}</strong> on page <strong>{$page->getTitle()}</strong>.]]></item>
<item name="wcf.page.sidebar.left"><![CDATA[Left Sidebar]]></item>
<item name="wcf.page.sidebar.right"><![CDATA[Right Sidebar]]></item>
<item name="wcf.page.breadcrumb"><![CDATA[Breadcrumb]]></item>
<item name="wcf.user.trophy.specialTrophies.description"><![CDATA[Choose the special {if $__wcf->getSession()->getPermission('user.profile.trophy.maxUserSpecialTrophies') > 1}trophies{else}trophy{/if} that you want to be shown in your profile and in the message sidebar.{if $__wcf->getSession()->getPermission('user.profile.trophy.maxUserSpecialTrophies') > 1} You can select a maximum of {#$__wcf->getSession()->getPermission('user.profile.trophy.maxUserSpecialTrophies')} trophies.{/if}]]></item>
<item name="wcf.user.trophy.specialTrophies.error.tooMany"><![CDATA[You can choose a maximum of {#$__wcf->session->getPermission('user.profile.trophy.maxUserSpecialTrophies')} trophies.]]></item>
<item name="wcf.user.trophy.specialTrophies.error.invalid"><![CDATA[The selected trophies are invalid.]]></item>
- <item name="wcf.user.trophy.recentActivity.received"><![CDATA[Has received the trophy <a href="{$userTrophy->getTrophy()->getLink()}">{$userTrophy->getTrophy()->getTitle()}</a>.]]></item>
+ <item name="wcf.user.trophy.recentActivity.received"><![CDATA[<strong>{$author}</strong> has received the trophy <strong>{$userTrophy->getTrophy()->getTitle()}</strong>.]]></item>
<item name="wcf.user.trophy.condition.excludedTrophies"><![CDATA[Excluded Trophies]]></item>
<item name="wcf.user.trophy.condition.excludedTrophyCategories"><![CDATA[Excluded Trophy Categories]]></item>
<item name="wcf.user.trophy.trophyAwarded"><![CDATA[{if $items == 1}Awarded once{else}Awarded {#$items} times{/if}]]></item>
<item name="wcf.user.recentActivity.condition.excludedObjectType"><![CDATA[Excluded Activities]]></item>
<item name="wcf.user.recentActivity.scope.all"><![CDATA[All Activities]]></item>
<item name="wcf.user.recentActivity.scope.followedUsers"><![CDATA[Filter by Followed Users]]></item>
- <item name="wcf.user.recentActivity.scope.followedUsers.noResults"><![CDATA[There are no recent activities by followed users. Displaying activity for all users.]]></item>
+ <item name="wcf.user.recentActivity.scope.followedUsers.noResults"><![CDATA[There are no recent activities by followed users.]]></item>
</category>
<category name="wcf.user.3rdparty">
<item name="wcf.user.3rdparty"><![CDATA[Third-Party Login]]></item>
<item name="wcf.user.profile.menu.about"><![CDATA[About Me]]></item>
<item name="wcf.user.profile.menu.recentActivity"><![CDATA[Recent Activity]]></item>
<item name="wcf.user.profile.oldUsername"><![CDATA[Used to be called {$user->getOldUsername()}]]></item>
- <item name="wcf.user.profile.recentActivity.follow"><![CDATA[Now follows <a href="{link controller='User' object=$user}{/link}">{$user->username}</a>.]]></item>
+ <item name="wcf.user.profile.recentActivity.follow"><![CDATA[<strong>{$author}</strong> now follows <strong>{$user}</strong>.]]></item>
<item name="wcf.user.profile.visitors"><![CDATA[Profile Visitors]]></item>
<item name="wcf.user.profile.content.wall.comment"><![CDATA[Wall Comment]]></item>
<item name="wcf.user.profile.content.wall.commentResponse"><![CDATA[Reply to wall comment]]></item>
<item name="wcf.user.profile.content.wall.noEntries"><![CDATA[There are no comments at the moment.]]></item>
<item name="wcf.user.profile.menu.wall"><![CDATA[Wall]]></item>
<item name="wcf.user.profile.menu.likes"><![CDATA[Reactions]]></item>
- <item name="wcf.user.profile.recentActivity.profileComment"><![CDATA[Wrote a comment on <a href="{link controller='User' object=$user}{/link}#wall/comment{@$commentID}">{$user->username}’s wall</a>.]]></item>
- <item name="wcf.user.profile.recentActivity.profileCommentResponse"><![CDATA[Replied to a comment by <a href="{link controller='User' object=$commentAuthor}{/link}">{$commentAuthor->username}</a> on <a href="{link controller='User' object=$user}{/link}#wall/comment{@$commentID}/response{@$responseID}">{$user->username}’s wall</a>.]]></item>
+ <item name="wcf.user.profile.recentActivity.profileComment"><![CDATA[<strong>{$author}</strong> wrote a comment on <strong>{$user}’s wall</strong>.]]></item>
+ <item name="wcf.user.profile.recentActivity.profileCommentResponse"><![CDATA[<strong>{$author}</strong> replied to a comment by <strong>{$commentAuthor}</strong> on <strong>{$user}’s wall</strong>.]]></item>
<item name="wcf.user.profile.report"><![CDATA[Report User Profile]]></item>
<item name="wcf.user.profile.protected"><![CDATA[This member limits who may view their full profile.]]></item>
<item name="wcf.user.profile.management"><![CDATA[Management]]></item>