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