Commit | Line | Data |
---|---|---|
cd6fe228 | 1 | {capture assign='pageTitle'}{if $filter}{lang}wcf.conversation.folder.{$filter}{/lang}{else}{$__wcf->getActivePage()->getTitle()}{/if}{if $pageNo > 1} - {lang}wcf.page.pageNo{/lang}{/if}{/capture} |
9544b6b4 | 2 | |
583b412e MW |
3 | {capture assign='contentHeader'} |
4 | <header class="contentHeader"> | |
5 | <div class="contentHeaderTitle"> | |
cd6fe228 | 6 | <h1 class="contentTitle">{if $filter}{lang}wcf.conversation.folder.{$filter}{/lang}{else}{$__wcf->getActivePage()->getTitle()}{/if}</h1> |
583b412e MW |
7 | </div> |
8 | ||
0d511ff2 AE |
9 | {hascontent} |
10 | <nav class="contentHeaderNavigation"> | |
11 | <ul> | |
12 | {content} | |
3f3d496b AE |
13 | {if $__wcf->session->getPermission('user.conversation.canStartConversation')} |
14 | <li> | |
15 | <a href="{link controller='ConversationAdd'}{/link}" title="{lang}wcf.conversation.add{/lang}" class="button buttonPrimary"> | |
5fae5fbe | 16 | {icon name='plus'} |
3f3d496b AE |
17 | <span>{lang}wcf.conversation.button.add{/lang}</span> |
18 | </a> | |
19 | </li> | |
20 | {/if} | |
0d511ff2 AE |
21 | {event name='contentHeaderNavigation'} |
22 | {/content} | |
23 | </ul> | |
24 | </nav> | |
25 | {/hascontent} | |
583b412e MW |
26 | </header> |
27 | {/capture} | |
9544b6b4 | 28 | |
583b412e | 29 | {capture assign='headContent'} |
ba2cfa5a | 30 | <link rel="alternate" type="application/rss+xml" title="{lang}wcf.global.button.rss{/lang}" href="{link controller='ConversationRssFeed'}at={@$__wcf->getUser()->userID}-{@$__wcf->getUser()->accessToken}{/link}"> |
583b412e | 31 | {/capture} |
9544b6b4 | 32 | |
fd8ee5b1 | 33 | {capture assign='sidebarRight'} |
7cd36813 MW |
34 | <section class="box"> |
35 | <h2 class="boxTitle">{lang}wcf.conversation.folders{/lang}</h2> | |
331b1cdf | 36 | |
7cd36813 MW |
37 | <div class="boxContent"> |
38 | <nav> | |
7961609e MW |
39 | <ol class="boxMenu"> |
40 | <li{if $filter == ''} class="active"{/if}> | |
41 | <a class="boxMenuLink" href="{link controller='ConversationList'}{/link}"><span class="boxMenuLinkTitle">{lang}wcf.conversation.conversations{/lang}</span>{if $conversationCount} <span class="badge">{#$conversationCount}</span>{/if}</a> | |
7961609e MW |
42 | </li> |
43 | <li{if $filter == 'draft'} class="active"{/if}> | |
44 | <a class="boxMenuLink" href="{link controller='ConversationList'}filter=draft{/link}"><span class="boxMenuLinkTitle">{lang}wcf.conversation.folder.draft{/lang}</span>{if $draftCount} <span class="badge">{#$draftCount}</span>{/if}</a> | |
45 | </li> | |
46 | <li{if $filter == 'outbox'} class="active"{/if}> | |
47 | <a class="boxMenuLink" href="{link controller='ConversationList'}filter=outbox{/link}"><span class="boxMenuLinkTitle">{lang}wcf.conversation.folder.outbox{/lang}</span>{if $outboxCount} <span class="badge">{#$outboxCount}</span>{/if}</a> | |
48 | </li> | |
49 | <li{if $filter == 'hidden'} class="active"{/if}> | |
50 | <a class="boxMenuLink" href="{link controller='ConversationList'}filter=hidden{/link}"><span class="boxMenuLinkTitle">{lang}wcf.conversation.folder.hidden{/lang}</span>{if $hiddenCount} <span class="badge">{#$hiddenCount}</span>{/if}</a> | |
51 | </li> | |
52 | </ol> | |
7cd36813 MW |
53 | </nav> |
54 | </div> | |
55 | </section> | |
3d6dd2ed MS |
56 | |
57 | <section class="box"> | |
58 | <h2 class="boxTitle">{lang}wcf.conversation.filter.participants{/lang}</h2> | |
59 | ||
60 | <div class="boxContent"> | |
61 | <form action="{link controller='ConversationList'}{if $filter}filter={@$filter}&{/if}sortField={$sortField}&sortOrder={$sortOrder}&pageNo={@$pageNo}{/link}" method="post"> | |
62 | <dl> | |
63 | <dt></dt> | |
64 | <dd><label><textarea id="participants" name="participants" class="long">{implode from=$participants item=participant glue=','}{$participant}{/implode}</textarea></label></dd> | |
65 | </dl> | |
66 | ||
67 | <div class="formSubmit"> | |
0b498318 | 68 | <input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s"> |
aa94c120 | 69 | {csrfToken} |
3d6dd2ed MS |
70 | </div> |
71 | </form> | |
72 | </div> | |
73 | </section> | |
74 | ||
583b412e | 75 | <section class="box jsOnly"> |
7cd36813 | 76 | <h2 class="boxTitle">{lang}wcf.conversation.label{/lang}</h2> |
331b1cdf | 77 | |
7cd36813 MW |
78 | <div class="boxContent"> |
79 | <div id="conversationLabelFilter" class="dropdown"> | |
80 | <div class="dropdownToggle" data-toggle="conversationLabelFilter"> | |
81 | {if $labelID} | |
82 | {foreach from=$labelList item=label} | |
83 | {if $label->labelID == $labelID} | |
fb88a8cb | 84 | <span class="badge label{if $label->cssClassName} {$label->cssClassName}{/if}">{$label->label}</span> |
7cd36813 MW |
85 | {/if} |
86 | {/foreach} | |
87 | {else} | |
88 | <span class="badge">{lang}wcf.conversation.label.filter{/lang}</span> | |
89 | {/if} | |
90 | </div> | |
91 | ||
92 | <div class="dropdownMenu"> | |
93 | <ul class="scrollableDropdownMenu"> | |
94 | {foreach from=$labelList item=label} | |
fb88a8cb | 95 | <li><a href="{link controller='ConversationList'}{if $filter}filter={@$filter}&{/if}{if !$participants|empty}participants={implode from=$participants item=participant}{$participant|rawurlencode}{/implode}&{/if}sortField={$sortField}&sortOrder={$sortOrder}&pageNo={@$pageNo}&labelID={@$label->labelID}{/link}"><span class="badge label{if $label->cssClassName} {@$label->cssClassName}{/if}" data-css-class-name="{if $label->cssClassName}{@$label->cssClassName}{/if}" data-label-id="{$label->labelID}">{$label->label}</span></a></li> |
7cd36813 MW |
96 | {/foreach} |
97 | </ul> | |
98 | <ul> | |
99 | <li class="dropdownDivider"{if !$labelList|count} style="display: none;"{/if}></li> | |
3d6dd2ed | 100 | <li><a href="{link controller='ConversationList'}{if $filter}filter={@$filter}&{/if}{if !$participants|empty}participants={implode from=$participants item=participant}{$participant|rawurlencode}{/implode}&{/if}sortField={$sortField}&sortOrder={$sortOrder}&pageNo={@$pageNo}{/link}"><span class="badge label">{lang}wcf.conversation.label.disableFilter{/lang}</span></a></li> |
7cd36813 MW |
101 | </ul> |
102 | </div> | |
331b1cdf | 103 | </div> |
331b1cdf | 104 | </div> |
7961609e MW |
105 | |
106 | <div class="boxContent"> | |
6404c8be | 107 | <button type="button" id="manageLabel" class="button">{lang}wcf.conversation.label.management{/lang}</button> |
494ac5c2 | 108 | </div> |
7cd36813 | 109 | </section> |
331b1cdf | 110 | |
22f0bc73 | 111 | {event name='beforeQuotaBox'} |
3a49e3c9 | 112 | |
7cd36813 MW |
113 | <section class="box conversationQuota"> |
114 | <h2 class="boxTitle">{lang}wcf.conversation.quota{/lang}</h2> | |
331b1cdf | 115 | |
7cd36813 | 116 | <div class="boxContent"> |
331b1cdf MW |
117 | {assign var='conversationCount' value=$__wcf->getConversationHandler()->getConversationCount()} |
118 | {assign var='maxConversationCount' value=$__wcf->session->getPermission('user.conversation.maxConversations')} | |
a740cedd | 119 | {assign var='conversationCountValue' value=$conversationCount/$maxConversationCount*100} |
401ebb82 MW |
120 | <meter class="conversationQuotaMeter" min="0" max="100" low="90" high="99" value="{$conversationCountValue|ceil}" aria-label="{lang}wcf.conversation.quota{/lang}"> |
121 | {#$conversationCountValue} % | |
a740cedd | 122 | </meter> |
9b8f4622 | 123 | <p><small>{lang}wcf.conversation.quota.description{/lang}</small></p> |
331b1cdf | 124 | </div> |
7cd36813 | 125 | </section> |
c18fa102 MW |
126 | |
127 | {event name='boxes'} | |
9544b6b4 MW |
128 | {/capture} |
129 | ||
d855a993 MW |
130 | {capture assign='contentInteractionPagination'} |
131 | {assign var='participantsParameter' value=''} | |
132 | {if $participants}{capture assign='participantsParameter'}&participants={implode from=$participants item=participant}{$participant|rawurlencode}{/implode}{/capture}{/if} | |
133 | {assign var='labelIDParameter' value=''} | |
134 | {if $labelID}{assign var='labelIDParameter' value="&labelID=$labelID"}{/if} | |
135 | {pages print=true assign=pagesLinks controller='ConversationList' link="filter=$filter$participantsParameter&pageNo=%d&sortField=$sortField&sortOrder=$sortOrder$labelIDParameter"} | |
d7649d82 AE |
136 | {/capture} |
137 | ||
7096c139 | 138 | {capture assign='contentInteractionButtons'} |
6404c8be | 139 | <button type="button" class="markAllAsReadButton contentInteractionButton button small jsOnly"> |
5fae5fbe | 140 | {icon name='check'} |
3f3d496b AE |
141 | <span>{lang}wcf.global.button.markAllAsRead{/lang}</span> |
142 | </button> | |
7096c139 MW |
143 | {/capture} |
144 | ||
d855a993 | 145 | {capture assign='contentInteractionDropdownItems'} |
ba2cfa5a | 146 | <li><a rel="alternate" href="{link controller='ConversationRssFeed'}at={@$__wcf->getUser()->userID}-{@$__wcf->getUser()->accessToken}{/link}">{lang}wcf.global.button.rss{/lang}</a></li> |
d855a993 | 147 | {/capture} |
9544b6b4 | 148 | |
d855a993 | 149 | {include file='header'} |
9544b6b4 MW |
150 | |
151 | {if !$items} | |
0ba37e60 | 152 | <woltlab-core-notice type="info">{lang}wcf.conversation.noConversations{/lang}</woltlab-core-notice> |
9544b6b4 | 153 | {else} |
7cd36813 | 154 | <div class="section tabularBox messageGroupList conversationList jsClipboardContainer" data-type="com.woltlab.wcf.conversation.conversation"> |
ba4a0151 MW |
155 | <ol class="tabularList"> |
156 | <li class="tabularListRow tabularListRowHead"> | |
157 | <ol class="tabularListColumns"> | |
0b498318 | 158 | <li class="columnMark jsOnly"><label><input type="checkbox" class="jsClipboardMarkAll"></label></li> |
c18fa102 | 159 | |
37f3e150 MW |
160 | <li class="columnSort"> |
161 | <ul class="inlineList"> | |
162 | <li> | |
163 | <a rel="nofollow" href="{link controller='ConversationList'}{if $filter}filter={@$filter}&{/if}{if !$participants|empty}participants={implode from=$participants item=participant}{$participant|rawurlencode}{/implode}&{/if}pageNo={@$pageNo}&sortField={$sortField}&sortOrder={if $sortOrder == 'ASC'}DESC{else}ASC{/if}{if $labelID}&labelID={@$labelID}{/if}{/link}"> | |
3f3d496b AE |
164 | {if $sortOrder === 'ASC'} |
165 | <span class="jsTooltip" title="{lang}wcf.global.sorting{/lang} ({lang}wcf.global.sortOrder.ascending{/lang})"> | |
5fae5fbe | 166 | {icon name='arrow-down-wide-short'} |
3f3d496b AE |
167 | </span> |
168 | {else} | |
169 | <span class="jsTooltip" title="{lang}wcf.global.sorting{/lang} ({lang}wcf.global.sortOrder.descending{/lang})"> | |
5fae5fbe | 170 | {icon name='arrow-down-short-wide'} |
3f3d496b AE |
171 | </span> |
172 | {/if} | |
37f3e150 MW |
173 | </a> |
174 | </li> | |
175 | <li> | |
176 | <div class="dropdown"> | |
177 | <span class="dropdownToggle">{if $sortField == 'subject'}{lang}wcf.global.subject{/lang}{else}{lang}wcf.conversation.{$sortField}{/lang}{/if}</span> | |
178 | ||
179 | <ul class="dropdownMenu"> | |
180 | {foreach from=$validSortFields item=_sortField} | |
181 | <li{if $_sortField === $sortField} class="active"{/if}><a rel="nofollow" href="{link controller='ConversationList'}{if $filter}filter={@$filter}&{/if}{if !$participants|empty}participants={implode from=$participants item=participant}{$participant|rawurlencode}{/implode}&{/if}pageNo={@$pageNo}&sortField={$_sortField}&sortOrder={if $sortField === $_sortField}{if $sortOrder === 'DESC'}ASC{else}DESC{/if}{else}{$sortOrder}{/if}{if $labelID}&labelID={@$labelID}{/if}{/link}">{if $_sortField == 'subject'}{lang}wcf.global.subject{/lang}{else}{lang}wcf.conversation.{$_sortField}{/lang}{/if}</a></li> | |
182 | {/foreach} | |
183 | </ul> | |
184 | </div> | |
185 | </li> | |
186 | </ul> | |
187 | </li> | |
ba4a0151 MW |
188 | </ol> |
189 | </li> | |
9544b6b4 | 190 | |
ba4a0151 MW |
191 | {foreach from=$objects item=conversation} |
192 | <li class="tabularListRow"> | |
fb88a8cb | 193 | <ol class="tabularListColumns messageGroup conversation jsClipboardObject{if $conversation->isNew()} new{/if}" data-conversation-id="{$conversation->conversationID}" data-label-ids="[ {implode from=$conversation->getAssignedLabels() item=label}{$label->labelID}{/implode} ]" data-is-closed="{$conversation->isClosed}" data-can-close-conversation="{if $conversation->userID == $__wcf->getUser()->userID}1{else}0{/if}" data-can-add-participants="{if $conversation->canAddParticipants()}1{else}0{/if}"> |
ba4a0151 | 194 | <li class="columnMark jsOnly"> |
fb88a8cb | 195 | <label><input type="checkbox" class="jsClipboardItem" data-object-id="{$conversation->conversationID}"></label> |
ba4a0151 MW |
196 | </li> |
197 | <li class="columnIcon columnAvatar"> | |
9544b6b4 MW |
198 | {if $conversation->getUserProfile()->getAvatar()} |
199 | <div> | |
7cd36813 | 200 | <p{if $conversation->isNew()} title="{lang}wcf.conversation.markAsRead.doubleClick{/lang}"{/if}>{@$conversation->getUserProfile()->getAvatar()->getImageTag(48)}</p> |
9544b6b4 MW |
201 | |
202 | {if $conversation->ownPosts && $conversation->userID != $__wcf->user->userID} | |
203 | {if $__wcf->getUserProfileHandler()->getAvatar()} | |
cf1062c1 | 204 | <small class="myAvatar jsTooltip" title="{lang}wcf.conversation.ownPosts{/lang}">{@$__wcf->getUserProfileHandler()->getAvatar()->getImageTag(24)}</small> |
9544b6b4 MW |
205 | {/if} |
206 | {/if} | |
207 | </div> | |
208 | {/if} | |
ba4a0151 MW |
209 | </li> |
210 | <li class="columnSubject"> | |
9cd031f5 MW |
211 | {hascontent} |
212 | <ul class="labelList"> | |
213 | {content} | |
214 | {foreach from=$conversation->getAssignedLabels() item=label} | |
3d6dd2ed | 215 | <li><a href="{link controller='ConversationList'}{if $filter}filter={@$filter}&{/if}{if !$participants|empty}participants={implode from=$participants item=participant}{$participant|rawurlencode}{/implode}&{/if}sortField={$sortField}&sortOrder={$sortOrder}&pageNo={@$pageNo}&labelID={@$label->labelID}{/link}" class="badge label{if $label->cssClassName} {@$label->cssClassName}{/if}">{$label->label}</a></li> |
9cd031f5 MW |
216 | {/foreach} |
217 | {/content} | |
218 | </ul> | |
219 | {/hascontent} | |
9544b6b4 | 220 | |
f54c0746 | 221 | <h3> |
fb88a8cb | 222 | <a href="{if $conversation->isNew()}{link controller='Conversation' object=$conversation}action=firstNew{/link}{else}{$conversation->getLink()}{/if}" class="conversationLink messageGroupLink" data-object-id="{$conversation->conversationID}">{$conversation->subject}</a> |
7dd74a57 MW |
223 | {if $conversation->replies} |
224 | <span class="badge messageGroupCounterMobile">{@$conversation->replies|shortUnit}</span> | |
225 | {/if} | |
f54c0746 | 226 | </h3> |
9544b6b4 | 227 | |
8d6015ca | 228 | <aside class="statusDisplay" role="presentation"> |
9544b6b4 | 229 | <ul class="statusIcons"> |
3f3d496b AE |
230 | {if $conversation->isClosed} |
231 | <li> | |
232 | <span class="jsIconLock jsTooltip" title="{lang}wcf.global.state.closed{/lang}"> | |
5fae5fbe | 233 | {icon name='lock'} |
3f3d496b AE |
234 | </span> |
235 | </li> | |
236 | {/if} | |
237 | {if $conversation->attachments} | |
238 | <li> | |
239 | <span class="jsIconAttachment jsTooltip" title="{lang}wcf.conversation.attachments{/lang}"> | |
5fae5fbe | 240 | {icon name='paperclip'} |
3f3d496b AE |
241 | </span> |
242 | </li> | |
243 | {/if} | |
9544b6b4 MW |
244 | </ul> |
245 | </aside> | |
246 | ||
71c837ea | 247 | <ul class="inlineList dotSeparated small messageGroupInfo"> |
eb66e389 | 248 | <li class="messageGroupAuthor">{user object=$conversation->getUserProfile()}</li> |
b007a2e7 | 249 | <li class="messageGroupTime">{time time=$conversation->time}</li> |
e01fb03d | 250 | <li class="messageGroupEditLink jsOnly"><a href="#" class="jsConversationInlineEditor">{lang}wcf.global.button.edit{/lang}</a></li> |
6c5730e5 MW |
251 | {event name='messageGroupInfo'} |
252 | </ul> | |
9544b6b4 | 253 | |
7dd74a57 MW |
254 | <ul class="messageGroupInfoMobile"> |
255 | <li class="messageGroupAuthorMobile">{$conversation->username}</li> | |
b007a2e7 | 256 | <li class="messageGroupLastPostTimeMobile">{time time=$conversation->lastPostTime}</li> |
7dd74a57 MW |
257 | </ul> |
258 | ||
f34884b9 | 259 | {if $conversation->getParticipantSummary()|count} |
d89a6adf | 260 | <small class="conversationParticipantSummary"> |
6a3c256b | 261 | {assign var='participantSummaryCount' value=$conversation->getParticipantSummary()|count} |
fb88a8cb | 262 | {lang}wcf.conversation.participants{/lang}: {implode from=$conversation->getParticipantSummary() item=participant}<a href="{$participant->getLink()}" class="userLink{if $participant->hideConversation == 2} conversationLeft{/if}" data-object-id="{$participant->userID}">{$participant->username}</a>{/implode} |
7acdb950 | 263 | {if $participantSummaryCount < $conversation->participants}{lang}wcf.conversation.participants.other{/lang}{/if} |
f34884b9 MW |
264 | </small> |
265 | {/if} | |
c18fa102 MW |
266 | |
267 | {event name='conversationData'} | |
ba4a0151 MW |
268 | </li> |
269 | <li class="columnStats"> | |
270 | <dl class="plain statsDataList"> | |
271 | <dt>{lang}wcf.conversation.replies{/lang}</dt> | |
272 | <dd>{@$conversation->replies|shortUnit}</dd> | |
273 | </dl> | |
274 | <dl class="plain statsDataList"> | |
275 | <dt>{lang}wcf.conversation.participants{/lang}</dt> | |
276 | <dd>{@$conversation->participants|shortUnit}</dd> | |
277 | </dl> | |
278 | ||
3f3d496b AE |
279 | <div class="messageGroupListStatsSimple"> |
280 | {if $conversation->replies} | |
281 | <span aria-label="{lang}wcf.conversation.replies{/lang}"> | |
5fae5fbe | 282 | {icon name='comment'} |
3f3d496b AE |
283 | </span> |
284 | {@$conversation->replies|shortUnit} | |
285 | {/if} | |
286 | </div> | |
ba4a0151 MW |
287 | </li> |
288 | <li class="columnLastPost"> | |
f7ac06dc | 289 | {if $conversation->replies != 0 && $conversation->lastPostTime} |
ba4a0151 | 290 | <div class="box32"> |
7cd36813 | 291 | <a href="{link controller='Conversation' object=$conversation}action=lastPost{/link}" class="jsTooltip" title="{lang}wcf.conversation.gotoLastPost{/lang}">{@$conversation->getLastPosterProfile()->getAvatar()->getImageTag(32)}</a> |
9544b6b4 | 292 | |
f54c0746 MW |
293 | <div> |
294 | <p> | |
eb66e389 | 295 | {user object=$conversation->getLastPosterProfile()} |
f54c0746 | 296 | </p> |
b007a2e7 | 297 | <small>{time time=$conversation->lastPostTime}</small> |
f54c0746 | 298 | </div> |
9544b6b4 MW |
299 | </div> |
300 | {/if} | |
ba4a0151 | 301 | </li> |
c18fa102 MW |
302 | |
303 | {event name='columns'} | |
ba4a0151 | 304 | </ol> |
494ac5c2 | 305 | </li> |
ba4a0151 MW |
306 | {/foreach} |
307 | </ol> | |
9544b6b4 MW |
308 | </div> |
309 | {/if} | |
310 | ||
583b412e MW |
311 | <footer class="contentFooter"> |
312 | {hascontent} | |
313 | <div class="paginationBottom"> | |
314 | {content}{@$pagesLinks}{/content} | |
315 | </div> | |
316 | {/hascontent} | |
9544b6b4 | 317 | |
0d511ff2 AE |
318 | {hascontent} |
319 | <nav class="contentFooterNavigation"> | |
320 | <ul> | |
321 | {content} | |
3f3d496b AE |
322 | {if $__wcf->session->getPermission('user.conversation.canStartConversation')} |
323 | <li> | |
324 | <a href="{link controller='ConversationAdd'}{/link}" title="{lang}wcf.conversation.add{/lang}" class="button buttonPrimary"> | |
5fae5fbe | 325 | {icon name='plus'} |
3f3d496b AE |
326 | <span>{lang}wcf.conversation.button.add{/lang}</span> |
327 | </a> | |
328 | </li> | |
329 | {/if} | |
0d511ff2 AE |
330 | {event name='contentFooterNavigation'} |
331 | {/content} | |
332 | </ul> | |
333 | </nav> | |
334 | {/hascontent} | |
583b412e | 335 | </footer> |
9544b6b4 | 336 | |
fb88a8cb | 337 | <script data-relocate="true" src="{$__wcf->getPath()}js/WCF.Conversation{if !ENABLE_DEBUG_MODE}.min{/if}.js?v={@LAST_UPDATE_TIME}"></script> |
583b412e | 338 | <script data-relocate="true"> |
c7a8a9a9 MS |
339 | require([ |
340 | 'WoltLabSuite/Core/Language', | |
341 | 'WoltLabSuite/Core/Controller/Popover', | |
342 | 'WoltLabSuite/Core/Ui/ItemList/User', | |
343 | 'WoltLabSuite/Core/Controller/Clipboard', | |
344 | ], ( | |
345 | Language, | |
346 | ControllerPopover, | |
347 | UiItemListUser, | |
348 | ControllerClipboard | |
349 | ) => { | |
583b412e | 350 | Language.addObject({ |
9361d1b8 MW |
351 | 'wcf.conversation.edit.addParticipants': '{jslang}wcf.conversation.edit.addParticipants{/jslang}', |
352 | 'wcf.conversation.edit.assignLabel': '{jslang}wcf.conversation.edit.assignLabel{/jslang}', | |
353 | 'wcf.conversation.edit.close': '{jslang}wcf.conversation.edit.close{/jslang}', | |
354 | 'wcf.conversation.edit.leave': '{jslang}wcf.conversation.edit.leave{/jslang}', | |
355 | 'wcf.conversation.edit.open': '{jslang}wcf.conversation.edit.open{/jslang}', | |
356 | 'wcf.conversation.edit.subject': '{jslang}wcf.conversation.edit.subject{/jslang}', | |
357 | 'wcf.conversation.label.management': '{jslang}wcf.conversation.label.management{/jslang}', | |
358 | 'wcf.conversation.label.management.addLabel.success': '{jslang}wcf.conversation.label.management.addLabel.success{/jslang}', | |
359 | 'wcf.conversation.label.management.deleteLabel.confirmMessage': '{jslang}wcf.conversation.label.management.deleteLabel.confirmMessage{/jslang}', | |
360 | 'wcf.conversation.label.management.editLabel': '{jslang}wcf.conversation.label.management.editLabel{/jslang}', | |
361 | 'wcf.conversation.label.placeholder': '{jslang}wcf.conversation.label.placeholder{/jslang}', | |
362 | 'wcf.conversation.leave.title': '{jslang}wcf.conversation.leave.title{/jslang}', | |
363 | 'wcf.global.state.closed': '{jslang}wcf.global.state.closed{/jslang}', | |
364 | 'wcf.global.subject': '{jslang}wcf.global.subject{/jslang}', | |
365 | 'wcf.conversation.label.assignLabels': '{jslang}wcf.conversation.label.assignLabels{/jslang}' | |
583b412e MW |
366 | }); |
367 | ||
c7a8a9a9 MS |
368 | ControllerClipboard.setup({ |
369 | pageClassName: 'wcf\\page\\ConversationListPage', | |
370 | hasMarkedItems: {if $hasMarkedItems}true{else}false{/if}, | |
371 | }); | |
583b412e MW |
372 | |
373 | var $editorHandler = new WCF.Conversation.EditorHandler(); | |
374 | var $inlineEditor = new WCF.Conversation.InlineEditor('.conversation'); | |
375 | $inlineEditor.setEditorHandler($editorHandler, 'list'); | |
376 | ||
377 | new WCF.Conversation.Clipboard($editorHandler); | |
378 | new WCF.Conversation.Label.Manager('{link controller='ConversationList' encode=false}{if $filter}filter={@$filter}&{/if}{if !$participants|empty}participants={implode from=$participants item=participant}{$participant|rawurlencode}{/implode}&{/if}sortField={$sortField}&sortOrder={$sortOrder}&pageNo={@$pageNo}{/link}'); | |
583b412e MW |
379 | |
380 | // mobile safari hover workaround | |
381 | if ($(window).width() <= 800) { | |
382 | $('.sidebar').addClass('mobileSidebar').hover(function() { }); | |
383 | } | |
384 | ||
385 | UiItemListUser.init('participants', { | |
4d951026 AE |
386 | excludedSearchValues: ['{$__wcf->user->username|encodeJS}'], |
387 | maxItems: 20 | |
583b412e | 388 | }); |
ce8c322f MS |
389 | |
390 | ControllerPopover.init({ | |
391 | className: 'conversationLink', | |
392 | dboAction: 'wcf\\data\\conversation\\ConversationAction', | |
393 | identifier: 'com.woltlab.wcf.conversation' | |
394 | }); | |
583b412e MW |
395 | }); |
396 | </script> | |
9544b6b4 | 397 | |
2d9927bb MW |
398 | <script data-relocate="true"> |
399 | require(['WoltLabSuite/Core/Conversation/Ui/MarkAsRead'], (MarkAsRead) => { | |
400 | MarkAsRead.setup(); | |
401 | }); | |
402 | require(['WoltLabSuite/Core/Conversation/Ui/MarkAllAsRead'], (MarkAllAsRead) => { | |
403 | MarkAllAsRead.setup(); | |
404 | }); | |
405 | </script> | |
406 | ||
583b412e | 407 | {include file='footer'} |