+
+
{if $view->hasBulkInteractions()}
-
-
-
-
-
- {hascontent}
-
-
-
- {content}
- {if $article->isDeleted}{lang}wcf.message.status.deleted{/lang}{/if}
- {if !$article->isPublished()}{lang}wcf.message.status.disabled{/lang}{/if}
- {if $article->isNew()}{lang}wcf.message.new{/lang}{/if}
-
- {event name='contentItemBadges'}
- {/content}
-
- {/hascontent}
-
- {if $article->hasLabels()}
-
- {foreach from=$article->getLabels() item=label}
- {@$label->render('contentItemLabel')}
- {/foreach}
-
- {/if}
-
- {$article->getTitle()}
- -
- {@$article->getFormattedTeaser()}
+
+
+
+
+ {hascontent}
+
+
+
+ {content}
+ {if $article->isDeleted}{lang}wcf.message.status.deleted{/lang}{/if}
+ {if !$article->isPublished()}{lang}wcf.message.status.disabled{/lang}{/if}
+ {if $article->isNew()}{lang}wcf.message.new{/lang}{/if}
+
+ {event name='contentItemBadges'}{* deprecated: use badges instead *}
+ {event name='badges'}
+ {/content}
+ {/hascontent}
+
+ {if $article->hasLabels()}
+
-
- -
+ {foreach from=$article->getLabels() item=label}
+
- {unsafe:$label->render()} + {/foreach} +
+ {$article->getTitle()} +
+ +
-
- {@$article->getUserProfile()->getAvatar()->getImageTag(32)}
-
+
+
+
+ {unsafe:$article->getUserProfile()->getAvatar()->getImageTag(32)}
+
-
-
- {@$article->getUserProfile()->getFormattedUsername()}
+
+
+ {unsafe:$article->getUserProfile()->getFormattedUsername()}
-
- {@$article->time|time}
+
+
-
-
+ {time time=$article->time}
+
+
{if MODULE_LIKE && $__wcf->getSession()->getPermission('user.like.canViewLike') && $article->cumulativeLikes}
-
+
@@ -91,38 +95,38 @@
{if MODULE_WCF_AD && !$disableAds}
{if $tpl[foreach][articles][iteration] === 1}
{hascontent}
-
{include file='shared_topReaction' cachedReactions=$article->cachedReactions render='short'}
{/if}
{if $article->getDiscussionProvider()->getDiscussionCountPhrase()}{* empty phrase indicates that comments are disabled *}
-
+
{icon name='comments'}
{$article->getDiscussionProvider()->getDiscussionCount()}
@@ -82,7 +85,8 @@
{/if}
- {event name='contentItemMetaIcons'}
+ {event name='contentItemMetaIcons'}{* deprecated: use badges instead *}
+ {event name='metaIcons'}
- {content}{@$__wcf->getAdHandler()->getAds('com.woltlab.wcf.article.after1stArticle')}{/content}
+
+ {content}{unsafe:$__wcf->getAdHandler()->getAds('com.woltlab.wcf.article.after1stArticle')}{/content}
{/hascontent}
{else}
{if $tpl[foreach][articles][iteration] % 2 === 0}
{hascontent}
-
- {content}{@$__wcf->getAdHandler()->getAds('com.woltlab.wcf.article.afterEvery2ndArticle')}{/content}
+
+ {content}{unsafe:$__wcf->getAdHandler()->getAds('com.woltlab.wcf.article.afterEvery2ndArticle')}{/content}
{/hascontent}
{/if}
{if $tpl[foreach][articles][iteration] % 3 === 0}
{hascontent}
-
- {content}{@$__wcf->getAdHandler()->getAds('com.woltlab.wcf.article.afterEvery3rdArticle')}{/content}
+
+ {content}{unsafe:$__wcf->getAdHandler()->getAds('com.woltlab.wcf.article.afterEvery3rdArticle')}{/content}
{/hascontent}
{/if}
{if $tpl[foreach][articles][iteration] % 5 === 0}
{hascontent}
-
- {content}{@$__wcf->getAdHandler()->getAds('com.woltlab.wcf.article.afterEvery5thArticle')}{/content}
+
-
+ {content}{unsafe:$__wcf->getAdHandler()->getAds('com.woltlab.wcf.article.afterEvery5thArticle')}{/content}
{/hascontent}
{if $tpl[foreach][articles][iteration] % 10 === 0}
{hascontent}
-
- {content}{@$__wcf->getAdHandler()->getAds('com.woltlab.wcf.article.afterEvery10thArticle')}{/content}
+
+ {content}{unsafe:$__wcf->getAdHandler()->getAds('com.woltlab.wcf.article.afterEvery10thArticle')}{/content}
{/hascontent}
{/if}
diff --git a/com.woltlab.wcf/templates/shared_listView.tpl b/com.woltlab.wcf/templates/shared_listView.tpl
index 0c24dd5e1fb..2693c51c21c 100644
--- a/com.woltlab.wcf/templates/shared_listView.tpl
+++ b/com.woltlab.wcf/templates/shared_listView.tpl
@@ -54,10 +54,10 @@
+
{if $view->hasBulkInteractions()}
-
+
- {lang}wcf.global.loading{/lang} diff --git a/ts/WoltLabSuite/Core/Component/ListView/Selection.ts b/ts/WoltLabSuite/Core/Component/ListView/Selection.ts index 3b4551987b6..a65dcb45526 100644 --- a/ts/WoltLabSuite/Core/Component/ListView/Selection.ts +++ b/ts/WoltLabSuite/Core/Component/ListView/Selection.ts @@ -168,6 +168,8 @@ export class Selection extends EventTarget { return; } + this.dispatchEvent(new CustomEvent("list-view:update-selection")); + if (selectedIds.length === 0) { this.#selectionBar.hidden = true; return; @@ -284,6 +286,7 @@ export class Selection extends EventTarget { interface SelectionEventMap { "list-view:get-bulk-interactions": CustomEvent<{ objectIds: number[] }>; + "list-view:update-selection": CustomEvent