Merge branch 'master' into 2.1
[GitHub/WoltLab/com.woltlab.wcf.conversation.git] / templates / conversation.tpl
1 {include file='documentHeader'}
2
3 <head>
4 <title>{$conversation->subject} {if $pageNo > 1}- {lang}wcf.page.pageNo{/lang} {/if} - {PAGE_TITLE|language}</title>
5
6 {include file='headInclude'}
7
8 <script data-relocate="true" src="{@$__wcf->getPath()}js/WCF.Conversation{if !ENABLE_DEBUG_MODE}.min{/if}.js?v={@$__wcfVersion}"></script>
9 <script data-relocate="true" src="{@$__wcf->getPath()}js/WCF.Moderation{if !ENABLE_DEBUG_MODE}.min{/if}.js?v={@$__wcfVersion}"></script>
10 <script data-relocate="true">
11 //<![CDATA[
12 $(function() {
13 WCF.Language.addObject({
14 'wcf.conversation.edit.addParticipants': '{lang}wcf.conversation.edit.addParticipants{/lang}',
15 'wcf.conversation.edit.assignLabel': '{lang}wcf.conversation.edit.assignLabel{/lang}',
16 'wcf.conversation.edit.close': '{lang}wcf.conversation.edit.close{/lang}',
17 'wcf.conversation.edit.leave': '{lang}wcf.conversation.edit.leave{/lang}',
18 'wcf.conversation.edit.open': '{lang}wcf.conversation.edit.open{/lang}',
19 'wcf.conversation.leave.title': '{lang}wcf.conversation.leave.title{/lang}',
20 'wcf.global.state.closed': '{lang}wcf.global.state.closed{/lang}',
21 'wcf.message.bbcode.code.copy': '{lang}wcf.message.bbcode.code.copy{/lang}',
22 'wcf.message.error.editorAlreadyInUse': '{lang}wcf.message.error.editorAlreadyInUse{/lang}',
23 'wcf.moderation.report.reportContent': '{lang}wcf.moderation.report.reportContent{/lang}',
24 'wcf.moderation.report.success': '{lang}wcf.moderation.report.success{/lang}',
25 'wcf.conversation.label.assignLabels': '{lang}wcf.conversation.label.assignLabels{/lang}'
26 });
27
28 var $availableLabels = [ {implode from=$labelList item=label}{ cssClassName: '{if $label->cssClassName}{@$label->cssClassName}{/if}', labelID: {@$label->labelID}, label: '{$label->label}' }{/implode} ];
29 var $editorHandler = new WCF.Conversation.EditorHandlerConversation($availableLabels);
30 var $inlineEditor = new WCF.Conversation.InlineEditor('.conversation');
31 $inlineEditor.setEditorHandler($editorHandler);
32
33 {assign var=__supportPaste value=true}
34 {if $conversation->isClosed}{assign var=__supportPaste value=false}{/if}
35 {include file='__messageQuoteManager' wysiwygSelector='text' supportPaste=$__supportPaste}
36
37 new WCF.Conversation.Message.InlineEditor({@$conversation->conversationID}, $quoteManager);
38 new WCF.Conversation.Message.QuoteHandler($quoteManager);
39 {if !$conversation->isClosed}new WCF.Conversation.QuickReply($quoteManager);{/if}
40
41 {if $__wcf->session->getPermission('user.profile.canReportContent')}
42 new WCF.Moderation.Report.Content('com.woltlab.wcf.conversation.message', '.jsReportConversationMessage');
43 {/if}
44 new WCF.Conversation.RemoveParticipant({@$conversation->conversationID});
45 new WCF.Message.BBCode.CodeViewer();
46 });
47 //]]>
48 </script>
49 </head>
50
51 <body id="tpl{$templateName|ucfirst}">
52
53 {include file='header'}
54
55 <header class="boxHeadline marginTop conversationHeadline labeledHeadline">
56 <h1><a href="{link controller='Conversation' object=$conversation}{/link}">{$conversation->subject}</a>{if $conversation->isClosed} <span class="icon icon16 icon-lock jsTooltip jsIconLock" title="{lang}wcf.global.state.closed{/lang}"></span>{/if}</h1>
57
58 {hascontent}
59 <ul class="labelList">
60 {content}
61 {foreach from=$conversation->getAssignedLabels() item=label}
62 <li><span class="label badge{if $label->cssClassName} {$label->cssClassName}{/if}">{lang}{$label->label}{/lang}</span></li>
63 {/foreach}
64 {/content}
65 </ul>
66 {/hascontent}
67
68 {event name='headlineData'}
69 </header>
70
71 {include file='userNotice'}
72
73 {if !$conversation->isDraft}
74 <div class="container containerPadding marginTop">
75 <fieldset>
76 <legend>{lang}wcf.conversation.participants{/lang}</legend>
77
78 <ul class="containerBoxList tripleColumned conversationParticipantList">
79 {foreach from=$participants item=participant}
80 <li class="jsParticipant{if !$participant->userID || $participant->hideConversation == 2} conversationLeft{/if}">
81 <div class="box24">
82 {if $participant->userID}<a href="{link controller='User' object=$participant}{/link}" class="framed">{@$participant->getAvatar()->getImageTag(24)}</a>{else}<span class="framed">{@$participant->getAvatar()->getImageTag(24)}</span>{/if}
83 <div>
84 <p>
85 {if $participant->userID}<a href="{link controller='User' object=$participant}{/link}" class="userLink" data-user-id="{@$participant->userID}">{$participant->username}</a>{else}<span>{$participant->username}</span>{/if}
86 {if $participant->isInvisible}<small>({lang}wcf.conversation.invisible{/lang})</small>{/if}
87 {if $participant->userID && ($conversation->userID == $__wcf->getUser()->userID) && ($participant->userID != $__wcf->getUser()->userID) && $participant->hideConversation != 2}
88 <a class="jsDeleteButton jsTooltip jsOnly" title="{lang}wcf.conversation.participants.removeParticipant{/lang}" data-confirm-message="{lang}wcf.conversation.participants.removeParticipant.confirmMessage{/lang}" data-object-id="{@$participant->userID}"><span class="icon icon16 icon-remove"></span></a>
89 {/if}
90 </p>
91 <dl class="plain inlineDataList">
92 <dt>{lang}wcf.conversation.lastVisitTime{/lang}</dt>
93 <dd>{if $participant->lastVisitTime}{@$participant->lastVisitTime|time}{else}-{/if}</dd>
94 </dl>
95 </div>
96 </div>
97 </li>
98 {/foreach}
99 </ul>
100 </fieldset>
101 </div>
102 {/if}
103
104 <div class="contentNavigation">
105 {pages print=true assign=pagesLinks controller='Conversation' object=$conversation link="pageNo=%d"}
106
107 <nav>
108 <ul class="conversation jsConversationInlineEditorContainer" 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}">
109 <li class="jsOnly"><a class="button jsConversationInlineEditor"><span class="icon icon16 icon-pencil"></span> <span>{lang}wcf.global.button.edit{/lang}</span></a></li>
110 {if !$conversation->isClosed}<li><a href="{link controller='ConversationMessageAdd' id=$conversationID}{/link}" title="{lang}wcf.conversation.message.add{/lang}" class="button buttonPrimary jsQuickReply"><span class="icon icon16 icon-plus"></span> <span>{lang}wcf.conversation.message.button.add{/lang}</span></a></li>{/if}
111 {event name='contentNavigationButtonsTop'}
112 </ul>
113 </nav>
114 </div>
115
116 <div class="marginTop">
117 <ul class="messageList">
118 {include file='conversationMessageList'}
119 {if !$conversation->isClosed}{include file='conversationQuickReply'}{/if}
120 </ul>
121 </div>
122
123 <div class="contentNavigation">
124 {@$pagesLinks}
125
126 {hascontent}
127 <nav>
128 <ul>
129 {content}
130 {if !$conversation->isClosed}<li><a href="{link controller='ConversationMessageAdd' id=$conversationID}{/link}" title="{lang}wcf.conversation.message.add{/lang}" class="button buttonPrimary jsQuickReply"><span class="icon icon16 icon-plus"></span> <span>{lang}wcf.conversation.message.button.add{/lang}</span></a></li>{/if}
131 {event name='contentNavigationButtonsBottom'}
132 {/content}
133 </ul>
134 </nav>
135 {/hascontent}
136 </div>
137
138 {include file='footer'}
139
140 </body>
141 </html>