Implemented content interaction buttons
authorMarcel Werk <burntime@woltlab.com>
Thu, 17 Jun 2021 16:41:59 +0000 (18:41 +0200)
committerMarcel Werk <burntime@woltlab.com>
Thu, 17 Jun 2021 16:41:59 +0000 (18:41 +0200)
30 files changed:
com.woltlab.wcf/templates/article.tpl
com.woltlab.wcf/templates/articleAdd.tpl
com.woltlab.wcf/templates/articleList.tpl
com.woltlab.wcf/templates/categoryArticleList.tpl
com.woltlab.wcf/templates/categoryTrophyList.tpl
com.woltlab.wcf/templates/cms.tpl
com.woltlab.wcf/templates/combinedTagged.tpl
com.woltlab.wcf/templates/contentInteraction.tpl [new file with mode: 0644]
com.woltlab.wcf/templates/deletedContentList.tpl
com.woltlab.wcf/templates/editHistory.tpl
com.woltlab.wcf/templates/following.tpl
com.woltlab.wcf/templates/header.tpl
com.woltlab.wcf/templates/ignoredUsers.tpl
com.woltlab.wcf/templates/membersList.tpl
com.woltlab.wcf/templates/moderationActivation.tpl
com.woltlab.wcf/templates/moderationList.tpl
com.woltlab.wcf/templates/moderationReport.tpl
com.woltlab.wcf/templates/notificationList.tpl
com.woltlab.wcf/templates/pageNavbarTop.tpl
com.woltlab.wcf/templates/searchResult.tpl
com.woltlab.wcf/templates/tagged.tpl
com.woltlab.wcf/templates/trophy.tpl
com.woltlab.wcf/templates/trophyList.tpl
com.woltlab.wcf/templates/unreadArticleList.tpl
com.woltlab.wcf/templates/usersOnlineList.tpl
com.woltlab.wcf/templates/watchedArticleList.tpl
syncTemplates.json
wcfsetup/install/files/style/layout/content.scss
wcfsetup/install/lang/de.xml
wcfsetup/install/lang/en.xml

index 93f0acb7c00808b9ba145dcbd6019efe1803ed2c..2b3161a2e9f6449076badf4838bcb88915bbcf5e 100644 (file)
                        <nav class="contentHeaderNavigation">
                                <ul>
                                        {content}
-                                               {if $article->isMultilingual && $__wcf->user->userID}
-                                                       <li class="dropdown">
-                                                               <a class="dropdownToggle boxFlag box24 button">
-                                                                       <span><img src="{$articleContent->getLanguage()->getIconPath()}" alt="" class="iconFlag"></span>
-                                                                       <span>{$articleContent->getLanguage()->languageName}</span>
-                                                               </a>
-                                                               <ul class="dropdownMenu">
-                                                                       {foreach from=$article->getLanguageLinks() item='langArticleContent'}
-                                                                               {if $langArticleContent->getLanguage()}
-                                                                                       <li class="boxFlag">
-                                                                                               <a class="box24" href="{$langArticleContent->getLink()}">
-                                                                                                       <span><img src="{$langArticleContent->getLanguage()->getIconPath()}" alt="" class="iconFlag"></span>
-                                                                                                       <span>{$langArticleContent->getLanguage()->languageName}</span>
-                                                                                               </a>
-                                                                                       </li>
-                                                                               {/if}
-                                                                       {/foreach}
-                                                               </ul>
-                                                       </li>
-                                               {/if}
-                                       
-                                               {if $article->canEdit()}<li><a href="{link controller='ArticleEdit' id=$article->articleID}{/link}" class="button"><span class="icon icon16 fa-pencil"></span> <span>{lang}wcf.acp.article.edit{/lang}</span></a></li>{/if}
+                                               {if $article->canEdit()}<li><a href="{link controller='ArticleEdit' id=$article->articleID}{/link}" class="button buttonPrimary"><span class="icon icon16 fa-pencil"></span> <span>{lang}wcf.acp.article.edit{/lang}</span></a></li>{/if}
                                                {event name='contentHeaderNavigation'}
                                        {/content}
                                </ul>
        {/if}
 {/capture}
 
+{capture assign='contentInteractionButtons'}
+       {if $article->isMultilingual && $__wcf->user->userID}
+               <div class="contentInteractionButton dropdown jsOnly">
+                       <a class="dropdownToggle boxFlag box24 button small">
+                               <span><img src="{$articleContent->getLanguage()->getIconPath()}" alt="" class="iconFlag"></span>
+                               <span>{$articleContent->getLanguage()->languageName}</span>
+                       </a>
+                       <ul class="dropdownMenu">
+                               {foreach from=$article->getLanguageLinks() item='langArticleContent'}
+                                       {if $langArticleContent->getLanguage()}
+                                               <li class="boxFlag">
+                                                       <a class="box24" href="{$langArticleContent->getLink()}">
+                                                               <span><img src="{$langArticleContent->getLanguage()->getIconPath()}" alt="" class="iconFlag"></span>
+                                                               <span>{$langArticleContent->getLanguage()->languageName}</span>
+                                                       </a>
+                                               </li>
+                                       {/if}
+                               {/foreach}
+                       </ul>
+               </div>
+       {/if}
+{/capture}
+
 {include file='header'}
 
 {if !$article->isPublished()}
index aeccb5ccf6f5e1d23bbf114aac21e0172eec7d4c..6345f136834722ea592bba6504e5dcdce0ded139 100644 (file)
                        </h1>
                </div>
                
