Commit | Line | Data |
---|---|---|
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'} |