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