-               <nav class="contentHeaderNavigation">
-                       <ul>
-                               {if $action == 'edit'}
-                                       {if $article->canDelete()}
-                                               <li><a href="#" class="button jsButtonRestore" data-confirm-message-html="{lang __encode=true isArticleEdit=true}wcf.acp.article.restore.confirmMessage{/lang}"{if !$article->isDeleted} style="display: none"{/if}><span class="icon icon16 fa-refresh"></span> <span>{lang}wcf.global.button.restore{/lang}</span></a></li>
-                                               <li><a href="#" class="button jsButtonDelete" data-confirm-message-html="{lang __encode=true isArticleEdit=true}wcf.acp.article.delete.confirmMessage{/lang}"{if !$article->isDeleted} style="display: none"{/if}><span class="icon icon16 fa-times"></span> <span>{lang}wcf.global.button.delete{/lang}</span></a></li>
-                                               <li><a href="#" class="button jsButtonTrash" data-confirm-message-html="{lang __encode=true isArticleEdit=true}wcf.acp.article.trash.confirmMessage{/lang}"{if $article->isDeleted} style="display: none"{/if}><span class="icon icon16 fa-times"></span> <span>{lang}wcf.global.button.trash{/lang}</span></a></li>
-                                       {/if}
-                                       {if $languages|count > 1 || $article->isMultilingual}
-                                               <li><a href="#" class="button jsButtonToggleI18n"><span class="icon icon16 fa-flag"></span> <span>{lang}wcf.acp.article.button.toggleI18n{/lang}</span></a></li>
-                                       {/if}
-                                       <li><a href="{$article->getLink()}" class="button"><span class="icon icon16 fa-search"></span> <span>{lang}wcf.acp.article.button.viewArticle{/lang}</span></a></li>
-                               {/if}
-                               <li><a href="{link controller='ArticleList'}{/link}" class="button"><span class="icon icon16 fa-list"></span> <span>{lang}wcf.acp.menu.link.article.list{/lang}</span></a></li>
-                               
-                               {event name='contentHeaderNavigation'}
-                       </ul>
-               </nav>
+               {hascontent}
+                       <nav class="contentHeaderNavigation">
+                               <ul>
+                                       {content}
+                                               {if $action == 'edit'}
+                                                       <li><a href="{$article->getLink()}" class="button buttonPrimary"><span class="icon icon16 fa-search"></span> <span>{lang}wcf.acp.article.button.viewArticle{/lang}</span></a></li>
+                                               {/if}
+                                               {event name='contentHeaderNavigation'}
+                                       {/content}
+                               </ul>
+                       </nav>
+               {/hascontent}
        </header>
 {/capture}
 
+{capture assign='contentInteractionButtons'}
+       {if $action == 'edit'}
+               {if $article->canDelete()}
+                       <a href="#" class="contentInteractionButton button small jsButtonRestore" data-confirm-message-html="{lang __encode=true isArticleEdit=true}wcf.acp.article.restore.confirmMessage{/lang}"{if !$article->isDeleted} style="display: none"{/if}>{lang}wcf.global.button.restore{/lang}</a>
+                       <a href="#" class="contentInteractionButton button small jsButtonDelete" data-confirm-message-html="{lang __encode=true isArticleEdit=true}wcf.acp.article.delete.confirmMessage{/lang}"{if !$article->isDeleted} style="display: none"{/if}>{lang}wcf.global.button.delete{/lang}</a>
+                       <a href="#" class="contentInteractionButton button small jsButtonTrash" data-confirm-message-html="{lang __encode=true isArticleEdit=true}wcf.acp.article.trash.confirmMessage{/lang}"{if $article->isDeleted} style="display: none"{/if}>{lang}wcf.global.button.trash{/lang}</a>
+               {/if}
+               {if $languages|count > 1 || $article->isMultilingual}
+                       <a href="#" class="contentInteractionButton button small jsButtonToggleI18n">{lang}wcf.acp.article.button.toggleI18n{/lang}</a>
+               {/if}
+       {/if}
+{/capture}
+
 {if $articleIsFrontend|empty}
        {include file='header' pageTitle='wcf.acp.article.'|concat:$action}
 {else}
index fca02056be1dfea2236416f94e2977f62cdf27b6..4aeb58ce57f772f2bc91bd9013be32a2a6578185 100644 (file)
        {/if}
 {/capture}
 
-{capture assign='headerNavigation'}
-       <li><a rel="alternate" href="{if $__wcf->getUser()->userID}{link controller='ArticleFeed'}at={@$__wcf->getUser()->userID}-{@$__wcf->getUser()->accessToken}{/link}{else}{link controller='ArticleFeed'}{/link}{/if}" title="{lang}wcf.global.button.rss{/lang}" class="rssFeed jsTooltip"><span class="icon icon16 fa-rss"></span> <span class="invisible">{lang}wcf.global.button.rss{/lang}</span></a></li>
-       {if ARTICLE_ENABLE_VISIT_TRACKING}
-               <li class="jsOnly"><a href="#" title="{lang}wcf.article.markAllAsRead{/lang}" class="markAllAsReadButton jsTooltip"><span class="icon icon16 fa-check"></span> <span class="invisible">{lang}wcf.article.markAllAsRead{/lang}</span></a></li>
-       {/if}
-{/capture}
-
 {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}{if $user}&userID={@$user->userID}{/if}&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}{if $user}&userID={@$user->userID}{/if}&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')}
                {if $availableLanguages|count > 1}
-                       <li><a href="#" class="button jsButtonArticleAdd"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.article.add{/lang}</span></a></li>
+                       <li><a href="#" class="button buttonPrimary jsButtonArticleAdd"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.article.add{/lang}</span></a></li>
                {else}
-                       <li><a href="{link controller='ArticleAdd'}{/link}" class="button"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.article.add{/lang}</span></a></li>
+                       <li><a href="{link controller='ArticleAdd'}{/link}" class="button buttonPrimary"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.article.add{/lang}</span></a></li>
                {/if}
        {/if}
 {/capture}
        {/if}
 {/capture}
 
-{include file='header'}
-
 {assign var='additionalLinkParameters' value=''}
 {if $user}{capture append='additionalLinkParameters'}&userID={@$user->userID}{/capture}{/if}
 {if $labelIDs|count}{capture append='additionalLinkParameters'}{foreach from=$labelIDs key=labelGroupID item=labelID}&labelIDs[{@$labelGroupID}]={@$labelID}{/foreach}{/capture}{/if}
 
-{hascontent}
-       <div class="paginationTop">
-               {content}
-                       {pages print=true assign='pagesLinks' controller='ArticleList' link="pageNo=%d&sortField=$sortField&sortOrder=$sortOrder$additionalLinkParameters"}
-               {/content}
+{capture assign='contentInteractionPagination'}
+       {pages print=true assign='pagesLinks' controller='ArticleList' link="pageNo=%d&sortField=$sortField&sortOrder=$sortOrder$additionalLinkParameters"}
+{/capture}
+
+{capture assign='contentInteractionButtons'}
+       <div class="contentInteractionButton dropdown jsOnly">
+               <a href="#" class="button small dropdownToggle">{lang}wcf.article.button.sort{/lang}</a>
+               <ul class="dropdownMenu">
+                       <li><a href="{link controller='ArticleList'}pageNo={@$pageNo}{if $user}&userID={@$user->userID}{/if}&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}{if $user}&userID={@$user->userID}{/if}&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>
        </div>
