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