1 {capture assign='pageTitle'}{$articleContent->title}{/capture}
3 {capture assign='contentHeader'}
4 <header class="contentHeader articleContentHeader">
5 <div class="contentHeaderTitle">
6 <h1 class="contentTitle">{$articleContent->title}</h1>
7 <div class="contentHeaderDescription">
8 {$articleContent->getArticle()->getCategory()->getTitle()}
10 <ul class="inlineList contentHeaderMetaData articleMetaData">
12 <span class="icon icon16 fa-user"></span>
14 <a href="{link controller='User' id=$article->userID title=$article->username}{/link}" class="userLink" data-user-id="{@$article->userID}">{$article->username}</a>
21 <span class="icon icon16 fa-clock-o"></span>
22 {@$article->time|time}
26 <span class="icon icon16 fa-comments"></span>
27 {lang}wcf.article.articleComments{/lang}
31 <span class="icon icon16 fa-eye"></span>
32 {lang}wcf.article.articleViews{/lang}
35 <li class="articleLikesBadge"></li>
40 <nav class="contentHeaderNavigation">
43 {event name='contentHeaderNavigation'}
51 {include file='header'}
53 {if $articleContent->getImage()}
54 <section class="section">
55 <figure class="articleImage">
56 <div class="articleImageWrapper">{@$articleContent->getImage()->getThumbnailTag('large')}</div>
57 {if $articleContent->getImage()->caption}
58 <figcaption>{$articleContent->getImage()->caption}</figcaption>
64 <section class="section articleContent"
65 data-object-id="{@$article->articleID}"
66 data-object-type="com.woltlab.wcf.likeableArticle" data-like-liked="{if $articleLikeData[$article->articleID]|isset}{@$articleLikeData[$article->articleID]->liked}{/if}" data-like-likes="{if $articleLikeData[$article->articleID]|isset}{@$articleLikeData[$article->articleID]->likes}{else}0{/if}" data-like-dislikes="{if $articleLikeData[$article->articleID]|isset}{@$articleLikeData[$article->articleID]->dislikes}{else}0{/if}" data-like-users='{ {if $articleLikeData[$article->articleID]|isset}{implode from=$articleLikeData[$article->articleID]->getUsers() item=likeUser}"{@$likeUser->userID}": "{$likeUser->username|encodeJSON}"{/implode}{/if} }' data-user-id="{@$article->userID}"
68 <div class="htmlContent">
69 {if $articleContent->teaser}
70 <p class="articleTeaser">{$articleContent->teaser}</p>
73 {@$articleContent->getFormattedContent()}
77 <ul class="tagList articleTagList">
78 {foreach from=$tags item=tag}
79 <li><a href="{link controller='Tagged' object=$tag}objectType=com.woltlab.wcf.article{/link}" class="articleTag">{$tag->name}</a></li>
84 <div class="articleLikesSummery"></div>
86 <ul class="articleLikeButtons buttonGroup"></ul>
88 {if ENABLE_SHARE_BUTTONS}
89 <section class="section jsOnly">
90 <h2 class="sectionTitle">{lang}wcf.message.share{/lang}</h2>
92 {include file='shareButtons'}
97 {if ARTICLE_SHOW_ABOUT_AUTHOR}
98 <div class="section articleAboutAuthor">
99 <h2 class="sectionTitle">{lang}wcf.article.aboutAuthor{/lang}</h2>
102 <span class="articleAboutAuthorAvatar">{@$article->getUserProfile()->getAvatar()->getImageTag(128)}</span>
105 <div class="articleAboutAuthorText">{$article->getUserProfile()->aboutMe}</div>
107 <div class="articleAboutAuthorUsername">
108 <a href="{link controller='User' object=$article->getUserProfile()->getDecoratedObject()}{/link}" class="username userLink" data-user-id="{@$article->getUserProfile()->userID}" rel="author">{if MESSAGE_SIDEBAR_ENABLE_USER_ONLINE_MARKING}{@$article->getUserProfile()->getFormattedUsername()}{else}{$article->getUserProfile()->username}{/if}</a>
110 {if MODULE_USER_RANK}
111 {if $article->getUserProfile()->getUserTitle()}
112 <span class="badge userTitleBadge{if $article->getUserProfile()->getRank() && $article->getUserProfile()->getRank()->cssClassName} {@$article->getUserProfile()->getRank()->cssClassName}{/if}">{$article->getUserProfile()->getUserTitle()}</span>
114 {if $article->getUserProfile()->getRank() && $article->getUserProfile()->getRank()->rankImage}
115 <span class="userRank">{@$article->getUserProfile()->getRank()->getImage()}</span>
124 <footer class="contentFooter">
126 <nav class="contentFooterNavigation">
128 {content}{event name='contentFooterNavigation'}{/content}
134 {if $previousArticle || $nextArticle}
135 <div class="section articleNavigation">
138 {if $previousArticle}
139 <li class="previousArticleButton">
140 <a href="{$previousArticle->getLink()}" rel="prev">
141 {if $previousArticle->getImage()}
143 <span class="articleNavigationArticleImage">{@$previousArticle->getImage()->getElementTag(96)}</span>
146 <span class="articleNavigationEntityName">{lang}wcf.article.previousArticle{/lang}</span>
147 <span class="articleNavigationArticleTitle">{$previousArticle->getTitle()}</span>
152 <span class="articleNavigationEntityName">{lang}wcf.article.previousArticle{/lang}</span>
153 <span class="articleNavigationArticleTitle">{$previousArticle->getTitle()}</span>
161 <li class="nextArticleButton">
162 <a href="{$nextArticle->getLink()}" rel="next">
163 {if $nextArticle->getImage()}
165 <span class="articleNavigationArticleImage">{@$nextArticle->getImage()->getElementTag(96)}</span>
168 <span class="articleNavigationEntityName">{lang}wcf.article.nextArticle{/lang}</span>
169 <span class="articleNavigationArticleTitle">{$nextArticle->getTitle()}</span>
174 <span class="articleNavigationEntityName">{lang}wcf.article.nextArticle{/lang}</span>
175 <span class="articleNavigationArticleTitle">{$nextArticle->getTitle()}</span>
186 {if $relatedArticles|count}
187 <section class="section relatedArticles">
188 <h2 class="sectionTitle">{lang}wcf.article.relatedArticles{/lang}</h2>
190 <ul class="articleList">
191 {foreach from=$relatedArticles item='relatedArticle'}
193 <a href="{$relatedArticle->getLink()}">
194 {if $relatedArticle->getImage()}
196 <div class="articleListImage">{@$relatedArticle->getImage()->getThumbnailTag('tiny')}</div>
200 <div class="containerHeadline">
201 <h3 class="articleListTitle">{$relatedArticle->getTitle()}</h3>
202 <ul class="inlineList articleListMetaData">
204 <span class="icon icon16 fa-clock-o"></span>
205 {@$relatedArticle->time|time}
209 <span class="icon icon16 fa-comments"></span>
210 {lang article=$relatedArticle}wcf.article.articleComments{/lang}
213 {if MODULE_LIKE && $__wcf->getSession()->getPermission('user.like.canViewLike')}
215 {if $relatedArticle->likes || $relatedArticle->dislikes}
216 <span class="icon icon16 fa-thumbs-o-{if $relatedArticle->cumulativeLikes < 0}down{else}up{/if} jsTooltip" title="{lang likes=$relatedArticle->likes dislikes=$relatedArticle->dislikes}wcf.like.tooltip{/lang}"></span>
217 {if $relatedArticle->cumulativeLikes > 0}+{elseif $relatedArticle->cumulativeLikes == 0}±{/if}{#$relatedArticle->cumulativeLikes}
224 <div class="containerContent articleListTeaser">
225 {$relatedArticle->getTeaser()}
229 {if $relatedArticle->getImage()}
239 {if $article->enableComments}
240 {if $commentList|count || $commentCanAdd}
241 <section class="section sectionContainerList">
242 <h2 class="sectionTitle">{lang}wcf.article.comments{/lang}{if $article->comments} <span class="badge">{#$article->comments}</span>{/if}</h2>
244 {include file='__commentJavaScript' commentContainerID='articleCommentList'}
246 <ul id="articleCommentList" class="commentList containerList" data-can-add="{if $commentCanAdd}true{else}false{/if}" data-object-id="{@$articleContentID}" data-object-type-id="{@$commentObjectTypeID}" data-comments="{@$commentList->countObjects()}" data-last-comment-time="{@$lastCommentTime}">
247 {include file='commentList'}
253 {if MODULE_LIKE && ARTICLE_ENABLE_LIKE}
254 <script data-relocate="true">
255 require(['WoltLab/WCF/Ui/Like/Handler'], function(UiLikeHandler) {
256 new UiLikeHandler('com.woltlab.wcf.likeableArticle', {
261 canDislike: {if LIKE_ENABLE_DISLIKE}true{else}false{/if},
262 canLike: {if $__wcf->getUser()->userID}true{else}false{/if},
263 canLikeOwnContent: {if LIKE_ALLOW_FOR_OWN_CONTENT}true{else}false{/if},
264 canViewSummary: {if LIKE_SHOW_SUMMARY}true{else}false{/if},
267 badgeContainerSelector: '.articleLikesBadge',
268 buttonAppendToSelector: '.articleLikeButtons',
269 containerSelector: '.articleContent',
270 summarySelector: '.articleLikesSummery'
276 {include file='footer'}