-{/hascontent}
+{/capture}
+
+{capture assign='contentInteractionDropdownItems'}
+       <li><a rel="alternate" href="{if $__wcf->getUser()->userID}{link controller='ArticleFeed'}at={@$__wcf->getUser()->userID}-{@$__wcf->getUser()->accessToken}{/link}{else}{link controller='ArticleFeed'}{/link}{/if}" class="rssFeed">{lang}wcf.global.button.rss{/lang}</a></li>
+       {if ARTICLE_ENABLE_VISIT_TRACKING}
+               <li class="jsOnly"><a href="#" class="markAllAsReadButton">{lang}wcf.article.markAllAsRead{/lang}</a></li>
+       {/if}
+{/capture}
+
+{include file='header'}
 
 {if $objects|count}
        <div class="section">
index 33b310afec758ece401edeed569326fbaede53e1..4c531d7cc555b96f6dce6494351636f102ec21b4 100644 (file)
        {/if}
 {/capture}
 
-{capture assign='headerNavigation'}
-       <li><a rel="alternate" href="{if $__wcf->getUser()->userID}{link controller='ArticleFeed' id=$categoryID}at={@$__wcf->getUser()->userID}-{@$__wcf->getUser()->accessToken}{/link}{else}{link controller='ArticleFeed' id=$categoryID}{/link}{/if}" title="{lang}wcf.global.button.rss{/lang}" class="rssFeed jsTooltip"><span class="icon icon16 fa-rss"></span> <span class="invisible">{lang}wcf.global.button.rss{/lang}</span></a></li>
-       {if $__wcf->user->userID}
-               <li class="jsOnly"><a href="#" title="{lang}wcf.user.objectWatch.manageSubscription{/lang}" class="jsSubscribeButton jsTooltip" data-object-type="com.woltlab.wcf.article.category" data-object-id="{@$category->categoryID}"><span class="icon icon16 fa-bookmark{if !$category->isSubscribed()}-o{/if}"></span> <span class="invisible">{lang}wcf.user.objectWatch.manageSubscription{/lang}</span></a></li>
-       {/if}
-       {if ARTICLE_ENABLE_VISIT_TRACKING}
-               <li class="jsOnly"><a href="#" title="{lang}wcf.article.markAllAsRead{/lang}" class="markAllAsReadButton jsTooltip"><span class="icon icon16 fa-check"></span> <span class="invisible">{lang}wcf.article.markAllAsRead{/lang}</span></a></li>
-       {/if}
-{/capture}
-
 {if $__wcf->getSession()->getPermission('admin.content.article.canManageArticle')}
        {capture assign='contentHeaderNavigation'}
                {if $availableLanguages|count > 1}
-                       <li><a href="#" class="button jsButtonArticleAdd"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.article.add{/lang}</span></a></li>
+                       <li><a href="#" class="button buttonPrimary jsButtonArticleAdd"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.article.add{/lang}</span></a></li>
                {else}
-                       <li><a href="{link controller='ArticleAdd'}categoryID={@$category->categoryID}{/link}" class="button"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.article.add{/lang}</span></a></li>
+                       <li><a href="{link controller='ArticleAdd'}categoryID={@$category->categoryID}{/link}" class="button buttonPrimary"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.article.add{/lang}</span></a></li>
                {/if}
        {/capture}
 {/if}
        {/if}
 {/capture}
 
-{include file='header'}
+{capture assign='contentInteractionPagination'}
+       {pages print=true assign='pagesLinks' controller='CategoryArticleList' object=$category link="pageNo=%d"}
+{/capture}
 
-{hascontent}
-       <div class="paginationTop">
-               {content}
-                       {pages print=true assign='pagesLinks' controller='CategoryArticleList' object=$category link="pageNo=%d"}
-               {/content}
-       </div>
-{/hascontent}
+{capture assign='contentInteractionButtons'}
+       {if $__wcf->user->userID}
+               <a href="#" class="jsSubscribeButton jsOnly button small{if $category->isSubscribed()} active{/if}" data-object-type="com.woltlab.wcf.article.category" data-object-id="{@$category->categoryID}">{lang}wcf.user.objectWatch.button.subscribe{/lang}</a>
+       {/if}
+{/capture}
+
+{capture assign='contentInteractionDropdownItems'}
+       <li><a rel="alternate" href="{if $__wcf->getUser()->userID}{link controller='ArticleFeed' id=$categoryID}at={@$__wcf->getUser()->userID}-{@$__wcf->getUser()->accessToken}{/link}{else}{link controller='ArticleFeed' id=$categoryID}{/link}{/if}" class="rssFeed">{lang}wcf.global.button.rss{/lang}</a></li>
+       {if ARTICLE_ENABLE_VISIT_TRACKING}
+               <li class="jsOnly"><a href="#" class="markAllAsReadButton">{lang}wcf.article.markAllAsRead{/lang}</a></li>
+       {/if}
+{/capture}
+
+{include file='header'}
 
 {if $objects|count}
        <div class="section">
index 3a39651634857c4ad43402ac5738b4c1ad817bf9..91a2fac19577627f7209b94772126cf1333d62da 100644 (file)
        {/if}
 {/capture}
 
-{include file='header'}
+{capture assign='contentInteractionPagination'}
+       {pages print=true assign='pagesLinks' controller='CategoryTrophyList' object=$category link="pageNo=%d"}
+{/capture}
 
-{hascontent}
-       <div class="paginationTop">
-               {content}
-                       {pages print=true assign='pagesLinks' controller='CategoryTrophyList' object=$category link="pageNo=%d"}
-               {/content}
-       </div>
-{/hascontent}
+{include file='header'}
 
 {if $objects|count}
        <div class="section sectionContainerList">
index eb29f7c6a66f27dbe9d5978906f797da186dcf45..f74d49af45fea99be6487057d89da3fcc5a145a1 100644 (file)
 {/capture}
 
 {capture assign='contentHeaderNavigation'}
+       {if $__wcf->getSession()->getPermission('admin.content.cms.canManagePage')}<li><a href="{link controller='PageEdit' id=$page->pageID isACP=true}{/link}" class="button buttonPrimary"><span class="icon icon16 fa-pencil"></span> <span>{lang}wcf.acp.page.edit{/lang}</span></a></li>{/if}
+{/capture}
+
+{capture assign='contentInteractionButtons'}
        {if $page->showShareButtons()}
-               <li>
-                       <a href="{$content->getLink()}" class="button shareButton jsOnly" data-link-title="{$content->getTitle()}">
-                               <span class="icon icon16 fa-share-alt"></span> <span>{lang}wcf.message.share{/lang}</span>
-                       </a>
-               </li>
+               <a href="{$content->getLink()}" class="contentInteractionButton button small shareButton jsOnly" data-link-title="{$content->getTitle()}">{lang}wcf.message.share{/lang}</a>
        {/if}
-       
+
        {if $page->isMultilingual && $__wcf->user->userID && $page->getPageLanguages()|count > 1}
