Commit | Line | Data |
---|---|---|
320f4a6d MW |
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 | ||
9543d9fe | 10 | <script data-relocate="true"> |
320f4a6d MW |
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}"> | |
32 | ||
33 | {capture assign='sidebar'} | |
34 | <div> | |
35 | <form method="get" action="{link controller='UsersOnlineList'}{/link}"> | |
36 | <fieldset> | |
37 | <legend><label for="sortField">{lang}wcf.user.members.sort{/lang}</label></legend> | |
38 | ||
39 | <dl> | |
77f70354 | 40 | <dt></dt> |
320f4a6d MW |
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 | </fieldset> | |
59 | ||
60 | <div class="formSubmit"> | |
61 | <input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s" /> | |
d76dee22 | 62 | {@SID_INPUT_TAG} |
320f4a6d MW |
63 | </div> |
64 | </form> | |
65 | </div> | |
66 | ||
11e9145a MW |
67 | <fieldset> |
68 | <legend>{lang}wcf.user.usersOnline{/lang}</legend> | |
69 | ||
ad5e8573 | 70 | <p><small>{lang usersOnlineList=$objects}wcf.user.usersOnline.detail{/lang}</small></p> |
3dc2c09d | 71 | {if USERS_ONLINE_RECORD}<p><small>{lang}wcf.user.usersOnline.record{/lang}</small></p>{/if} |
11e9145a MW |
72 | |
73 | {if USERS_ONLINE_ENABLE_LEGEND && $objects->getUsersOnlineMarkings()|count} | |
74 | <div class="marginTopSmall"> | |
ad5e8573 | 75 | <p><small>{lang}wcf.user.usersOnline.marking.legend{/lang}:</small></p> |
11e9145a | 76 | <ul class="dataList"> |
ad5e8573 | 77 | {foreach from=$objects->getUsersOnlineMarkings() item=usersOnlineMarking} |
11e9145a MW |
78 | <li><small>{@$usersOnlineMarking}</small></li> |
79 | {/foreach} | |
80 | </ul> | |
81 | </div> | |
82 | {/if} | |
83 | </fieldset> | |
84 | ||
320f4a6d MW |
85 | {@$__boxSidebar} |
86 | {/capture} | |
87 | ||
88 | {include file='header' sidebarOrientation='right'} | |
89 | ||
90 | {include file='userNotice'} | |
91 | ||
92 | {assign var=usersOnlineList value=''} | |
93 | {assign var=usersOnline value=0} | |
94 | {assign var=robotsOnlineList value=''} | |
95 | {assign var=robotsOnline value=0} | |
96 | {assign var=guestsOnlineList value=''} | |
97 | {assign var=guestsOnline value=0} | |
98 | {foreach from=$objects item=user} | |
99 | {capture assign=locationData} | |
100 | <p> | |
101 | {if $user->getLocation()}{@$user->getLocation()}{else}{lang}wcf.user.usersOnline.location.unknown{/lang}{/if} <small>- {@$user->lastActivityTime|time}</small> | |
102 | </p> | |
103 | {/capture} | |
104 | ||
105 | {capture assign=sessionData} | |
106 | {if $__wcf->session->getPermission('admin.user.canViewIpAddress')} | |
107 | <dl class="plain inlineDataList"> | |
108 | <dt>{lang}wcf.user.usersOnline.ipAddress{/lang}</dt> | |
109 | <dd title="{$user->getFormattedIPAddress()}">{$user->getFormattedIPAddress()|truncate:30}</dd> | |
8bf41072 MW |
110 | |
111 | {if !$user->spiderID} | |
112 | <dt>{lang}wcf.user.usersOnline.userAgent{/lang}</dt> | |
113 | <dd title="{$user->userAgent}">{$user->getBrowser()|truncate:30}</dd> | |
114 | {/if} | |
320f4a6d MW |
115 | </dl> |
116 | {/if} | |
117 | {/capture} | |
118 | ||
119 | {if $user->userID} | |
120 | {* member *} | |
121 | {capture append=usersOnlineList} | |
122 | <li> | |
123 | <div class="box48"> | |
124 | <a href="{link controller='User' object=$user}{/link}" title="{$user->username}" class="framed">{@$user->getAvatar()->getImageTag(48)}</a> | |
125 | ||
126 | <div class="details userInformation"> | |
127 | <div class="containerHeadline"> | |
128 | <h3><a href="{link controller='User' object=$user}{/link}">{@$user->getFormattedUsername()}</a>{if MODULE_USER_RANK && $user->getUserTitle()} <span class="badge userTitleBadge{if $user->getRank() && $user->getRank()->cssClassName} {@$user->getRank()->cssClassName}{/if}">{$user->getUserTitle()}</span>{/if}</h3> | |
129 | {@$locationData} | |
130 | </div> | |
131 | ||
132 | {@$sessionData} | |
133 | ||
134 | {include file='userInformationButtons'} | |
135 | </div> | |
136 | </div> | |
137 | </li> | |
138 | {/capture} | |
139 | ||
140 | {assign var=usersOnline value=$usersOnline+1} | |
141 | {elseif $user->spiderID} | |
142 | {* search robot *} | |
143 | {capture append=robotsOnlineList} | |
144 | <li> | |
145 | <div class="box48"> | |
02ee9f36 | 146 | <p class="framed"><img src="{$__wcf->getPath()}images/avatars/avatar-spider-default.svg" alt="" class="icon48" /></p> |
320f4a6d MW |
147 | |
148 | <div class="details userInformation"> | |
149 | <div class="containerHeadline"> | |
96756d4d | 150 | <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> |
320f4a6d MW |
151 | {@$locationData} |
152 | </div> | |
153 | ||
154 | {@$sessionData} | |
155 | </div> | |
156 | </div> | |
157 | </li> | |
158 | {/capture} | |
159 | ||
160 | {assign var=robotsOnline value=$robotsOnline+1} | |
161 | {else} | |
162 | {* unregistered *} | |
163 | {capture append=guestsOnlineList} | |
164 | <li> | |
165 | <div class="box48"> | |
320f4a6d MW |
166 | <p class="framed"><img src="{$__wcf->getPath()}images/avatars/avatar-default.svg" alt="" class="icon48" /></p> |
167 | ||
168 | <div class="details userInformation"> | |
169 | <div class="containerHeadline"> | |
170 | <h3>{lang}wcf.user.guest{/lang}</h3> | |
171 | {@$locationData} | |
172 | </div> | |
173 | ||
174 | {@$sessionData} | |
175 | </div> | |
176 | </div> | |
177 | </li> | |
178 | {/capture} | |
179 | ||
180 | {assign var=guestsOnline value=$guestsOnline+1} | |
181 | {/if} | |
182 | {/foreach} | |
183 | ||
184 | <div class="contentNavigation"> | |
185 | {hascontent} | |
186 | <nav> | |
187 | <ul> | |
188 | {content} | |
189 | {event name='contentNavigationButtonsTop'} | |
190 | {/content} | |
191 | </ul> | |
192 | </nav> | |
193 | {/hascontent} | |
194 | </div> | |
195 | ||
196 | {if $usersOnline} | |
197 | <header class="boxHeadline"> | |
198 | <h1>{lang}wcf.user.usersOnline{/lang} <span class="badge">{#$usersOnline}</span></h1> | |
199 | </header> | |
200 | ||
201 | <div class="container marginTop"> | |
a84a45a4 | 202 | <ol class="containerList userList"> |
320f4a6d MW |
203 | {@$usersOnlineList} |
204 | </ol> | |
205 | </div> | |
206 | {/if} | |
207 | ||
208 | {if $guestsOnline && USERS_ONLINE_SHOW_GUESTS} | |
209 | <header class="boxHeadline"> | |
210 | <h1>{lang}wcf.user.usersOnline.guests{/lang} <span class="badge">{#$guestsOnline}</span></h1> | |
211 | </header> | |
212 | ||
213 | <div class="container marginTop"> | |
a84a45a4 | 214 | <ol class="containerList"> |
320f4a6d MW |
215 | {@$guestsOnlineList} |
216 | </ol> | |
217 | </div> | |
218 | {/if} | |
219 | ||
220 | {if $robotsOnline && USERS_ONLINE_SHOW_ROBOTS} | |
221 | <header class="boxHeadline"> | |
222 | <h1>{lang}wcf.user.usersOnline.robots{/lang} <span class="badge">{#$robotsOnline}</span></h1> | |
223 | </header> | |
224 | ||
225 | <div class="container marginTop"> | |
a84a45a4 | 226 | <ol class="containerList"> |
320f4a6d MW |
227 | {@$robotsOnlineList} |
228 | </ol> | |
229 | </div> | |
230 | {/if} | |
231 | ||
232 | <div class="contentNavigation"> | |
233 | {hascontent} | |
234 | <nav> | |
235 | <ul> | |
236 | {content} | |
237 | {event name='contentNavigationButtonsBottom'} | |
238 | {/content} | |
239 | </ul> | |
240 | </nav> | |
241 | {/hascontent} | |
242 | </div> | |
243 | ||
244 | {include file='footer'} | |
245 | ||
246 | </body> | |
247 | </html> |