Merge branch 'master' into next
[GitHub/WoltLab/WCF.git] / com.woltlab.wcf / templates / usersOnlineList.tpl
1 {include file='documentHeader'}
2
3 <head>
4 <title>{lang}wcf.user.usersOnline{/lang} - {PAGE_TITLE|language}</title>
5
6 {include file='headInclude'}
7
8 <link rel="canonical" href="{link controller='UsersOnlineList'}{/link}" />
9
10 <script data-relocate="true">
11 //<![CDATA[
12 $(function() {
13 WCF.Language.addObject({
14 'wcf.user.button.follow': '{lang}wcf.user.button.follow{/lang}',
15 'wcf.user.button.ignore': '{lang}wcf.user.button.ignore{/lang}',
16 'wcf.user.button.unfollow': '{lang}wcf.user.button.unfollow{/lang}',
17 'wcf.user.button.unignore': '{lang}wcf.user.button.unignore{/lang}'
18 });
19
20 new WCF.User.Action.Follow($('.userList > li'));
21 new WCF.User.Action.Ignore($('.userList > li'));
22 });
23 //]]>
24 </script>
25
26 {if USERS_ONLINE_PAGE_REFRESH > 0}
27 <meta http-equiv="refresh" content="{@USERS_ONLINE_PAGE_REFRESH}; url={link controller='UsersOnlineList'}sortField={@$sortField}&sortOrder={@$sortOrder}{/link}" />
28 {/if}
29 </head>
30
31 <body id="tpl{$templateName|ucfirst}" data-template="{$templateName}" data-application="{$templateNameApplication}">
32
33 {capture assign='sidebarRight'}
34 <section class="box">
35 <form method="post" action="{link controller='UsersOnlineList'}{/link}">
36 <h2 class="boxTitle">{lang}wcf.user.members.sort{/lang}</h2>
37
38 <div class="boxContent">
39 <dl>
40 <dt></dt>
41 <dd>
42 <select id="sortField" name="sortField">
43 <option value="username"{if $sortField == 'username'} selected="selected"{/if}>{lang}wcf.user.username{/lang}</option>
44 <option value="lastActivityTime"{if $sortField == 'lastActivityTime'} selected="selected"{/if}>{lang}wcf.user.usersOnline.lastActivity{/lang}</option>
45 <option value="requestURI"{if $sortField == 'requestURI'} selected="selected"{/if}>{lang}wcf.user.usersOnline.location{/lang}</option>
46
47 {if $__wcf->session->getPermission('admin.user.canViewIpAddress')}
48 <option value="ipAddress"{if $sortField == 'ipAddress'} selected="selected"{/if}>{lang}wcf.user.usersOnline.ipAddress{/lang}</option>
49 <option value="userAgent"{if $sortField == 'userAgent'} selected="selected"{/if}>{lang}wcf.user.usersOnline.userAgent{/lang}</option>
50 {/if}
51 </select>
52 <select name="sortOrder">
53 <option value="ASC"{if $sortOrder == 'ASC'} selected="selected"{/if}>{lang}wcf.global.sortOrder.ascending{/lang}</option>
54 <option value="DESC"{if $sortOrder == 'DESC'} selected="selected"{/if}>{lang}wcf.global.sortOrder.descending{/lang}</option>
55 </select>
56 </dd>
57 </dl>
58
59 <div class="formSubmit">
60 <input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s" />
61 {@SID_INPUT_TAG}
62 </div>
63 </div>
64 </form>
65 </section>
66
67 <section class="box">
68 <h2 class="boxTitle">{lang}wcf.user.usersOnline{/lang}</h2>
69
70 <div class="boxContent">
71 <p>{lang usersOnlineList=$objects}wcf.user.usersOnline.detail{/lang}</p>
72 {if USERS_ONLINE_RECORD}<p>{lang}wcf.user.usersOnline.record{/lang}</p>{/if}
73 </div>
74
75 {if USERS_ONLINE_ENABLE_LEGEND && $objects->getUsersOnlineMarkings()|count}
76 <div class="boxContent">
77 <dl class="plain inlineDataList usersOnlineLegend">
78 <dt>{lang}wcf.user.usersOnline.marking.legend{/lang}</dt>
79 <dd>
80 <ul class="inlineList commaSeparated">
81 {foreach from=$objects->getUsersOnlineMarkings() item=usersOnlineMarking}
82 <li>{@$usersOnlineMarking}</li>
83 {/foreach}
84 </ul>
85 </dd>
86
87 </dl>
88 </div>
89 {/if}
90 </section>
91 {/capture}
92
93 {include file='header'}
94
95 {include file='userNotice'}
96
97 <header class="contentHeader">
98 <div class="contentHeaderTitle">
99 <h1 class="contentTitle">{lang}wcf.user.usersOnline{/lang}</h1>
100 </div>
101
102 {hascontent}
103 <nav class="contentHeaderNavigation">
104 <ul>
105 {content}{event name='contentHeaderNavigation'}{/content}
106 </ul>
107 </nav>
108 {/hascontent}
109 </header>
110
111 {assign var=usersOnlineList value=''}
112 {assign var=usersOnline value=0}
113 {assign var=robotsOnlineList value=''}
114 {assign var=robotsOnline value=0}
115 {assign var=guestsOnlineList value=''}
116 {assign var=guestsOnline value=0}
117 {foreach from=$objects item=user}
118 {capture assign=locationData}
119 <p>
120 {if $user->getLocation()}{@$user->getLocation()}{else}{lang}wcf.user.usersOnline.location.unknown{/lang}{/if} <small class="separatorLeft">{@$user->lastActivityTime|time}</small>
121 </p>
122 {/capture}
123
124 {capture assign=sessionData}
125 {if $__wcf->session->getPermission('admin.user.canViewIpAddress')}
126 <dl class="plain inlineDataList small">
127 <dt>{lang}wcf.user.usersOnline.ipAddress{/lang}</dt>
128 <dd title="{$user->getFormattedIPAddress()}">{$user->getFormattedIPAddress()|truncate:30}</dd>
129
130 {if !$user->spiderID}
131 <dt>{lang}wcf.user.usersOnline.userAgent{/lang}</dt>
132 <dd title="{$user->userAgent}">{$user->getBrowser()|truncate:30}</dd>
133 {/if}
134 </dl>
135 {/if}
136 {/capture}
137
138 {if $user->userID}
139 {* member *}
140 {capture append=usersOnlineList}
141 <li>
142 <div class="box48">
143 <a href="{link controller='User' object=$user}{/link}" title="{$user->username}">{@$user->getAvatar()->getImageTag(48)}</a>
144
145 <div class="details userInformation">
146 <div class="containerHeadline">
147 <h3><a href="{link controller='User' object=$user}{/link}" class="username">{@$user->getFormattedUsername()}</a>
148 {if MODULE_USER_RANK}
149 {if $user->getUserTitle()}
150 <span class="badge userTitleBadge{if $user->getRank() && $user->getRank()->cssClassName} {@$user->getRank()->cssClassName}{/if}">{$user->getUserTitle()}</span>
151 {/if}
152 {if $user->getRank() && $user->getRank()->rankImage}
153 <span class="userRankImage">{@$user->getRank()->getImage()}</span>
154 {/if}
155 {/if}
156 </h3>
157 {@$locationData}
158 </div>
159
160 {@$sessionData}
161
162 {include file='userInformationButtons'}
163 </div>
164 </div>
165 </li>
166 {/capture}
167
168 {assign var=usersOnline value=$usersOnline+1}
169 {elseif $user->spiderID}
170 {* search robot *}
171 {capture append=robotsOnlineList}
172 <li>
173 <div class="box48">
174 <div><img src="{$__wcf->getPath()}images/avatars/avatar-spider-default.svg" alt="" class="userAvatarImage icon48" /></div>
175
176 <div class="details userInformation">
177 <div class="containerHeadline">
178 <h3>{if $user->getSpider()->spiderURL}<a href="{$user->getSpider()->spiderURL}" class="externalURL"{if EXTERNAL_LINK_TARGET_BLANK} target="_blank"{/if}{if EXTERNAL_LINK_REL_NOFOLLOW} rel="nofollow"{/if}>{$user->getSpider()->spiderName}</a>{else}{$user->getSpider()->spiderName}{/if}</h3>
179 {@$locationData}
180 </div>
181
182 {@$sessionData}
183 </div>
184 </div>
185 </li>
186 {/capture}
187
188 {assign var=robotsOnline value=$robotsOnline+1}
189 {else}
190 {* unregistered *}
191 {capture append=guestsOnlineList}
192 <li>
193 <div class="box48">
194 <div><img src="{$__wcf->getPath()}images/avatars/avatar-default.svg" alt="" class="userAvatarImage icon48" /></div>
195
196 <div class="details userInformation">
197 <div class="containerHeadline">
198 <h3>{lang}wcf.user.guest{/lang}</h3>
199 {@$locationData}
200 </div>
201
202 {@$sessionData}
203 </div>
204 </div>
205 </li>
206 {/capture}
207
208 {assign var=guestsOnline value=$guestsOnline+1}
209 {/if}
210 {/foreach}
211
212 {if $usersOnline}
213 <section class="section sectionContainerList">
214 <h2 class="sectionTitle">{lang}wcf.user.usersOnline.users{/lang} <span class="badge">{#$usersOnline}</span></h2>
215
216 <ol class="containerList userList">
217 {@$usersOnlineList}
218 </ol>
219 </section>
220 {/if}
221
222 {if $guestsOnline && USERS_ONLINE_SHOW_GUESTS}
223 <section class="section sectionContainerList">
224 <h2 class="sectionTitle">{lang}wcf.user.usersOnline.guests{/lang} <span class="badge">{#$guestsOnline}</span></h2>
225
226 <ol class="containerList">
227 {@$guestsOnlineList}
228 </ol>
229 </section>
230 {/if}
231
232 {if $robotsOnline && USERS_ONLINE_SHOW_ROBOTS}
233 <section class="section sectionContainerList">
234 <h2 class="sectionTitle">{lang}wcf.user.usersOnline.robots{/lang} <span class="badge">{#$robotsOnline}</span></h2>
235
236 <ol class="containerList">
237 {@$robotsOnlineList}
238 </ol>
239 </section>
240 {/if}
241
242 <footer class="contentFooter">
243 {hascontent}
244 <nav class="contentFooterNavigation">
245 <ul>
246 {content}{event name='contentFooterNavigation'}{/content}
247 </ul>
248 </nav>
249 {/hascontent}
250 </footer>
251
252 {include file='footer'}
253
254 </body>
255 </html>