-               <li class="dropdown">
-                       <a class="dropdownToggle boxFlag box24 button">
+               <div class="contentInteractionButton dropdown jsOnly">
+                       <a class="button small  dropdownToggle boxFlag box24">
                                <span><img src="{$activePageLanguage->getIconPath()}" alt="" class="iconFlag"></span>
                                <span>{$activePageLanguage->languageName}</span>
                        </a>
                                        </li>
                                {/foreach}
                        </ul>
-               </li>
+               </div>
        {/if}
-       
-       {if $__wcf->getSession()->getPermission('admin.content.cms.canManagePage')}<li><a href="{link controller='PageEdit' id=$page->pageID isACP=true}{/link}" class="button"><span class="icon icon16 fa-pencil"></span> <span>{lang}wcf.acp.page.edit{/lang}</span></a></li>{/if}
 {/capture}
 
 {include file='header'}
index be1c1ba302d40062fcf9579214774fb8ed662f28..a6924fa2a0c7295e4fd6b682a0eeec2befe46c0c 100644 (file)
        </section>
 {/capture}
 
-{include file='header'}
+{capture assign='contentInteractionPagination'}
+       {pages print=true assign=pagesLinks controller='CombinedTagged' link="$linkParameters&objectType=$objectType&pageNo=%d"}
+{/capture}
 
-{hascontent}
-       <div class="paginationTop">
-               {content}{pages print=true assign=pagesLinks controller='CombinedTagged' link="$linkParameters&objectType=$objectType&pageNo=%d"}{/content}
-       </div>
-{/hascontent}
+{include file='header'}
 
 {if $items}
        {include file=$resultListTemplateName application=$resultListApplication}
diff --git a/com.woltlab.wcf/templates/contentInteraction.tpl b/com.woltlab.wcf/templates/contentInteraction.tpl
new file mode 100644 (file)
index 0000000..1be218c
--- /dev/null
@@ -0,0 +1,37 @@
+{if !$beforeContentInteraction|empty}
+    {@$beforeContentInteraction}
+{/if}
+
+<div class="contentInteraction">
+    {hascontent}
+               <div class="contentInteractionPagination paginationTop">
+                       {content}{if $contentInteractionPagination|isset}{@$contentInteractionPagination}{/if}{/content}
+               </div>
+       {/hascontent}
+
+    <div class="contentInteractionButtonContainer">
+        {hascontent}
+            <div class="contentInteractionButtons">
+                {content}
+                    {event name='beforeButtons'}
+                    {if $contentInteractionButtons|isset}{@$contentInteractionButtons}{/if}
+                    {event name='afterButtons'}
+                {/content}
+            </div>
+        {/hascontent}
+
+        {hascontent}
+            <div class="contentInteractionDropdown dropdown jsOnly">
+                <a href="#" class="button small dropdownToggle"><span class="icon icon16 fa-ellipsis-v"></span></a>
+
+                <ul class="contentInteractionDropdownItems dropdownMenu">
+                    {content}
+                        {event name='beforeDropdownItems'}
+                        {if $contentInteractionDropdownItems|isset}{@$contentInteractionDropdownItems}{/if}
+                        {event name='afterDropdownItems'}
+                    {/content}
+                </ul>
+            </div>
+        {/hascontent}
+    </div>
+</div>
index b970d48b49bb549e7c3bd78d0b75f2f886fcd879..d0d4e17f6b6eeeb6468497bd8fcee4d773ad140c 100644 (file)
 
 {capture assign='contentTitle'}{lang}wcf.moderation.deletedContent.{@$objectType}{/lang}{/capture}
 
-{include file='header'}
+{capture assign='contentInteractionPagination'}
+       {pages print=true assign=pagesLinks controller='DeletedContentList' link="objectType=$objectType&pageNo=%d"}
+{/capture}
 
-{hascontent}
-       <div class="paginationTop">
-               {content}{pages print=true assign=pagesLinks controller='DeletedContentList' link="objectType=$objectType&pageNo=%d"}{/content}
-       </div>
-{/hascontent}
+{include file='header'}
 
 {if $items}
        {include file=$resultListTemplateName application=$resultListApplication}
index 0f956f07584cfd1ee8c7f21b7ecad736b54066b7..da5142094ca5c9b6f45eff923231f52ee68b0414 100644 (file)
@@ -2,7 +2,7 @@
 
 {capture assign='contentTitle'}{lang}wcf.edit.versions{/lang}: {$object->getTitle()}{/capture}
 
-{capture assign='contentHeaderNavigation'}<li><a href="{$object->getLink()}" class="button"><span class="icon icon16 fa-arrow-right"></span> <span>{lang}wcf.edit.button.goToContent{/lang}</span></a></li>{/capture}
+{capture assign='contentHeaderNavigation'}<li><a href="{$object->getLink()}" class="button buttonPrimary"><span class="icon icon16 fa-arrow-right"></span> <span>{lang}wcf.edit.button.goToContent{/lang}</span></a></li>{/capture}
 
 {include file='header'}
 
