{/if}
{/capture}
-{if $__wcf->getSession()->getPermission('admin.content.article.canManageArticle') || $__wcf->getSession()->getPermission('admin.content.article.canContributeArticle')}
- {capture assign='contentHeaderNavigation'}
+{capture assign='contentHeaderNavigation'}
+ <li class="dropdown jsOnly">
+ <a href="#" class="button dropdownToggle"><span class="icon icon16 fa-sort-amount-asc"></span> <span>{lang}wcf.article.button.sort{/lang}</span></a>
+ <ul class="dropdownMenu">
+ <li><a href="{link controller='ArticleList'}pageNo={@$pageNo}&sortField=title&sortOrder={if $sortField == 'title' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{/link}">{lang}wcf.global.title{/lang}{if $sortField == 'title'} <span class="icon icon16 fa-caret-{if $sortOrder == 'ASC'}up{else}down{/if}"></span>{/if}</a></li>
+ <li><a href="{link controller='ArticleList'}pageNo={@$pageNo}&sortField=time&sortOrder={if $sortField == 'time' && $sortOrder == 'ASC'}DESC{else}ASC{/if}{/link}">{lang}wcf.global.date{/lang}{if $sortField == 'time'} <span class="icon icon16 fa-caret-{if $sortOrder == 'ASC'}up{else}down{/if}"></span>{/if}</a></li>
+
+ {event name='sortOptions'}
+ </ul>
+ </li>
+
+ {if $__wcf->getSession()->getPermission('admin.content.article.canManageArticle') || $__wcf->getSession()->getPermission('admin.content.article.canContributeArticle')}
<li><a href="{link controller='ArticleAdd' isACP=true}{/link}" class="button"><span class="icon icon16 fa-pencil"></span> <span>{lang}wcf.acp.article.add{/lang}</span></a></li>
- {/capture}
-{/if}
+ {/if}
+{/capture}
{capture assign='sidebarRight'}
{if !$labelGroups|empty}
* @package WoltLabSuite\Core\Page
* @since 3.0
*/
-class ArticleListPage extends MultipleLinkPage {
+class ArticleListPage extends SortablePage {
/**
* @inheritDoc
*/
*/
public $user;
+ /**
+ * @inheritDoc
+ */
+ public $defaultSortField = 'time';
+
+ /**
+ * @inheritDoc
+ */
+ public $defaultSortOrder = 'DESC';
+
+ /**
+ * @inheritDoc
+ */
+ public $validSortFields = ['title', 'time'];
+
/**
* @inheritDoc
*/
parent::initObjectList();
$this->applyFilters();
+
+ if ($this->sortField === 'title') {
+ $this->objectList->sqlSelects = "(SELECT title FROM wcf".WCF_N."_article_content WHERE articleID = article.articleID AND (languageID IS NULL OR languageID = ".WCF::getLanguage()->languageID.") LIMIT 1) AS title";
+ }
}
protected function applyFilters() {
<item name="wcf.article.markAllAsRead"><![CDATA[Alle Artikel als gelesen markieren]]></item>
<item name="wcf.article.showArticlesWritten"><![CDATA[Artikel von {$user->username}]]></item>
<item name="wcf.article.recentActivity"><![CDATA[Hat den Artikel <a href="{$article->getLink()}">{$article->getTitle()}</a> verfasst.]]></item>
+ <item name="wcf.article.button.sort"><![CDATA[Sortieren]]></item>
</category>
<category name="wcf.attachment">
<item name="wcf.attachment.file.info"><![CDATA[({@$attachment->filesize|filesize}, <b>{#$attachment->downloads}</b> Mal heruntergeladen{if $attachment->downloads > 0}, zuletzt: {@$attachment->lastDownloadTime|time}{/if})]]></item>
<item name="wcf.article.markAllAsRead"><![CDATA[Mark All Articles as Read]]></item>
<item name="wcf.article.showArticlesWritten"><![CDATA[Articles by {$user->username}]]></item>
<item name="wcf.article.recentActivity"><![CDATA[Wrote the article <a href="{$article->getLink()}">{$article->getTitle()}</a>.]]></item>
+ <item name="wcf.article.button.sort"><![CDATA[Sort]]></item>
</category>
<category name="wcf.attachment">
<item name="wcf.attachment.file.info"><![CDATA[({@$attachment->filesize|filesize}, downloaded <b>{#$attachment->downloads}</b> times{if $attachment->downloads > 0}, last: {@$attachment->lastDownloadTime|time}{/if})]]></item>