1 2<!DOCTYPE html> 3<html> 4<head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" /> 5
5<script> 6 7 function setTaggedSessionInfo(tag, taggedSessionInfo) { 8 var oldTaggedSessionInfo = window._taggedSessionInfos[tag]; 9 window._taggedSessionInfos[tag] = taggedSessionInfo; 10 11 if (!oldTaggedSessionInfo || taggedSessionInfo.SessionID != oldTaggedSessionInfo.SessionID || taggedSessionInfo.Code != oldTaggedSessionInfo.Code) 12 SC.livedata.notifyDirty(); 13 } 14 15 // backwards compatibility with extensions 16 function setTaggedSessionID(tag, sessionID) { 17 window.setTaggedSessionInfo(tag, { SessionID: sessionID }); 18 } 19 20 function getTaggedSessionInfo(tag) { 21 return window._taggedSessionInfos[tag]; 22 } 23 24 function getSessionInfo() { 25 var liveData = SC.livedata.get(); 26 return liveData && liveData.ResponseInfoMap && liveData.ResponseInfoMap['GuestSessionInfo'] 27 } 28 29 </script>
vendor: 2 bytes, line 29
29
30<script src="Script.ashx?__Cache=0ee8256a-0748-48d9-9923-91896ac0f46b" id="defaultScript"></script>
vendor: 2 bytes, line 30
30
31<script src="Scripts/SC.polyfill.ts?ScriptImportType=NoModule&__Cache=3ebe4e34-a85e-424c-a1c7-3a4674fe3304" nomodule="nomodule"></script>
vendor: 2 bytes, line 31
31
32<script src="Scripts/SC.main.ts?ScriptImportType=NoModule&__Cache=55cb249c-7676-42a2-a99d-1f2a34a6425e" nomodule="nomodule"></script>
vendor: 2 bytes, line 32
32
33<script src="Scripts/SC.main.ts?ScriptImportType=Classic&__Cache=55cb249c-7676-42a2-a99d-1f2a34a6425e"></script>
33 34<link href="App_Themes/DarkTeal/Default.css?__Cache=83720b3a-a9a7-41cc-8143-7aa882d307a1" type="text/css" rel="stylesheet" /><link href="FavIcon.axd?__Cache=2d6d768c-f4cb-439b-8aa6-2bf30d119c31" rel="shortcut icon" />
35<script>SC.util.mergeIntoContext({"focusedControlID":null,"userName":"","userDisplayName":"","isUserAuthenticated":false,"antiForgeryToken":"3L6CdvegzPAG4hkHCTcRw6FdzWz7iDOiPj+MGTp5TiEBAACdKSRdo8QtQg==","isUserAdministrator":false,"canManageSharedToolbox":false,"pageBaseFileName":"Guest","notifyActivityFrequencyMilliseconds":600000,"loginAfterInactivityMilliseconds":36000000,"canChangePassword":false,"controlPanelUrl":null,"pageType":"GuestPage","processType":2,"userAgentOverride":null,"sessionTypeInfos":[],"imports":{"SC.editor":"Scripts/SC.editor.ts?ScriptImportType=EsModule\u0026__Cache=a9920599-bec9-48ae-8f85-bb63b512f9ca"}});</script>
35 36<title> 37 ScreenConnect Remote Support Software 38</title></head> 39<body> 40 <div class="HiddenPanel"></div> 41
41<script> 42 SC.ui.setVisible(document.body, false); 43 </script>
43 44 <div class="OuterPanel"> 45 <div class="HeaderPanel"></div> 46 <div class="NavigationPanel ArrowNavigation" tabindex="10"></div> 47 <div class="MainPanel"> 48 49 <div class="ContentPanel"> 50 <div> 51 <div class="WelcomePanel"></div> 52 <div class="ActionPanel"></div> 53 </div> 54 <div class="InfoPanel"></div> 55 </div> 56 57 </div> 58 </div> 59
59<script> 60 SC.context.scriptBaseUrl = SC.util.getBaseUrl($('defaultScript').src); 61 </script>
61 62 63
63<script> 64 65 SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { 66 var session = null; 67 var hostAccessToken = null; 68 69 switch (eventArgs.commandName) { 70 case 'JoinBySessionID': 71 session = window.getSessionInfo().Sessions.filter(function (s) { return s.SessionID == eventArgs.commandArgument; })[0]; 72 break; 73 case 'JoinByTag': 74 var taggedSessionInfo = window.getTaggedSessionInfo(eventArgs.commandArgument); 75 hostAccessToken = taggedSessionInfo.HostAccessToken; 76 session = window.getSessionInfo().Sessions.filter(function (s) { return s.SessionID == taggedSessionInfo.SessionID || (taggedSessionInfo.Code && s.Code.toLowerCase() == taggedSessionInfo.Code.toLowerCase()); })[0]; 77 break; 78 } 79 80 // older IE only allows launching urls on actual clicks and this could be sent by a keystroke 81 if (session && (SC.command.doesClickDispatch(eventArgs.commandElement) || !SC.util.isCapable(SC.util.Caps.InternetExplorer, null, { major: 11 }))) { 82 SC.launch.startJoinSession( 83 { session: session, hostAccessToken: hostAccessToken, processType: hostAccessToken ? SC.types.ProcessType.Host : SC.types.ProcessType.Guest }, 84 function (joinInfo, _, onSuccess, onFailure) { 85 onSuccess( 86 SC.util.getClientLaunchParameters( 87 joinInfo.session.SessionID, 88 joinInfo.session.SessionType, 89 joinInfo.session.Name, 90 joinInfo.fieldMap.participantName.value, 91 null, 92 joinInfo.hostAccessToken, 93 joinInfo.processType 94 ) 95 ); 96 } 97 ); 98 } 99 }); 100 101 SC.event.addGlobalHandler(SC.event.QueryJoinInfo, function (eventArgs) { 102 if (eventArgs.session) { 103 eventArgs.shouldShowPrompt = SC.util.getSessionTypeBooleanResource('JoinPanel.{0}PromptVisible', eventArgs.session.SessionType); 104 eventArgs.promptText = SC.util.getSessionTypeResource('JoinPanel.{0}PromptMessage', eventArgs.session.SessionType); 105 eventArgs.buttonText = SC.util.getSessionTypeResource('JoinPanel.{0}PromptButtonText', eventArgs.session.SessionType); 106 107 eventArgs.fieldMap.participantName = { 108 labelText: SC.util.getSessionTypeResource('JoinPanel.{0}ParticipantNameLabelText', eventArgs.session.SessionType), 109 value: '', 110 visible: SC.util.getSessionTypeBooleanResource('JoinPanel.{0}PromptParticipantNameVisible', eventArgs.session.SessionType), 111 }; 112 } 113 }); 114 115 SC.event.addGlobalHandler(SC.event.QueryParticipantJoinedCount, function (eventArgs) { 116 var sessionInfo = window.getSessionInfo(); 117 var session = sessionInfo.Sessions.find(function (s) { return s.SessionID === eventArgs.clientLaunchParameters.s; }); 118 119 if (session !== undefined) 120 eventArgs.participantJoinedCount = session.ActiveConnections.filter(function (ac) { 121 if (eventArgs.clientLaunchParameters.n) 122 return ac.ProcessType == SC.types.ProcessType.Host; 123 124 return ac.ProcessType == SC.types.ProcessType.Guest && ac.ParticipantName == eventArgs.clientLaunchParameters.r; 125 }).length; 126 }); 127 128 SC.event.addGlobalHandler(SC.event.QueryPanels, function (eventArgs) { 129 switch (eventArgs.area) { 130 case 'GuestActionPanel': 131 eventArgs.panelDefinitions.push({ 132 initProc: function (container) { 133 SC.ui.setContents(container, $div({ className: 'Loading' })); 134 }, 135 isVisibleProc: function (pass, previousPassVisibleCount, sessionInfo) { 136 return pass == 1 && sessionInfo == null; 137 } 138 }); 139 140 eventArgs.panelDefinitions.push({ 141 initProc: function (container) { 142 SC.ui.setContents(container, [ 143 $a({ _commandName: 'JoinByTag', _commandArgument: 'DefaultSession', className: 'GoLink Large', _attributeMap: { 'aria-label': SC.res['GuestActionPanel.ButtonDescription'] } }), 144 $h2({ _htmlResource: 'GuestActionPanel.InvitationSession.Heading' }), 145 $p({ _htmlResource: 'GuestActionPanel.InvitationSession.Message' }), 146 ]); 147 }, 148 isVisibleProc: function (pass, previousPassVisibleCount, sessionInfo) { 149 return pass == 3 && 150 previousPassVisibleCount == 0 && 151 sessionInfo != null && 152 sessionInfo.Sessions.find(function (s) { return s.SessionID == window.getTaggedSessionInfo('DefaultSession').SessionID; }); 153 } 154 });
155 156 eventArgs.panelDefinitions.push({ 157 initProc: function (container) { 158 SC.ui.setContents(container, [ 159 $h2({ _htmlResource: 'GuestActionPanel.CodeSession.Heading' }), 160 $p({ _htmlResource: 'GuestActionPanel.CodeSession.Message' }), 161 $p({ className: 'GuestActionBar' }, [ 162 SC.ui.createSearchTextBox({ _commandName: 'JoinByTag', _commandArgument: 'DefaultCode', value: window.getTaggedSessionInfo('DefaultCode').Code || '' }, function (eventArgs) { 163 var sessionCode = SC.util.getTrimmedOrNull(SC.event.getElement(eventArgs).value); 164 window.setTaggedSessionInfo('DefaultCode', { Code: sessionCode }); 165 }), 166 $a({ _commandName: 'JoinByTag', _commandArgument: 'DefaultCode', className: 'GoLink Medium', _attributeMap: { 'aria-label': SC.res['GuestActionPanel.ButtonDescription'] } }), 167 ]), 168 ]); 169 }, 170 isVisibleProc: function (pass, previousPassVisibleCount, sessionInfo) { 171 return pass == 5 && previousPassVisibleCount == 0 && sessionInfo != null && sessionInfo.DoNonPublicCodeSessionsExist; 172 }, 173 refreshProc: function (container, sessionInfo, wasMadeVisible) { 174 var taggedSessionInfo = window.getTaggedSessionInfo('DefaultCode'); 175 176 SC.ui.setDisabled( 177 SC.ui.findDescendentByTag(container, 'A'), 178 !sessionInfo.Sessions.find(function (s) { return taggedSessionInfo.Code && s.Code.toLowerCase() == taggedSessionInfo.Code.toLowerCase(); }) 179 ); 180 181 if (wasMadeVisible) 182 SC.ui.findDescendentByTag(container, 'INPUT').focus(); 183 } 184 }); 185 186 eventArgs.panelDefinitions.push({ 187 initProc: function (container) { 188 SC.ui.setContents(container, [ 189 $h2({ _htmlResource: 'GuestActionPanel.PublicSession.Heading' }), 190 $p({ _htmlResource: 'GuestActionPanel.PublicSession.Message' }), 191 $p({ className: 'GuestActionBar' }, [ 192 $select(), 193 $a({ _commandName: 'JoinBySessionID', className: 'GoLink Medium', _attributeMap: { 'aria-label': SC.res['GuestActionPanel.ButtonDescription'] } }), 194 ]), 195 ]); 196 197 SC.event.addHandler(SC.ui.findDescendentByTag(container, 'SELECT'), 'change', function (eventArgs) { 198 var selectBox = SC.event.getElement(eventArgs); 199 SC.ui.findDescendentByTag(container, 'A')._commandArgument = selectBox.options[selectBox.selectedIndex].value; 200 }); 201 }, 202 isVisibleProc: function (pass, previousPassVisibleCount, sessionInfo) { 203 return pass == 5 && previousPassVisibleCount == 0 && sessionInfo != null && sessionInfo.Sessions.filter(function (s) { return s.IsPublic; }).length > 0; 204 }, 205 refreshProc: function (container, sessionInfo, wasMadeVisible) { 206 var selectBox = SC.ui.findDescendentByTag(container, 'SELECT'); 207 var link = SC.ui.findDescendentByTag(container, 'A'); 208 209 SC.ui.setContents(selectBox, 210 sessionInfo.Sessions.filter(function (s) { return s.IsPublic; }).map(function (s) { 211 return $option({ value: s.SessionID }, s.Name); 212 }) 213 ); 214 215 var optionIndex = Array.prototype.findIndex.call(selectBox.options, function (o) { return o.value == link._commandArgument; }); 216 217 if (optionIndex != -1) 218 selectBox.selectedIndex = optionIndex; 219 else 220 link._commandArgument = selectBox.options[selectBox.selectedIndex].value; 221 } 222 }); 223 224 eventArgs.panelDefinitions.push({ 225 initProc: function (container) { 226 SC.ui.setContents(container, [ 227 $h2({ _htmlResource: 'GuestActionPanel.NoAvailableSessions.Heading' }), 228 $p({ _htmlResource: 'GuestActionPanel.NoAvailableSessions.Message' }), 229 ]); 230 }, 231 isVisibleProc: function (pass, previousPassVisibleCount, sessionInfo) { 232 return pass == 8 && previousPassVisibleCount == 0; 233 } 234 }); 235 236 break; 237 } 238 }); 239 240 SC.event.addGlobalHandler(SC.event.QueryLiveData, function (eventArgs) { 241 var getTaggedValuesFunc = function (propertyName) { 242 return Object.keys(window._taggedSessionInfos) 243 .map(function (key) { return window._taggedSessionInfos[key]; }) 244 .filter(function (_) { return _[propertyName]; }) 245 .map(function (_) { return _[propertyName]; }); 246 } 247
248 eventArgs.requestInfoMap['GuestSessionInfo'] = { 249 sessionCodes: getTaggedValuesFunc('Code'), 250 sessionIDs: getTaggedValuesFunc('SessionID'), 251 }; 252 }); 253 254 SC.event.addGlobalHandler(SC.event.PreRender, function () { 255 window._taggedSessionInfos = {}; 256 257 SC.css.ensureClass(document.documentElement, 'ShowMenu', false); 258 259 var queryStringMap = SC.util.parseQueryString(window.location.search); 260 window.setTaggedSessionInfo('DefaultCode', { Code: queryStringMap.Code }); 261 window.setTaggedSessionInfo('DefaultSession', { SessionID: queryStringMap.Session, HostAccessToken: queryStringMap.HostAccessToken }); 262 263 var welcomePanel = $('.WelcomePanel'); 264 var actionPanel = $('.ActionPanel'); 265 266 SC.ui.setVisible(welcomePanel, SC.util.getBooleanResource('GuestWelcomePanel.Visible')); 267 268 SC.ui.setContents(welcomePanel, [ 269 $h2({ _htmlResource: 'GuestWelcomePanel.Heading' }), 270 $p({ _htmlResource: 'GuestWelcomePanel.Message' }), 271 ]); 272 273 SC.panellist.queryAndInitializePanels(actionPanel); 274 SC.panellist.refreshPanels(actionPanel, null); 275 }); 276 277 SC.event.addGlobalHandler(SC.event.LiveDataRefreshed, function () { 278 SC.panellist.refreshPanels($('.ActionPanel'), window.getSessionInfo()); 279 280 if (!window._hasJoinedDefault && !SC.util.isCapable(SC.util.Caps.InternetExplorer, null, { major: 11 })) { 281 SC.command.dispatchExecuteCommand(window.document.body, window.document.body, window.document.body, 'JoinByTag', 'DefaultSession'); 282 window._hasJoinedDefault = true; 283 } 284 }); 285 286 </script>
286 287 288
288<script> 289 290 SC.event.addGlobalHandler(SC.event.QueryCommandButtons, function (eventArgs) { 291 switch (eventArgs.area) { 292 case 'TrayIconPanel': 293 eventArgs.buttonDefinitions.push({ commandName: 'ActionCenter', imageUrl: 'Images/ActionCenter.svg' }); 294 295 if (SC.context.isUserAdministrator) 296 eventArgs.buttonDefinitions.push({ commandName: 'Navigate', commandArgument: 'Administration', imageUrl: 'Images/NavigationAdministration.svg' }); 297 298 eventArgs.buttonDefinitions.push( 299 { commandName: 'Extras', imageUrl: 'Images/Extras.svg' }, 300 { commandName: 'Applications', imageUrl: 'Images/Applications.svg' } 301 ); 302 break; 303 case 'ExtrasNavigationPopoutPanel': 304 eventArgs.buttonDefinitions.push( 305 { commandName: 'NavigateExtensionBrowser' } 306 ); 307 break; 308 case 'ToolsPanel': 309 eventArgs.buttonDefinitions.push( 310 { commandName: 'Extras', imageUrl: 'Images/Extras.svg' }, 311 { commandName: 'Login' } 312 ); 313 break; 314 case 'UserPopoutPanel': 315 eventArgs.buttonDefinitions.push( 316 { commandName: 'NavigateControlPanel' }, 317 { commandName: 'ChangePassword' }, 318 { commandName: 'Logout' } 319 ); 320 break; 321 case 'UserHelpPopoutPanel': 322 if (SC.context.pageType !== 'GuestPage' && SC.context.pageType != 'LoginPage') { 323 eventArgs.buttonDefinitions.push({ commandName: 'GiveFeedback' }); 324 325 for (var i = 1; ; i++) { 326 var resourceValue = SC.res['HelpPanel.Link' + i + '.Text']; 327 328 if (resourceValue === undefined || resourceValue === '') 329 break; 330 331 var url = SC.util.sanitizeUrl(SC.res['HelpPanel.Link' + i + '.Url']); 332 eventArgs.buttonDefinitions.push({ commandName: 'NavigateHelpLink', commandArgument: url, text: resourceValue, title: url }); 333 } 334 } 335 break; 336 } 337 }); 338 339 SC.event.addGlobalHandler(SC.event.QueryCommandButtonState, function (eventArgs) { 340 switch (eventArgs.commandName) { 341 case 'User': 342 case 'ActionCenter': 343 eventArgs.isVisible = SC.context.isUserAuthenticated; 344 break; 345 case 'Login': 346 eventArgs.isVisible = SC.context.pageType != 'SetupWizardPage' && !SC.context.isUserAuthenticated && !SC.util.isCapable(SC.util.Caps.InternetExplorer, null, { major: 12 }); // Login page doesn't support IE 347 break; 348 case 'NavigateControlPanel': 349 eventArgs.isVisible = !!SC.context.controlPanelUrl; 350 break; 351 case 'ChangePassword': 352 eventArgs.isVisible = SC.context.canChangePassword; 353 break; 354 case 'Extras': 355 eventArgs.isVisible = SC.popout.computePopoutCommandsVisible(eventArgs, ['', 'Navigation']); 356 break; 357 case 'Applications': 358 case 'Help': 359 eventArgs.isVisible = SC.popout.computePopoutCommandsVisible(eventArgs); 360 break; 361 case 'NavigateExtensionBrowser': 362 eventArgs.isVisible = SC.context.isUserAdministrator; 363 break; 364 } 365 }); 366 367 SC.event.addGlobalHandler(SC.event.ExecuteCommand, function (eventArgs) { 368 switch (eventArgs.commandName) { 369 case 'Extras': 370 SC.popout.showPanelFromCommand(eventArgs, null, { subAreas: ['', 'Navigation'] }); 371 break; 372 case 'Applications': 373 SC.popout.showPanelFromCommand(eventArgs); 374 break; 375 case 'ActionCenter': 376 SC.popout.showPanelFromCommand(eventArgs, null, { 377 buildProc: function (popoutPanel) { 378 var actionCenterInfo = SC.livedata.getResponseInfo(SC.livedata.ActionCenterInfo); 379 380 SC.ui.setContents(popoutPanel, $div({ className: 'ActionCenterPanel' }, [ 381 $h2({ _textResource: 'ActionCenterPanel.Text' }), 382 $ul({ className: 'List', _visible: SC.util.any(actionCenterInfo.ActionItems) }, 383 (actionCenterInfo.ActionItems || []) 384 .map(function (it) { 385 var parsedEventData = SC.util.parseEventData(it.Data); 386 387 return $li({ 388 _eventHandlerMap: { 389 click: function () { 390 window.location.href = SC.nav.getHostUrl({ 391 sessionType: it.SessionType, 392 sessionID: it.SessionID, 393 tabName: SC.nav.getHostTabName(it.EventType), 394 tabContext: it.EventID 395 });
396 }, 397 } 398 }, [ 399 $img({ src: 'Images/Notification' + SC.util.getEnumValueName(SC.types.SessionEventType, it.EventType) + '.svg' }), 400 $h3({ className: 'Type' }, SC.res['SessionEvent.' + SC.util.getEnumValueName(SC.types.SessionEventType, it.EventType) + '.Title']), 401 $p({ className: 'Name', title: it.Name }, it.Name), 402 $p({ className: 'DataContent', title: parsedEventData.content }, parsedEventData.content), 403 $p({ className: 'Time' }, SC.util.formatDateTime(it.Time, { includeRelativeDate: true })), 404 ]) 405 }) 406 ), 407 $div({ className: 'EmptyPanel', _visible: !SC.util.any(actionCenterInfo.ActionItems) }, [ 408 $p($img({ src: 'images/EmptyActionCenter.svg' })), 409 $h4({ _textResource: 'ActionCenterPanel.EmptyHeader' }), 410 $p({ _textResource: 'ActionCenterPanel.EmptyText' }), 411 ]), 412 ])); 413 }, 414 }); 415 break; 416 case 'Login': 417 SC.util.sendToLogin(SC.types.LoginReason.None, false); 418 break; 419 case 'Logout': 420 SC.util.sendToLogin(SC.types.LoginReason.Logout, false); 421 break; 422 case 'User': 423 SC.popout.showPanelFromCommand(eventArgs, null, { subAreas: ['Help', ''] }); 424 break; 425 case 'NavigateControlPanel': 426 window.open(SC.util.sanitizeUrl(SC.context.controlPanelUrl)); 427 break; 428 case 'ChangePassword': 429 var params = {}; 430 params[SC.context.loginUserNameParameterName] = eventArgs.commandArgument; 431 window.location.href = SC.context.changePasswordPageUrl + SC.util.getQueryString(params); 432 break; 433 case 'NavigateHelpLink': 434 window.open(eventArgs.commandArgument); 435 break; 436 case 'ToggleMenu': 437 SC.css.toggleClass(document.documentElement, 'ShowMenu'); 438 break; 439 case 'GiveFeedback': 440 SC.dialog.showModalButtonDialog( 441 'GiveFeedback', 442 SC.res['Command.GiveFeedback.Text'], 443 SC.res['Command.GiveFeedback.ButtonText'], 444 'Default', 445 function (container) { 446 SC.ui.setContents(container, [ 447 $div({ _textResource: 'GiveFeedbackPanel.ReviewLabelText' }), 448 $div({ className: 'RatingSelectionPanel' }, 449 ['Good', 'Neutral', 'Bad'].map(function (rating) { 450 return $span( 451 $label({ className: rating }, [ 452 $input({ type: 'radio', name: 'rating', value: rating.toLowerCase() }), 453 $div({ className: 'RadioImage' }), 454 $span({ _textResource: 'GiveFeedbackPanel.' + rating + 'RatingLabelText' }), 455 ]) 456 ); 457 }) 458 ), 459 $div([ 460 $label({ _textResource: 'GiveFeedbackPanel.EmailLabelText' }, [ 461 $input({ type: 'email', id: 'email' }), 462 ]), 463 ]), 464 $div([ 465 $label({ _textResource: 'GiveFeedbackPanel.CommentsLabelText' }, [ 466 SC.ui.createTextBox({ id: 'commentsBox' }, true), 467 ]), 468 ]), 469 ]); 470 }, 471 function (eventArgs) { 472 SC.service.SendFeedback( 473 Array.prototype.map.call(document.querySelectorAll('input[name=rating]:checked'), function (e) { return e.value; })[0], 474 $('commentsBox').value, 475 $('email').value, 476 function () { 477 SC.dialog.showModalMessageBox( 478 SC.res['GiveFeedbackPanel.SuccessHeading'], 479 SC.res['GiveFeedbackPanel.SuccessMessage'] 480 ); 481 } 482 ); 483 } 484 ); 485 break; 486 case 'ManageToolbox': 487 SC.toolbox.showToolboxDialog(eventArgs.commandName, eventArgs.commandArgument); 488 break; 489 case 'Navigate': 490 window.location.href = eventArgs.commandArgument; 491 break; 492 case 'NavigateExtensionBrowser': 493 window.location.href = SC.context.administrationPageUrl + '?Tab=Extensions#ShowExtensionBrowser'; 494 break; 495 } 496 }); 497 498 SC.event.addGlobalHandler(SC.event.QueryNavigationLinks, function (eventArgs) { 499 Array.prototype.push.apply(eventArgs.navigationLinks, SC.context.sessionTypeInfos.map(function (_) { 500 return { 501 href: SC.context.scriptBaseUrl + SC.context.hostPageUrl + '#' + SC.util.getEnumValueName(SC.types.SessionType, _.sessionType), 502 text: SC.util.getSessionTypeResource('NavigationPanel.{0}LinkText', _.sessionType), 503 imageUrl: SC.util.formatString('Images/Navigation{0}.svg', SC.util.getEnumValueName(SC.types.SessionType, _.sessionType)), 504 sessionType: _.sessionType, 505 } 506 })); 507 }); 508 509 SC.event.addGlobalHandler(SC.event.QueryLiveData, function (eventArgs) {
510 if (SC.context.isUserAuthenticated) 511 SC.livedata.setRequestInfo(eventArgs, SC.livedata.ActionCenterInfo); 512 }); 513 514 SC.event.addGlobalHandler(SC.event.LiveDataRefreshed, function () { 515 SC.css.ensureClass($('.NavigationPanel .TrayIconPanel .ActionCenter'), 'NonEmpty', SC.util.any(SC.livedata.getResponseInfo(SC.livedata.ActionCenterInfo).ActionItems)); 516 }); 517 518 SC.event.addGlobalHandler('keydown', function (eventArgs) { 519 if (SC.event.doesKeyEventIndicateTextEntryOrArrowKeyNavigation(eventArgs) && (!document.activeElement || SC.ui.isDefinitelyNotTextEntryElement(document.activeElement))) { 520 var arrowKeyInfo = SC.event.getArrowKeyInfo(eventArgs); 521 522 if (arrowKeyInfo && document.activeElement && SC.css.containsClass(document.activeElement, 'ArrowNavigation')) { 523 eventArgs.preventDefault(); 524 SC.ui.setHiddenFocusAndClearOthers(); 525 526 var targetPreviousOrNext = arrowKeyInfo.isLeft || arrowKeyInfo.isUp; 527 528 SC.event.dispatchEvent(document.activeElement, SC.event.KeyNavigation, { 529 currentActiveElement: document.activeElement, 530 currentSelectedElement: SC.ui.findDescendantBreadthFirst(document.activeElement, function (_) { return SC.ui.isSelected(_); }, !targetPreviousOrNext), 531 targetPreviousOrNext: targetPreviousOrNext, 532 arrowKeyInfo: arrowKeyInfo, 533 hasShift: eventArgs.shiftKey, 534 }); 535 } else { 536 var queryTextEntryElementArgs = SC.event.dispatchGlobalEvent(SC.event.QueryTextEntryElement, { 537 textEntryElement: null, 538 }); 539 540 if (queryTextEntryElementArgs.textEntryElement) { 541 if (!SC.event.doesKeyEventIndicateTextEntryNavigation(eventArgs)) 542 queryTextEntryElementArgs.textEntryElement.value = ''; 543 544 queryTextEntryElementArgs.textEntryElement.focus(); 545 } 546 } 547 } 548 }); 549 550 SC.event.addGlobalHandler(SC.event.KeyNavigation, function (eventArgs) { 551 // default handling for key navigation 552 var elementToNavigateTo; 553 554 if (eventArgs.currentSelectedElement) { 555 elementToNavigateTo = SC.ui.getPreviousOrNextElementSibling(eventArgs.currentSelectedElement, eventArgs.targetPreviousOrNext) || eventArgs.currentSelectedElement; 556 557 while (SC.util.isNullOrEmpty(elementToNavigateTo._commandName) && SC.ui.getPreviousOrNextElementSibling(elementToNavigateTo, eventArgs.targetPreviousOrNext)) { 558 elementToNavigateTo = SC.ui.getPreviousOrNextElementSibling(elementToNavigateTo, eventArgs.targetPreviousOrNext); 559 } 560 } else { 561 elementToNavigateTo = SC.ui.findDescendantBreadthFirst(eventArgs.currentActiveElement, function (_) { return !SC.util.isNullOrEmpty(_._commandName); }); // this can still be empty 562 } 563 564 SC.util.tryNavigateToElementUsingCommand(elementToNavigateTo, eventArgs.targetPreviousOrNext, eventArgs.hasShift); 565 }); 566 567 SC.event.addGlobalHandler(SC.event.PreRender, function () { 568 var resetInactivityProc = function () { 569 window._lastNotifyActivityTime = new Date().getTime(); 570 571 if (SC.context.isUserAuthenticated && SC.context.loginAfterInactivityMilliseconds != 0) { 572 if (window._loginAfterInactivityTimer) 573 window.clearTimeout(window._loginAfterInactivityTimer); 574 575 window._loginAfterInactivityTimer = window.setTimeout(function () { SC.util.sendToLogin(SC.types.LoginReason.IdleTooLong, true); }, Math.min(SC.context.loginAfterInactivityMilliseconds, 2147483647)); //interval stored as 32-bit signed int 576 } 577 }; 578 579 SC.context.prehandleServiceFailureProc = function (error) { 580 if (error.statusCode != 403) 581 return false; 582 583 SC.util.sendToLogin(SC.types.LoginReason.PermissionsInsufficient, true); 584 } 585 586 SC.context.unhandledServiceFailureProc = function (error) { 587 SC.dialog.showModalErrorBox(error.detail || error.message); 588 } 589 590 resetInactivityProc(); 591 592 SC.ui.initializeWindowActivityTracking(function () { 593 if (new Date().getTime() - window._lastNotifyActivityTime > SC.context.notifyActivityFrequencyMilliseconds) { 594 resetInactivityProc(); 595 SC.service.NotifyActivity(); 596 } 597 }); 598 599 var parameterlessUrl = SC.util.getParameterlessUrl(window.location.href); 600 var createNavigationLinkFunc = function (_) { 601 return $div({ _commandName: 'Navigate', _commandArgument: _.href, _selected: _.href == parameterlessUrl }, [ 602 $img({ src: _.imageUrl }), 603 $span(_.text), 604 ]); 605 }; 606 607 SC.ui.setContents($('.HeaderPanel'), [ 608 $a({ href: SC.context.guestPageUrl, className: 'LogoIconLink' }), 609 $a({ _commandName: 'ToggleMenu', className: 'ShowMenuButton' }, ''), 610 $h1({ className: 'LogoPanel' }), 611 $div({ className: 'CommandPanel' }), 612 ]); 613 614 SC.command.queryAndAddCommandButtons($('.HeaderPanel .CommandPanel'), 'ToolsPanel'); 615 SC.command.updateCommandButtonsState($('.HeaderPanel .CommandPanel')); 616 617 var queryNavigationLinksEventArgs = SC.event.dispatchGlobalEvent(SC.event.QueryNavigationLinks, { navigationLinks: [] }) 618 619 SC.ui.setContents($('.NavigationPanel'), [ 620 queryNavigationLinksEventArgs.navigationLinks.map(createNavigationLinkFunc), 621 $div({ className: 'FlexSpacer' }), 622 $div({ className: 'TrayPanelContainer' }, [ 623 $div({ className: 'TrayIconPanel' }),
624 $div({ className: 'UserMenuButton', _commandName: 'User' }, 625 $span(SC.context.userDisplayName == null ? '' : SC.context.userDisplayName.toUpperCase()[0]), 626 $span(SC.context.userDisplayName) 627 ), 628 ]), 629 ]); 630 631 SC.command.queryAndAddCommandButtons($('.NavigationPanel .TrayIconPanel'), 'TrayIconPanel', null, { descriptionRenderStyle: SC.command.DescriptionRenderStyle.Tooltip }); 632 SC.command.updateCommandButtonsState($('.NavigationPanel .TrayIconPanel')); 633 634 var setSelectedFunc = function () { 635 $$('.NavigationPanel > div') 636 .filter(function (_) { return !SC.util.isNullOrEmpty(_._commandArgument); }) 637 .forEach(function (_) { SC.ui.setSelected(_, window.location.href.startsWith(_._commandArgument)); }); 638 }; 639 640 SC.event.addHandler(window, 'hashchange', setSelectedFunc); 641 642 setSelectedFunc(); 643 644 SC.livedata.startLoop(); 645 }); 646 647 var isTouchEnabled = (typeof document.documentElement.ontouchstart !== 'undefined'); 648 SC.css.ensureClass(document.documentElement, 'TouchEnabled', isTouchEnabled); 649 SC.css.ensureClass(document.documentElement, 'TouchDisabled', !isTouchEnabled); 650 SC.css.ensureClass(document.documentElement, 'UserAuthenticated', SC.context.isUserAuthenticated); 651 SC.css.ensureClass(document.documentElement, 'NativeClient', SC.util.isCapable(SC.util.Caps.NativeClient)); 652 SC.css.ensureClass(document.documentElement, 'HasMasterPanel', $('.MasterPanel')); 653 SC.css.ensureClass(document.documentElement, 'LogoImageVisible', SC.util.getBooleanResource('LogoPanel.ImageVisible')); 654 SC.css.ensureClass(document.documentElement, 'LogoIconVisible', SC.util.getBooleanResource('LogoPanel.IconVisible')); 655 SC.css.ensureClass(document.documentElement, 'LogoHeadingVisible', SC.util.getBooleanResource('LogoPanel.HeadingVisible')); 656 SC.css.ensureClass(document.documentElement, 'AnimationReduced', SC.util.getBooleanResource('Page.AnimationReduced')); 657 SC.css.ensureClass(document.documentElement, SC.context.pageType, true); 658 659 SC.extension.initializeExtensions(); 660 SC.event.dispatchGlobalEvent(SC.event.PreRender); 661 SC.util.recordLifeCycleEvent(SC.event.PreRender); 662 SC.ui.setVisible(document.body, true); 663 SC.event.dispatchGlobalEvent(SC.event.PostRender); 664 SC.util.recordLifeCycleEvent(SC.event.PostRender); 665 666 $$('*[tabIndex]').forEach(function (_) { 667 SC.event.addHandler(_, 'mousedown', function () { 668 SC.ui.setHiddenFocusAndClearOthers(_); 669 }); 670 }); 671 672 if (SC.context.focusedControlID) 673 $(SC.context.focusedControlID).focus(); 674 else if (document.activeElement == document.body) { 675 $('.NavigationPanel').focus(); 676 SC.ui.setHiddenFocusAndClearOthers($('.NavigationPanel')); 677 } 678 679 </script>
679 680</body> 681</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.