index 1b3fc468b3b225a839a67f7724ace4eab2dd201b..f304c538541a70a2a2a2a25b0edaa09abd59cf54 100644 (file)
@@ -2,13 +2,11 @@
 
 {capture assign='contentTitleBadge'}<span class="badge">{#$items}</span>{/capture}
 
-{include file='header' __sidebarLeftHasMenu=true}
+{capture assign='contentInteractionPagination'}
+       {pages print=true assign=pagesLinks controller='Following' link="pageNo=%d"}
+{/capture}
 
-{hascontent}
-       <div class="paginationTop">
-               {content}{pages print=true assign=pagesLinks controller='Following' link="pageNo=%d"}{/content}
-       </div>
-{/hascontent}
+{include file='header' __sidebarLeftHasMenu=true}
 
 {if $objects|count}
        <div class="section sectionContainerList">
index dc9e0c51166a13d6bc1c81b1953bc7ef9756501c..d9f66db755a12f88f53ef39bea73171b04fe7377 100644 (file)
                                {/hascontent}
                                
                                {event name='contents'}
+
+                               {include file='contentInteraction'}
index fe10da048376a6cacde7e121f9db847d6b0a83e8..0d40af6a4f48fd9f66d239a097e413871d4cc839 100644 (file)
@@ -2,13 +2,11 @@
 
 {capture assign='contentTitleBadge'}<span class="badge">{#$items}</span>{/capture}
 
-{include file='header' __sidebarLeftHasMenu=true}
+{capture assign='contentInteractionPagination'}
+       {pages print=true assign=pagesLinks controller='IgnoredUsers' link="pageNo=%d"}
+{/capture}
 
-{hascontent}
-       <div class="paginationTop">
-               {content}{pages print=true assign=pagesLinks controller='IgnoredUsers' link="pageNo=%d"}{/content}
-       </div>
-{/hascontent}
+{include file='header' __sidebarLeftHasMenu=true}
 
 {if $objects|count}
        <div class="section sectionContainerList">
index 3465f5634cfc8681030256b56be5e02d2f45819f..2a925b56c8039239c66a7a375455650429d9c36c 100644 (file)
        </section>
 {/capture}
 
-{include file='header'}
+{capture assign='contentInteractionPagination'}
+       {if $searchID}
+                       {pages print=true assign=pagesLinks controller='MembersList' id=$searchID link="pageNo=%d&sortField=$sortField&sortOrder=$sortOrder&letter=$encodedLetter"}
+               {else}
+                       {pages print=true assign=pagesLinks controller='MembersList' link="pageNo=%d&sortField=$sortField&sortOrder=$sortOrder&letter=$encodedLetter"}
+               {/if}
+{/capture}
 
-{hascontent}
-       <div class="paginationTop">
-               {content}
-                       {if $searchID}
-                               {pages print=true assign=pagesLinks controller='MembersList' id=$searchID link="pageNo=%d&sortField=$sortField&sortOrder=$sortOrder&letter=$encodedLetter"}
-                       {else}
-                               {pages print=true assign=pagesLinks controller='MembersList' link="pageNo=%d&sortField=$sortField&sortOrder=$sortOrder&letter=$encodedLetter"}
-                       {/if}
-               {/content}
-       </div>
-{/hascontent}
+{include file='header'}
 
 {if $items}
        <div class="section sectionContainerList">
index 4c1bd05f0c94e1ba552d36c99068a4fb0f9b5c6d..43a5710e489a87e11bd8a9cfdb757e97077cb649 100644 (file)
                        <nav class="contentHeaderNavigation">
                                <ul>
                                        {content}
-                                               <li class="jsOnly"><a id="moderationAssignUser" class="button"><span class="icon icon16 fa-pencil"></span> <span>{lang}wcf.moderation.assignedUser.change{/lang}</span></a></li>
-                                               {if !$queue->isDone()}
-                                                       <li class="jsOnly"><a id="enableContent" class="button"><span class="icon icon16 fa-check"></span> <span>{lang}wcf.moderation.activation.enableContent{/lang}</span></a></li>
-                                                       {if $queueManager->canRemoveContent($queue->getDecoratedObject())}<li class="jsOnly"><a id="removeContent" class="button"><span class="icon icon16 fa-times"></span> <span>{lang}wcf.moderation.activation.removeContent{/lang}</span></a></li>{/if}
-                                               {/if}
-                                               {if $queue->getAffectedObject()}<li><a href="{$queue->getAffectedObject()->getLink()}" class="button"><span class="icon icon16 fa-arrow-right"></span> <span>{lang}wcf.moderation.jumpToContent{/lang}</span></a></li>{/if}
-                                               
+                                               {if $queue->getAffectedObject()}<li><a href="{$queue->getAffectedObject()->getLink()}" class="button buttonPrimary"><span class="icon icon16 fa-arrow-right"></span> <span>{lang}wcf.moderation.jumpToContent{/lang}</span></a></li>{/if}
                                                {event name='contentHeaderNavigation'}
                                        {/content}
                                </ul>
        </header>
 {/capture}
 
+{capture assign='contentInteractionButtons'}
+       <a id="moderationAssignUser" class="contentInteractionButton button small jsOnly">{lang}wcf.moderation.assignedUser.change{/lang}</a>
+       {if !$queue->isDone()}
+               <a id="enableContent" class="contentInteractionButton button small jsOnly">{lang}wcf.moderation.activation.enableContent{/lang}</a>
+               {if $queueManager->canRemoveContent($queue->getDecoratedObject())}<a id="removeContent" class="contentInteractionButton button small jsOnly">{lang}wcf.moderation.activation.removeContent{/lang}</a>{/if}
+       {/if}
+{/capture}
+
 {include file='header'}
 
 {include file='formError'}
index 72637c619a1e87e10ecddade2333992a25ea1b67..db3b97fe2b34c9c1bd99548d331c0bd591b722b2 100644 (file)
@@ -6,17 +6,15 @@
        {event name='sidebarBoxes'}
 {/capture}
 
-{capture assign='headerNavigation'}
-       <li class="jsOnly"><a href="#" title="{lang}wcf.moderation.markAllAsRead{/lang}" class="markAllAsReadButton jsTooltip"><span class="icon icon16 fa-check"></span> <span class="invisible">{lang}wcf.moderation.markAllAsRead{/lang}</span></a></li>
+{capture assign='contentInteractionPagination'}
+       {pages print=true assign=pagesLinks controller='ModerationList' link="definitionID=$definitionID&assignedUserID=$assignedUserID&status=$status&pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"}
 {/capture}
 
-{include file='header'}
+{capture assign='contentInteractionDropdownItems'}
+       <li class="jsOnly"><a href="#" class="markAllAsReadButton">{lang}wcf.moderation.markAllAsRead{/lang}</a></li>
+{/capture}
 
-{hascontent}
-       <div class="paginationTop">
-               {content}{pages print=true assign=pagesLinks controller='ModerationList' link="definitionID=$definitionID&assignedUserID=$assignedUserID&status=$status&pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"}{/content}
-       </div>
-{/hascontent}
+{include file='header'}
 
 {if $objects|count}
        <div class="section tabularBox messageGroupList moderationList moderationQueueEntryList jsClipboardContainer" data-type="com.woltlab.wcf.moderation.queue">
index 6e5c21c3c62c20c8cba707055b005f9b41ab7c40..432a81eac7f6afd1968c6b2acc496293bb44f8fa 100644 (file)
                        <nav class="contentHeaderNavigation">
                                <ul>
                                        {content}
-                                               <li class="jsOnly"><a id="moderationAssignUser" class="button"><span class="icon icon16 fa-pencil"></span> <span>{lang}wcf.moderation.assignedUser.change{/lang}</span></a></li>
-                                               {if !$queue->isDone()}
-                                                       {if $queueManager->canRemoveContent($queue->getDecoratedObject())}<li class="jsOnly"><a id="removeContent" class="button"><span class="icon icon16 fa-times"></span> <span>{lang}wcf.moderation.report.removeContent{/lang}</span></a></li>{/if}
-                                                       <li class="jsOnly"><a id="removeReport" class="button"><span class="icon icon16 fa-check"></span> <span>{lang}wcf.moderation.report.removeReport{/lang}</span></a></li>
-                                               {/if}
-                                               {if $queue->canChangeJustifiedStatus()}
-                                                       <li class="jsOnly"><a id="changeJustifiedStatus" class="button"><span class="icon icon16 fa-pencil"></span> <span>{lang}wcf.moderation.report.changeJustifiedStatus{/lang}</span></a></li>
-                                               {/if}
-                                               {if $queue->getAffectedObject()}<li><a href="{$queue->getAffectedObject()->getLink()}" class="button"><span class="icon icon16 fa-arrow-right"></span> <span>{lang}wcf.moderation.jumpToContent{/lang}</span></a></li>{/if}
-                                               
+                                               {if $queue->getAffectedObject()}<li><a href="{$queue->getAffectedObject()->getLink()}" class="button buttonPrimary"><span class="icon icon16 fa-arrow-right"></span> <span>{lang}wcf.moderation.jumpToContent{/lang}</span></a></li>{/if}
                                                {event name='contentHeaderNavigation'}
                                        {/content}
                                </ul>
        </header>
 {/capture}
 
+{capture assign='contentInteractionButtons'}
+       <a id="moderationAssignUser" class="contentInteractionButton button small jsOnly">{lang}wcf.moderation.assignedUser.change{/lang}</a>
+       {if !$queue->isDone()}
+               <a id="enableContent" class="contentInteractionButton button small jsOnly">{lang}wcf.moderation.activation.enableContent{/lang}</a>
+               {if $queueManager->canRemoveContent($queue->getDecoratedObject())}<a id="removeContent" class="contentInteractionButton button small jsOnly">{lang}wcf.moderation.activation.removeContent{/lang}</a>{/if}
+       {/if}
+       {if $queue->canChangeJustifiedStatus()}
+               <a id="changeJustifiedStatus" class="contentInteractionButton button small jsOnly">{lang}wcf.moderation.report.changeJustifiedStatus{/lang}</a>
+       {/if}
+{/capture}
+
 {include file='header'}
 
 {include file='formError'}
index 40e8b14d6615594ed46ac0e4c14cec41658cfe05..41480874e3b49b74eb23c605b1119c7ff125fd45 100644 (file)
@@ -8,7 +8,6 @@
                        <nav class="contentHeaderNavigation">
                                <ul>
                                        {content}
-                                               {if $__wcf->getUserNotificationHandler()->getNotificationCount()}<li class="jsOnly"><a class="button jsMarkAllAsConfirmed"><span class="icon icon16 fa-check"></span> <span>{lang}wcf.user.notification.markAllAsConfirmed{/lang}</span></a></li>{/if}
                                                {event name='contentHeaderNavigation'}
                                        {/content}
                                </ul>
        <link rel="alternate" type="application/rss+xml" title="{lang}wcf.global.button.rss{/lang}" href="{link controller='NotificationFeed'}at={@$__wcf->getUser()->userID}-{@$__wcf->getUser()->accessToken}{/link}">
 {/capture}
 
-{capture assign='headerNavigation'}
-       <li><a rel="alternate" href="{link controller='NotificationFeed'}at={@$__wcf->getUser()->userID}-{@$__wcf->getUser()->accessToken}{/link}" title="{lang}wcf.global.button.rss{/lang}" class="rssFeed jsTooltip"><span class="icon icon16 fa-rss"></span> <span class="invisible">{lang}wcf.global.button.rss{/lang}</span></a></li>
+{include file='userMenuSidebar'}
+
+{capture assign='contentInteractionPagination'}
+       {pages print=true assign=pagesLinks controller='NotificationList' link="pageNo=%d"}
 {/capture}
 
-{include file='userMenuSidebar'}
+{capture assign='contentInteractionDropdownItems'}
+       {if $__wcf->getUserNotificationHandler()->getNotificationCount()}<li class="jsOnly"><a href="#" class="jsMarkAllAsConfirmed">{lang}wcf.user.notification.markAllAsConfirmed{/lang}</a></li>{/if}
+       <li><a rel="alternate" href="{link controller='NotificationFeed'}at={@$__wcf->getUser()->userID}-{@$__wcf->getUser()->accessToken}{/link}" class="rssFeed">{lang}wcf.global.button.rss{/lang}</a></li>
+{/capture}
 
 {include file='header' __sidebarLeftHasMenu=true}
 
-{hascontent}
-       <div class="paginationTop">
-               {content}{pages print=true assign=pagesLinks controller='NotificationList' link="pageNo=%d"}{/content}
-       </div>
-{/hascontent}
-
 {if $notifications[notifications]}
        {assign var=lastPeriod value=''}
        
index 7395b0829be9272118d997ff9a37c5364c8267a4..3f80ec77aa7ab8f8125c480df6b5d94435d21c60 100644 (file)
@@ -3,12 +3,13 @@
                {if $skipBreadcrumbs|empty}{include file='breadcrumbs'}{/if}
                
                {hascontent}
-               <ul class="pageNavigationIcons jsPageNavigationIcons">
-                       {content}
-                               {if $headerNavigation|isset}{@$headerNavigation}{/if}
-                               {event name='navigationIcons'}
-                       {/content}
-               </ul>
+                       {* DEPRECATED: use contentInteractionButtons or contentInteractionDropdownItems instead *}
+                       <ul class="pageNavigationIcons jsPageNavigationIcons">
+                               {content}
+                                       {if $headerNavigation|isset}{@$headerNavigation}{/if}
+                                       {event name='navigationIcons'}
+                               {/content}
+                       </ul>
                {/hascontent}
        </div>
 </div>
index bcc79e718da12d3ce06a4b9bbdf743042334c780..c7a2972d6243cf2f596edbab033ddb820c85e662 100644 (file)
@@ -9,9 +9,6 @@
                        <nav class="contentHeaderNavigation">
                                <ul>
                                        {content}
-                                               {if $alterable}
-                                                       <li><a href="{link controller='Search'}modify={@$searchID}{/link}" class="button"><span class="icon icon16 fa-search"></span> <span>{lang}wcf.search.results.change{/lang}</span></a></li>
-                                               {/if}
                                                {event name='contentHeaderNavigation'}
                                        {/content}
                                </ul>
        </header>
 {/capture}
 
-{include file='header'}
+{capture assign='contentInteractionPagination'}
+       {assign var=encodedHighlight value=$highlight|urlencode}
+       {pages print=true application=$application assign=pagesLinks controller='SearchResult' id=$searchID link="pageNo=%d&highlight=$encodedHighlight"}
+{/capture}
 
-{hascontent}
-       <div class="paginationTop">
-               {content}
-                       {assign var=encodedHighlight value=$highlight|urlencode}
-                       {pages print=true application=$application assign=pagesLinks controller='SearchResult' id=$searchID link="pageNo=%d&highlight=$encodedHighlight"}
-               {/content}
-       </div>
-{/hascontent}
+{capture assign='contentInteractionButtons'}
+       {if $alterable}
+               <a href="{link controller='Search'}modify={@$searchID}{/link}" class="contentInteractionButton button small">{lang}wcf.search.results.change{/lang}</a>
+       {/if}
+{/capture}
+
+{include file='header'}
 
 {include file=$resultListTemplateName application=$resultListApplication}
 
index 989e846cd4d6a7aed5c06d6e130018ab1d0aff3a..59795191db2420fe9a3cc3f368baaaeacd2d9e33 100644 (file)
        {/if}
 {/capture}
 
-{include file='header'}
+{capture assign='contentInteractionPagination'}
+       {pages print=true assign=pagesLinks controller='Tagged' object=$tag link="objectType=$objectType&pageNo=%d"}
+{/capture}
 
-{hascontent}
-       <div class="paginationTop">
-               {content}{pages print=true assign=pagesLinks controller='Tagged' object=$tag link="objectType=$objectType&pageNo=%d"}{/content}
-       </div>
-{/hascontent}
+{include file='header'}
 
 {if $items}
        {include file=$resultListTemplateName application=$resultListApplication}
index 460b73e33012382f6b72ecb67b02a765c8bfba0d..fcef5c7642241f30d85d4e143d9a5ce3aa379ef6 100644 (file)
        </header>
 {/capture}
 
-{include file='header'}
+{capture assign='contentInteractionPagination'}
+       {pages print=true assign='pagesLinks' controller='Trophy' object=$trophy link="pageNo=%d"}
+{/capture}
 
-{hascontent}
-       <div class="paginationTop">
-               {content}
-                       {pages print=true assign='pagesLinks' controller='Trophy' object=$trophy link="pageNo=%d"}
-               {/content}
-       </div>
-{/hascontent}
+{include file='header'}
 
 {if $objects|count}
        <div class="section sectionContainerList">
index f88727cb2c576a9d8ddf877d65aff8a7b614bc28..4a0fac0ede9d0251a5dbb81accb5156dc6284208 100644 (file)
        {/if}
 {/capture}
 
-{include file='header'}
+{capture assign='contentInteractionPagination'}
+       {pages print=true assign='pagesLinks' controller='TrophyList' link="pageNo=%d"}
+{/capture}
 
-{hascontent}
-       <div class="paginationTop">
-               {content}
-                       {pages print=true assign='pagesLinks' controller='TrophyList' link="pageNo=%d"}
-               {/content}
-       </div>
-{/hascontent}
+{include file='header'}
 
 {if $objects|count}
        <div class="section sectionContainerList">
index 26f5e56607d2c6b066ee0707b9deed4dae69ea86..ad138203eea85544ab9155bb57dc349bb7c586fb 100644 (file)
@@ -9,12 +9,6 @@
 
 {capture assign='contentTitleBadge'}<span class="badge">{#$items}</span>{/capture}
 
-{capture assign='headerNavigation'}
-       {if ARTICLE_ENABLE_VISIT_TRACKING}
-               <li class="jsOnly"><a href="#" title="{lang}wcf.article.markAllAsRead{/lang}" class="markAllAsReadButton jsTooltip"><span class="icon icon16 fa-check"></span> <span class="invisible">{lang}wcf.article.markAllAsRead{/lang}</span></a></li>
-       {/if}
-{/capture}
-
 {capture assign='sidebarRight'}
        {if !$labelGroups|empty}
                <form id="sidebarForm" method="post" action="{link application='wcf' controller=$controllerName object=$controllerObject}{/link}">
        {/if}
 {/capture}
 
-{include file='header'}
+{capture assign='contentInteractionPagination'}
+       {pages print=true assign='pagesLinks' controller='UnreadArticleList' link="pageNo=%d"}
+{/capture}
 
-{hascontent}
-       <div class="paginationTop">
-               {content}
-                       {pages print=true assign='pagesLinks' controller='UnreadArticleList' link="pageNo=%d"}
-               {/content}
-       </div>
-{/hascontent}
+{capture assign='contentInteractionDropdownItems'}
+       {if ARTICLE_ENABLE_VISIT_TRACKING}
+               <li class="jsOnly"><a href="#" class="markAllAsReadButton">{lang}wcf.article.markAllAsRead{/lang}</a></li>
+       {/if}
+{/capture}
+
+{include file='header'}
 
 {if $objects|count}
        <div class="section">
index 06cde2e02080891892c4d4dbef91326c42afb458..1ba7cb5f734badbfa56461cf38c861c20016d9ae 100644 (file)
        </section>
 {/capture}
 
-{include file='header'}
+{capture assign='contentInteractionPagination'}
+       {pages print=true assign=pagesLinks controller='UsersOnlineList' link="pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"}
+{/capture}
 
-{hascontent}
-       <div class="paginationTop">
-               {content}
-                       {pages print=true assign=pagesLinks controller='UsersOnlineList' link="pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"}
-               {/content}
-       </div>
-{/hascontent}
+{include file='header'}
 
 {assign var=usersOnlineList value=''}
 {assign var=usersOnline value=0}
index 3249368cd9ced53d91d3fdced6856e49214111d4..071b65c4a2e70bbfe18b6a57f8bfef54febe3ff9 100644 (file)
@@ -7,12 +7,6 @@
        {/if}
 {/capture}
 
-{capture assign='headerNavigation'}>
-       {if ARTICLE_ENABLE_VISIT_TRACKING}
-               <li class="jsOnly"><a href="#" title="{lang}wcf.article.markAllAsRead{/lang}" class="markAllAsReadButton jsTooltip"><span class="icon icon16 fa-check"></span> <span class="invisible">{lang}wcf.article.markAllAsRead{/lang}</span></a></li>
-       {/if}
-{/capture}
-
 {capture assign='sidebarRight'}
        {if !$labelGroups|empty}
                <form id="sidebarForm" method="post" action="{link application='wcf' controller=$controllerName object=$controllerObject}{/link}">
        {/if}
 {/capture}
 
-{include file='header'}
+{capture assign='contentInteractionPagination'}
+       {pages print=true assign='pagesLinks' controller='WatchedArticleList' link="pageNo=%d"}
+{/capture}
 
-{hascontent}
-       <div class="paginationTop">
-               {content}
-                       {pages print=true assign='pagesLinks' controller='WatchedArticleList' link="pageNo=%d"}
-               {/content}
-       </div>
-{/hascontent}
+{capture assign='contentInteractionDropdownItems'}
+       {if ARTICLE_ENABLE_VISIT_TRACKING}
+               <li class="jsOnly"><a href="#" class="markAllAsReadButton">{lang}wcf.article.markAllAsRead{/lang}</a></li>
+       {/if}
+{/capture}
+
+{include file='header'}
 
 {if $objects|count}
        <div class="section">
index fcd4ed90c50256b96e5323aeda0f87f8c94d1b03..32b63d1cdcbd80fe851fb6749f3e8eff46a5de94 100644 (file)
@@ -62,7 +62,6 @@
     "__wysiwygSmileyFormNode",
     "__wysiwygTabMenuFormContainer",
     "aclPermissionJavaScript",
-    "articleAdd",
     "articleAddDialog",
     "benchmark",
     "booleanOptionType",
index c09b229f530b19c19e021ff653efbb80ed564698..9a0078823cf48138ac49745bca4671b67678fe27 100644 (file)
@@ -27,6 +27,9 @@
 }
 
 .contentHeader {
+       display: flex;
+       align-items: flex-start;
+
        .contentHeaderDescription {
                color: $wcfContentDimmedText;
                margin-top: 5px;
                }
        }
 
+       .contentHeaderTitle {
+               flex: 1 1 0%;
+       }
+
        .contentTitle + .inlineDataList {
                margin-top: 5px;
        }
                }
        }
 
-       @include screen-sm {
-               .contentHeaderNavigation > ul {
-                       @include inlineList;
+       @include screen-sm-down {
+               .contentHeaderNavigation {
+                       flex: 0 auto;
 
-                       align-items: flex-start;
-                       justify-content: flex-end;
-                       margin-top: 20px;
+                       ul {
+                               margin-left: 5px;
+                       }
+
+                       li:not(:first-child) {
+                               margin-top: 5px;
+                       }
+
+                       .button {
+                               padding: 6px 10px;
+                               text-transform: none;
+                       }
                }
        }
 
        @include screen-md-up {
-               display: flex;
-               align-items: flex-start;
-
                .contentHeaderIcon {
                        flex: 0 0 64px;
                        margin-right: 15px;
                }
 
-               .contentHeaderTitle {
-                       flex: 1 1 0%;
-               }
-
                .contentHeaderNavigation {
                        flex: 0 0 auto;
                        margin-left: 15px;
@@ -414,24 +423,102 @@ fieldset {
        }
 }
 
+.contentInteraction {
+       display: flex;
+       justify-content: space-between;
+       margin-top: 20px;
+
+       @include screen-xs {
+               flex-wrap: wrap;
+       }
+}
+
+.contentInteractionPagination {
+       flex: 0 0 auto;
+
+       &.paginationTop {
+               margin-top: 0;
+       }
+
+       @include screen-xs {
+               flex: 0 0 100%;
+
+               & + .contentInteractionButtonContainer {
+                       margin-top: 20px;
+               }
+       }
+}
+
+.contentInteractionButtonContainer {
+       display: flex;
+       margin-left: auto;
+       overflow: auto;
+}
+
+.contentInteractionButtons {
+       display: flex;
+       flex: 0 0 auto;
+}
+
+.contentInteractionButton {
+       flex: 0 0 auto;
+       overflow: hidden;
+
+       .icon {
+               display: none;
+       }
+
+       &:not(:first-child) {
+               &.button,
+               .button {
+                       border-bottom-left-radius: 0;
+                       border-top-left-radius: 0;
+               }
+       }
+
+       &:not(:last-child) {
+               &.button,
+               .button {
+                       border-bottom-right-radius: 0;
+                       border-top-right-radius: 0;
+               }
+       }
+}
+
+.contentInteractionButton:not(:first-child) {
+       margin-left: 1px;
+}
+
+.contentInteractionDropdown {
+       display: flex;
+       flex: 0 0 auto;
+       margin-left: 5px;
+
+       .dropdownToggle {
+               align-items: center;
+               display: flex;
+               flex: 0 0 100%;
+               white-space: nowrap;
+       }
+}
+
+.content {
+       .contentInteraction + .section,
+       .contentInteraction + form {
+               margin-top: 20px;
+       }
+}
+
 /* content navigation buttons */
 @include screen-xs {
        .contentHeader > .contentHeaderNavigation > ul {
-               margin-top: 30px;
+               > .button {
+                       display: block;
+                       padding: 7px 10px;
+                       text-align: center;
 
-               > li {
-                       &:not(:first-child) {
-                               margin-top: 10px;
-                       }
-
-                       > .button {
-                               display: block;
-                               padding: 7px 10px;
-                               text-align: center;
-
-                               > .invisible {
-                                       display: inline;
-                               }
+                       > .invisible {
+                               display: inline;
                        }
                }
        }
index 1bd69fa451a68581ad047f46fd45ba6fe2bd43b2..57432010abe763457fd1244d43d310a6986c2a72 100644 (file)
@@ -5446,6 +5446,7 @@ Benachrichtigungen auf <a href="{link isHtmlEmail=true}{/link}">{PAGE_TITLE|lang
                <item name="wcf.user.profile.title"><![CDATA[Benutzerprofil von {$user->username}]]></item>
        </category>
        <category name="wcf.user.objectWatch">
+               <item name="wcf.user.objectWatch.button.subscribe"><![CDATA[Abonnieren]]></item>
                <item name="wcf.user.objectWatch.manageSubscription"><![CDATA[Abonnement verwalten]]></item>
                <item name="wcf.user.objectWatch.subscribe.com.woltlab.wcf.article.category"><![CDATA[Kategorie abonnieren]]></item>
                <item name="wcf.user.objectWatch.enableNotification.com.woltlab.wcf.article.category"><![CDATA[Benachrichtigung über neue Artikel aus dieser Kategorie aktivieren]]></item>
index 658b49c14c52fc029a5b56bbc1ad1ae954144c4b..0df71040763f1dc00a0cf7c6f32932236e4d23b4 100644 (file)
@@ -5447,6 +5447,7 @@ your notifications on <a href="{link isHtmlEmail=true}{/link}">{PAGE_TITLE|langu
                <item name="wcf.user.profile.title"><![CDATA[User profile of {$user->username}]]></item>
        </category>
        <category name="wcf.user.objectWatch">
+               <item name="wcf.user.objectWatch.button.subscribe"><![CDATA[Subscribe]]></item>
                <item name="wcf.user.objectWatch.manageSubscription"><![CDATA[Manage Subscription]]></item>
                <item name="wcf.user.objectWatch.subscribe.com.woltlab.wcf.article.category"><![CDATA[Watch this category]]></item>
                <item name="wcf.user.objectWatch.enableNotification.com.woltlab.wcf.article.category"><![CDATA[Notify me of new articles.]]></item>