polyu.ap.panopto.com
Open in
urlscan Pro
52.77.30.243
Public Scan
Submitted URL: http://polyu.ap.panopto.com/
Effective URL: https://polyu.ap.panopto.com/Panopto/Pages/Auth/Login.aspx?ReturnUrl=https%3A%2F%2Fpolyu.ap.panopto.com%2FPanopto%2FPages%2FH...
Submission: On October 27 via api from US — Scanned from SG
Effective URL: https://polyu.ap.panopto.com/Panopto/Pages/Auth/Login.aspx?ReturnUrl=https%3A%2F%2Fpolyu.ap.panopto.com%2FPanopto%2FPages%2FH...
Submission: On October 27 via api from US — Scanned from SG
Form analysis
1 forms found in the DOMPOST ./Login.aspx?ReturnUrl=https%3a%2f%2fpolyu.ap.panopto.com%2fPanopto%2fPages%2fHome.aspx
<form method="post" action="./Login.aspx?ReturnUrl=https%3a%2f%2fpolyu.ap.panopto.com%2fPanopto%2fPages%2fHome.aspx" id="rootForm">
<div class="aspNetHidden">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="">
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="">
<input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUJMjY0OTY4Njc2DxYCHhNWYWxpZGF0ZVJlcXVlc3RNb2RlAgEWAmYPZBYCAgEPZBYEAgoPDxYCHgdWaXNpYmxlZ2QWAmYPFgIfAWgWEGYPFgIeCWlubmVyaHRtbAVC5aaC5p6c5L2g5bey57uP5a6J6KOF5LqG5b2V5YOP5py677yM5L2g5Y+v5Lul5LuO6L+Z6YeM5ZCv5Yqo5a6D44CCZAIBDxYCHgRocmVmBUdodHRwczovL3BvbHl1LmFwLnBhbm9wdG8uY29tL1Bhbm9wdG8vUGFnZXMvUmVjb3JkZXIvTGF1bmNoUmVjb3JkZXIuYXNweGQCAg8WAh8CBWPlpoLmnpwgUGFub3B0b+ayoeacieWQr+WKqO+8jOivt+ehruS/neaCqOS4i+i9veW5tuWuieijheS6huS4i+mdouacgOaWsOeJiOacrOeahFBhbm9wdG/lvZXlg4/mnLrjgIJkAgMPFgIfAwV2aHR0cHM6Ly9wb2x5dS5hcC5wYW5vcHRvLmNvbS9QYW5vcHRvL0NhY2hlLzE0LjYuMC4wMDAxNC9Tb2Z0d2FyZS9QYW5vcHRvUmVjb3JkZXIuZXhlP2FyY2g9WDg2JmFtcDt1c2VDdXN0b21CaW5hcnk9VHJ1ZWQCBA8WAh8DBXhodHRwczovL3BvbHl1LmFwLnBhbm9wdG8uY29tL1Bhbm9wdG8vQ2FjaGUvMTQuNi4wLjAwMDE0L1NvZnR3YXJlL1Bhbm9wdG9SZWNvcmRlci5leGU/YXJjaD1BbWQ2NCZhbXA7dXNlQ3VzdG9tQmluYXJ5PVRydWVkAgUPFgIfAwV6aHR0cHM6Ly9wb2x5dS5hcC5wYW5vcHRvLmNvbS9QYW5vcHRvL0NhY2hlLzE0LjYuMC4wMDAxNC9Tb2Z0d2FyZS9QYW5vcHRvJTIwUmVjb3JkZXIucGtnP2FyY2g9Tm9uZSZhbXA7dXNlQ3VzdG9tQmluYXJ5PVRydWVkAgYPZBYGZg8WAh8DBXxodHRwczovL3BvbHl1LmFwLnBhbm9wdG8uY29tL1Bhbm9wdG8vQ2FjaGUvMTQuNi4wLjAwMDE0L1NvZnR3YXJlL1Bhbm9wdG9SZW1vdGVSZWNvcmRlci5leGU/YXJjaD1YODYmYW1wO3VzZUN1c3RvbUJpbmFyeT1UcnVlZAIBDxYCHwMFfmh0dHBzOi8vcG9seXUuYXAucGFub3B0by5jb20vUGFub3B0by9DYWNoZS8xNC42LjAuMDAwMTQvU29mdHdhcmUvUGFub3B0b1JlbW90ZVJlY29yZGVyLmV4ZT9hcmNoPUFtZDY0JmFtcDt1c2VDdXN0b21CaW5hcnk9VHJ1ZWQCAg8WAh8CBZIBPGEgaHJlZj0nbWFpbHRvOmh0dHBzOi8vd3d3LnBvbHl1LmVkdS5oay9pdHNlcnZpY2VkZXNrJz7ogZTns7vkvaDnmoTns7vnu5/nrqHnkIblkZg8L2E+IOS7peWtpuS5oOabtOWkmuWFs+S6juWmguS9leS9v+eUqFBhbm9wdG/nibnngrnnmoTmlrnms5XjgIJkAgcPFgIfAwWEAWh0dHBzOi8vcG9seXUuYXAucGFub3B0by5jb20vUGFub3B0by9DYWNoZS8xNC42LjAuMDAwMTQvU29mdHdhcmUvUGFub3B0b1JlY29yZGVyTm9JbnN0YWxsYXRpb24uemlwP2FyY2g9WDg2JmFtcDt1c2VDdXN0b21CaW5hcnk9VHJ1ZWQCCw9kFgJmD2QWAmYPZBYCAgEPZBYCZg9kFgJmD2QWBgIFD2QWBAIBD2QWAgIBD2QWBAIBD2QWAgIBDxAPFgIeC18hRGF0YUJvdW5kZxYCHgphcmlhLWxhYmVsBQznmbvlvZXph4fnlKgQFQQHUGFub3B0bwpCbGFja2JvYXJkLVBPTFlVIFBvcnRhbCAoRm9yIG5vbi1MTVMsIFJlc2VhcmNoIGFuZCBtb3JlKRBCbGFja2JvYXJkIFVsdHJhFQQPcGFub3B0b2ludGVybmFsCmJsYWNrYm9hcmQEbzM2NQ9CbGFja2JvYXJkVWx0cmEUKwMEZ2dnZ2RkAgMPZBYCZg9kFgYCAQ8PFgIfAWhkFgZmDw9kFgQeC3BsYWNlaG9sZGVyBQznlKjmiLflkI3vvJofBQUM55So5oi35ZCN77yaZAIBDw9kFgQfBgUG5a+G56CBHwUFBuWvhueggWQCAg8QDxYCHgdDaGVja2VkaGQWAh4FY2xhc3MFDm1hdGVyaWFsLWljb25zZGQCAw8PFgIfAWhkFgICAQ8PZBYEHwYFDOeUteWtkOmCrueusR8FBQznlKjmiLflkI3vvJpkAgUPDxYCHwFnZBYCAgEPD2QWAh4Hb25jbGljawWbAXdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggKz0gKCh3aW5kb3cubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoJz8nKSA9PSAtMSkgPyAnPycgOiAnJicpICsgJ2luc3RhbmNlPWJsYWNrYm9hcmQnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ZAIDD2QWAgIBD2QWAgIBD2QWAgIBDw9kFgQfBgUM55So5oi35ZCN77yaHwUFDOeUqOaIt+WQje+8mmQCBw8WAh8BaBYEAgEPZBYIZg8PFgIeBFRleHRkZGQCAg9kFgJmDw8WAh8KBQdQYW5vcHRvZGQCAw8WAh4Fc3R5bGUFDWRpc3BsYXk6bm9uZTsWAmYPDxYCHwpkZGQCBA9kFgJmDw8WAh8KBQnop4LnnIvogIVkZAIFD2QWAgICD2QWCAIBDw9kFgQfBgUM5b2T5YmN5a+G56CBHwUFDOW9k+WJjeWvhueggWQCAw8PZBYEHwYFCeaWsOWvhueggR8FBQnmlrDlr4bnoIFkAgUPD2QWBB8GBQznoa7orqTlr4bnoIEfBQUM56Gu6K6k5a+G56CBZAIHD2QWBAIBDw9kFgQfBgUP5a6J5YWo5oCn6Zeu6aKYHwUFD+WuieWFqOaAp+mXrumimGQCAw8PZBYEHwYFD+WuieWFqOaAp+WbnuetlB8FBQ/lronlhajmgKflm57nrZRkAgkPZBYCAgEPFgIfAWhkZM6yg5nmStx0y9L7DdVVfi2bgoUU0UMAqYNeQg/wiFev">
</div>
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['rootForm'];
if (!theForm) {
theForm = document.rootForm;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<script src="/Panopto/WebResource.axd?d=nF4vyWFqHBntNr9T_UBEcreHuDD0CLOC1IkXdYuDQHgLL-8yi6S2x19GNdDZlfx3vIE2kXm3FWa7Y1J48khWL_igPiH7CIB8sW_JxBPzVKw1&t=637814653746327080" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
var __cultureInfo = {
"name": "zh-SG",
"numberFormat": {
"CurrencyDecimalDigits": 2,
"CurrencyDecimalSeparator": ".",
"IsReadOnly": true,
"CurrencyGroupSizes": [3],
"NumberGroupSizes": [3],
"PercentGroupSizes": [3],
"CurrencyGroupSeparator": ",",
"CurrencySymbol": "$",
"NaNSymbol": "NaN",
"CurrencyNegativePattern": 1,
"NumberNegativePattern": 1,
"PercentPositivePattern": 1,
"PercentNegativePattern": 1,
"NegativeInfinitySymbol": "-∞",
"NegativeSign": "-",
"NumberDecimalDigits": 2,
"NumberDecimalSeparator": ".",
"NumberGroupSeparator": ",",
"CurrencyPositivePattern": 0,
"PositiveInfinitySymbol": "∞",
"PositiveSign": "+",
"PercentDecimalDigits": 2,
"PercentDecimalSeparator": ".",
"PercentGroupSeparator": ",",
"PercentSymbol": "%",
"PerMilleSymbol": "‰",
"NativeDigits": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"],
"DigitSubstitution": 1
},
"dateTimeFormat": {
"AMDesignator": "上午",
"Calendar": {
"MinSupportedDateTime": "\/Date(-62135596800000)\/",
"MaxSupportedDateTime": "\/Date(253402300799999)\/",
"AlgorithmType": 1,
"CalendarType": 1,
"Eras": [1],
"TwoDigitYearMax": 2029,
"IsReadOnly": true
},
"DateSeparator": "/",
"FirstDayOfWeek": 0,
"CalendarWeekRule": 0,
"FullDateTimePattern": "yyyy\u0027年\u0027M\u0027月\u0027d\u0027日\u0027 tt h:mm:ss",
"LongDatePattern": "yyyy\u0027年\u0027M\u0027月\u0027d\u0027日\u0027",
"LongTimePattern": "tt h:mm:ss",
"MonthDayPattern": "M月d日",
"PMDesignator": "下午",
"RFC1123Pattern": "ddd, dd MMM yyyy HH\u0027:\u0027mm\u0027:\u0027ss \u0027GMT\u0027",
"ShortDatePattern": "d/M/yyyy",
"ShortTimePattern": "tt h:mm",
"SortableDateTimePattern": "yyyy\u0027-\u0027MM\u0027-\u0027dd\u0027T\u0027HH\u0027:\u0027mm\u0027:\u0027ss",
"TimeSeparator": ":",
"UniversalSortableDateTimePattern": "yyyy\u0027-\u0027MM\u0027-\u0027dd HH\u0027:\u0027mm\u0027:\u0027ss\u0027Z\u0027",
"YearMonthPattern": "yyyy\u0027年\u0027M\u0027月\u0027",
"AbbreviatedDayNames": ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
"ShortestDayNames": ["日", "一", "二", "三", "四", "五", "六"],
"DayNames": ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
"AbbreviatedMonthNames": ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月", ""],
"MonthNames": ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月", ""],
"IsReadOnly": true,
"NativeCalendarName": "西历",
"AbbreviatedMonthGenitiveNames": ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月", ""],
"MonthGenitiveNames": ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月", ""]
},
"eras": [1, "公元", null, 0]
}; //]]>
</script>
<script src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/MicrosoftAjax/MicrosoftAjax.js" type="text/javascript"></script>
<script src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/MicrosoftAjax/MicrosoftAjaxWebForms.js" type="text/javascript"></script>
<script src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/MicrosoftAjax/start.js" type="text/javascript"></script>
<script src="/Panopto/ScriptResource.axd?d=jX53go6YI1VpcRfxcX57lK3N7DvG6q8WtozQ34oYVm9fKLUi01ucm7xc826wXqX6B04xKD-ciiVJZ4oP739fteAeRyaiPQx8CB3eS2xUHFI9CjXT1emKzA10o5Ng4qughfdoheAGAzX9_qNzjR_92TFLRF5Xv5IfTAn0g5MyiMA1&t=fffffffffe916c04"
type="text/javascript"></script>
<script src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/Panopto/Data.js" type="text/javascript"></script>
<script src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/Panopto/Events.js" type="text/javascript"></script>
<script src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/Panopto/Util.js" type="text/javascript"></script>
<script src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/Panopto/RenderBranding.js" type="text/javascript"></script>
<script src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/Panopto/Application.js" type="text/javascript"></script>
<script src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/MicrosoftAjax/extended/ExtendedControls.js" type="text/javascript"></script>
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="D77E32DE">
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION"
value="/wEdAAm6VHsyZi239vR6I/UkVNeU6NcOqBVf9h86JOOauF9Ei6/n6RfadRjx4dgq5eWj6G7yevHnYGGAZlfT9/MxgJNUvp580jUkRTbt+a7NMDIpBmeXzsG14m5oxv7fiA1+wd53xuVLmS8HOCToCglk7kRSzb8YGyRbZKapGF0Zv3R8T5tdCmVm0+4Jm3aJEFU2OuDA22bheorBk8Tv8Ws0uahlebRylXBjrIj6keWNmF++Jg==">
</div>
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/jQuery/jquery-ui.min.js"></script>
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/jQuery/datepicker-localization.min.js"></script>
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/jquery_tag_it/jquery.tag-it.min.js"></script>
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/waveform/waveform.js"></script>
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/tether/tether.min.js"></script>
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/tether-shepherd/shepherd.min.js"></script>
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/Panopto/Bundles/Core.js"></script>
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/Panopto/Bundles/commons.js"></script>
<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ctl00$ScriptManagerControl', 'rootForm', ['tctl00$PageContentPlaceholder$updatePanel', 'PageContentPlaceholder_updatePanel', 'fctl00$PageContentPlaceholder$loginControl$loginUpdatePanel',
'PageContentPlaceholder_loginControl_loginUpdatePanel', 'fctl00$PageContentPlaceholder$loginControl$dropDownPanel', 'PageContentPlaceholder_loginControl_dropDownPanel'
], ['ctl00$ScriptManagerControl', 'ScriptManagerControl', 'ctl00$PageContentPlaceholder$loginControl$providerDropdown', 'providerDropdown'], [], 90, 'ctl00');
//]]>
</script>
<input type="hidden" name="ctl00$ScriptManagerControl" id="ScriptManagerControl">
<script type="text/javascript">
//<![CDATA[
Sys.Application.setServerId("ScriptManagerControl", "ctl00$ScriptManagerControl");
Sys.Application._enableHistoryInScriptManager();
//]]>
</script>
<iframe id="__historyFrame" src="/Panopto/ScriptResource.axd?d=ICPDhtdJh5PHTmT60AyK2rZ2JeeClILnB5UsSKfWuomvZ09HIpTURik0b1xgE93gOO6rV1B1qieuK_6O0vLxxx6XgBdZ_dxpZ5HkEOchQRA1" style="display:none;">
</iframe>
<script type="text/javascript">
// Render branding synchronously with script load to avoid rendering unbranded assets
Panopto.Branding.renderBrandingColors(Panopto.branding.accentColor, Panopto.branding.isAccentColorDefault);
// Enable client-side browser history.
Sys.Application.set_enableHistory(true);
// Load all required scripts.
Sys.require([Sys.components.watermark,
Sys.components.modalPopup,
Sys.components.dataView,
Sys.components.dataContext,
Sys.scripts.WebServices,
Sys.scripts.Templates
]);
Sys.onReady(function() {
// This provides legacy behavior to integrations hosting Panopto within an iframe.
// These integrations rely on this hack to enable them to use the same URL for hosting content
// within the external site and loading the content in a new top-level browsing context.
// We need condition for teamsApp because teams application on mobile devices doesn't use iFrame
// as it is case with desktop devices, so we need to prevent cleaning embedded flags.
if (!PanoptoCore.Browser.inIframe() && !Panopto.teamsApp?.isFromTeams) {
// Remove the embedded mode classes from the page wrapper element (if any)
$("#wrapper").removeClass("embedded embedded-nav mini-embedded");
// Reset our global embed mode flags
Panopto.isEmbedded = false;
Panopto.embeddedModeView = Panopto.Data.EmbeddedView.None;
}
Panopto.Application.defaultInstance.init();
Panopto.Branding.createLogo($("#logoContainer.large-logo"), Panopto.branding.largeLogo,
/*linksEnabled=*/
true);
const cookieConsentBanner = Panopto.CookieConsentBanner(document.getElementById("cookieConsentBannerWrapper"), {
cookieConsentEnabled: Panopto.features.cookieConsentEnabled,
isAuthenticated: Panopto.user.isAuthenticated,
cookieConsentExpirationMinutes: 525600,
cookieConsentDate: Panopto.user.cookieConsentDate,
darkMode: window.location.pathname.indexOf("Capture.aspx") !== -1,
isEmbedded: PanoptoCore.Browser.inIframe() || window.location.pathname.indexOf("/Pages/Mobile/") !== -1,
isLandscape: PanoptoCore.Browser.isLandscape(),
scaleForViewport: false,
resources: Panopto.GlobalResources,
userService: PanoptoTS.API.Rest.ServiceFactory.getUserService(),
onCookieConsentChange: function(granted) {
// Initialize GoogleAnalytics when consent is granted
if (granted) {
Panopto.GoogleAnalytics.initialize();
}
cookieConsentBanner.setProps({
cookieConsentDate: new Date()
});
}
});
PanoptoCore.Browser.attachOrientationChangeListener((isLandscape) => {
cookieConsentBanner.setProps({
isLandscape: isLandscape
});
});
});
// Configure the Public API module using the app root
Panopto.Core.ServiceInterface.baseUrl = '/Panopto';
Panopto.Core.ServiceInterface.uriScheme = Panopto.uriScheme;
</script>
<div id="wrapper" class="no-min-width">
<div class="shepherd-overlay"></div>
<div class="shepherd-overlay-transparent"></div>
<div id="notificationBanner" role="alert" aria-label="Panopto 通知" aria-describedby="notificationMessageText" tabindex="-1" style="display: none">
<div id="notificationBannerContent">
<div id="notificationMessage">
<div id="notificationContainer">
<div id="notificationIcon"></div>
<div id="notificationMessageText"></div>
</div>
</div>
<div id="dismissButtonCell">
<div id="dismissButton" class="material-icons" role="button" aria-label="关闭警告" tabindex="0" style="display: none"> close </div>
</div>
</div>
</div>
<!-- end header -->
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/Panopto/Login.js"></script>
<script type="text/javascript">
$(document).ready(function() {
// Add the "no-min-width" class to avoid the login page being off center in embedded views.
$("#wrapper").addClass("no-min-width");
var bounceUrl = '';
var embedLoginUrl = '';
var queryObject = Panopto.Core.StringHelpers.parseQueryString(location.search.slice(1));
var isFromTeams = 'False' === 'True';
var isEmailLoginFailed = 'False' === 'True';
if (isEmailLoginFailed) {
// Remove the token from the query parameters. This is needed so we don't bounce
// into a loop when the user tries to sign in again.
Panopto.Core.UrlHelpers.removeParams();
}
if (bounceUrl) {
var returnUrlEscaped = '';
if (PanoptoCore.Browser.inIframe()) {
// No bounce back is possible from iFrames. Go to the iFrame login URL instead.
bounceUrl = embedLoginUrl;
}
if (isFromTeams) {
// In Teams, bounceUrl is opened in a popover
var bounceUrlInPopover = Panopto.Core.StringHelpers.setQueryParameters(embedLoginUrl, {
isFromLoginPopover: true,
isFromTeams: true
}, false);
// If from Teams, utilize its SDK to launch a popover window to allow auth requests
Panopto.MicrosoftTeams.initialize(function() {
Panopto.MicrosoftTeams.authentication.authenticate({
url: bounceUrlInPopover,
height: 1000,
width: 800,
successCallback: function(result) {
window.location.href = decodeURIComponent(queryObject.ReturnUrl);
},
failureCallback: function(reason) {
window.location.href = Panopto.Core.StringHelpers.setQueryParameters(decodeURIComponent(queryObject.ReturnUrl), {
preventAutoBounceLogin: true
}, false);
}
});
});
} else {
window.location.href = bounceUrl;
}
} else if (isFromTeams) {
// To disable the loading animation
Panopto.MicrosoftTeams.initialize();
Panopto.MicrosoftTeams.appInitialization.notifySuccess();
}
var handleResize = function() {
// Determine the margin to add to the login controls so that they appear centered vertically with
// respect to the page but also prevent overflowing into the logo with shorter window heights
var margin = Math.max(0,
// 433px is the maximum height of the login control, we need to use that height in all
// cases so the controls don't shift around during the workflow
($(window).height() - 433) / 2 - $("#logoContainer").outerHeight(true));
$(".login-content").css("margin-top", margin + "px");
};
// Center login-control in case if EULA is not displayed
var isEulaFormDisplayed = $(".eula-content").length > 0;
if (!isEulaFormDisplayed) {
$(window).resize(handleResize);
handleResize();
}
if (Panopto.features.enableEmbedApi && PanoptoCore.Browser.inIframe()) {
Panopto.UI.Login.fireIframeLoginShown();
}
});
</script>
<div class="login-wrapper ">
<div id="logoContainer" class="large-logo">
<div class="customer-logo">
<div class="main-logo">
<a id="siteLogo_customerLogoLink" title="所有内容" href="/Panopto/Pages/Sessions/List.aspx" target="_top" aria-label="所有内容" tabindex="0">
<img src="/Panopto/ContentCache/637945386827149952/_branding/c27676a4-be4a-412b-a191-aeb000790818/637945386551754408_largelogo.png" alt="" aria-hidden="true">
</a>
</div>
<div class="cobrand">
<a id="panoptoLogoLink" class="cobrand-link" href="https://www.panopto.com" target="_blank">
<span>由Panopto技术支持</span>
</a>
</div>
</div>
</div>
<div id="PageContentPlaceholder_updatePanel" class="login-content" style="margin-top: 282.5px;">
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/Panopto/Login.js"></script>
<script type="text/javascript">
var Panopto = Panopto || {};
Panopto.Login = Panopto.Login || {};
Panopto.Login.setUpClientHandlers = function() {
// Activate LinkButtons with space bar
$(".login-form .standard-button").not("[href='#']").off("keydown").keydown(function(e) {
if (e.keyCode === Panopto.Core.Key.Space) {
// LinkButtons have javascript to execute post-backs in href, so evaluate it to activate
eval($(this).attr("href"));
}
});
// Focus first input
$(".login-form").find("input,textarea,.standard-button").filter(":visible:first").focus();
};
Panopto.Login.checkStorageAccess = function() {
// Check for and (if necessary) request access to the cookie storage.
Panopto.UI.Login.checkStorageAccessAPI();
};
Panopto.Login.onAnalyticsEvent = function(action, source) {}
Panopto.Login.loadEula = function() {
// Render EULA to approprite div
PanoptoReactComponents.bootstrapReactComponent(PanoptoReactComponents.Control.Markdown.Markdown)(document.getElementById("eulaText"), {
contentToParse: ""
});
// Set needed EULA class to root of login form
$(".login-content").addClass("eula-content");
// Bind change event for "RequireEulaReadConfirmation" checkbox that will enable/disable Accept EULA button
// and set/remote Accept button title based if checkbox is checked or not
$('#requireEulaReadConfirmationCheckbox').change(function() {
var acceptButton = $('#AcceptEulaButton');
var eulaReadConfirmationCheckboxIsChecked = $(this).is(":checked");
// If EulaReadConfirmationCheckbox is checked enable Accept button, otherwise disable.
acceptButton.prop("disabled", !eulaReadConfirmationCheckboxIsChecked);
// If EulaReadConfirmationCheckbox is checked remove title, otherwise set title
acceptButton.attr("title", eulaReadConfirmationCheckboxIsChecked ? "" : "请勾选复选框来明确表示您已阅读 EULA。");
});
// On window resize login form has logic to move form to page center.
// We don't need this for EULA, so we will remove added margin-top (style) and window resize event
$(".login-content").removeAttr("style");
$(window).off("resize");
};
$(document).ready(function() {
// Set the return url for crosspage postbacks.
var returnUrl = $get('PageContentPlaceholder_loginControl_returnUrl');
// Wire up user settings link.
Panopto.Core.UI.Handlers.button($("#accountLink"), function() {
Panopto.Application.defaultInstance.updateState({
modalPage: "UserInfo",
modalHeader: Panopto.GlobalResources.Account,
modalParams: Panopto.Core.StringHelpers.serializeObjectToQueryString({
publicId: '',
isInternal: 'true'
})
});
$("#userMenu").hide();
});
if (!returnUrl.value) {
returnUrl.value = window.location.href;
}
$("#PageContentPlaceholder_loginControl_loginErrorMessage a").click(function(e) {
Panopto.Login.onAnalyticsEvent("login-page-sso-error-click", "signup");
})
Panopto.Login.setUpClientHandlers();
});
Panopto.Login.routeStandardLoginFromGoogleSSO = function() {
// Helper function for reseting the redirect URL when a user clicks the standard login button in a google SSO environment
// This function is only invoked in the UI where Google SSO is shown as a default option
const internalLoginParam = 'standard'
const urlParams = Panopto.Core.StringHelpers.parseQueryString(location.search, true, // urlDecode
true); // useLowerCaseKeys
if (urlParams.instance === "GoogleSSO") {
// Google's return url has the return url and panopto protection token inside the 'state' url param
// We need to extract the return url, but disregard the protection token since we are doing an internal login
const urlState = urlParams.state;
const stateQueryParams = urlState.split("&");
var returnUrl = "";
for (var i = 0; i < stateQueryParams.length; i++) {
if (stateQueryParams[i].startsWith("ReturnUrl")) {
returnUrl = decodeURIComponent(stateQueryParams[i].split("=")[1]);
}
}
// The URL may be double encoded if it was a token request originally. Check this first
// then double decode it if necessary.
if (returnUrl.indexOf("PanoptoToken") >= 0) {
returnUrl = decodeURIComponent(decodeURIComponent(returnUrl));
}
// Split the urlState at "=" since the state query param has "ReturlUrl=..." value
window.location.href = "?instance=" + internalLoginParam + "&ReturnUrl=" + encodeURIComponent(returnUrl);
} else {
window.location.href += ((window.location.href.indexOf("?") == -1) ? "?" : "&") + "instance=" + internalLoginParam;
}
}
</script>
<div class="login-form">
<div id="PageContentPlaceholder_loginControl_loginUpdatePanel">
<input type="hidden" name="ctl00$PageContentPlaceholder$loginControl$forceStateChanged" id="PageContentPlaceholder_loginControl_forceStateChanged">
<input type="hidden" name="ctl00$PageContentPlaceholder$loginControl$returnUrl" id="PageContentPlaceholder_loginControl_returnUrl"
value="https://polyu.ap.panopto.com/Panopto/Pages/Auth/Login.aspx?ReturnUrl=https%3A%2F%2Fpolyu.ap.panopto.com%2FPanopto%2FPages%2FHome.aspx">
<div id="PageContentPlaceholder_loginControl_notLoggedInControls">
<div id="PageContentPlaceholder_loginControl_loginControls">
<h1 class="page-only">登录 Panopto</h1>
<h1 class="dropdown-only with-subtitle">登录</h1>
<h2 class="dropdown-only">查看更多视频</h2>
<span id="PageContentPlaceholder_loginControl_loginErrorMessage" class="error"></span>
<div id="PageContentPlaceholder_loginControl_standardLogin">
<div id="PageContentPlaceholder_loginControl_accountControl" class="input-wrapper">
<select name="ctl00$PageContentPlaceholder$loginControl$providerDropdown" onchange="javascript:setTimeout('__doPostBack(\'ctl00$PageContentPlaceholder$loginControl$providerDropdown\',\'\')', 0)" id="providerDropdown"
aria-label="登录采用">
<option value="panoptointernal">Panopto</option>
<option selected="selected" value="blackboard">Blackboard</option>
<option value="o365">POLYU Portal (For non-LMS, Research and more)</option>
<option value="BlackboardUltra">Blackboard Ultra</option>
</select>
</div>
<div id="PageContentPlaceholder_loginControl_dropDownPanel">
<div id="PageContentPlaceholder_loginControl_externalLoginControls" onkeypress="javascript:return WebForm_FireDefaultButton(event, 'PageContentPlaceholder_loginControl_externalLoginButton')">
<div class="input-wrapper">
<a onclick="Panopto.Login.checkStorageAccess();window.location.search += ((window.location.search.indexOf('?') == -1) ? '?' : '&') + 'instance=blackboard';
return false;" id="PageContentPlaceholder_loginControl_externalLoginButton" class="standard-button branded-button external-login" href="javascript:__doPostBack('ctl00$PageContentPlaceholder$loginControl$externalLoginButton','')">登录</a>
</div>
</div>
</div>
</div>
<div class="cookie-warning"> 我们采用cookie来记录你的特定偏好和测量用户是如何使用我们网站的。如果你继续浏览本网站,表示你同意我们使用cookie。<br><a href="https://support.panopto.com/14/login/cookies" target="_blank">了解更多</a>
</div>
</div>
</div>
<div id="PageContentPlaceholder_loginControl_emailLoginMessage">
</div>
</div>
</div>
<div id="iframeBounceMessage" class="centered-login-message" style="display:none;"></div>
</div>
</div>
<div id="loadingMessage" style="display: none">
<div class="loading-block">
<div class="branding-color-holders spinner-background"></div>
<div class="loading-indicator branded-animation"></div>
</div>
</div>
<div id="logoutWarningMessage" class="safety-background" style="display: none;">
<span id="logoutWarningText"></span>
<span id="logoutWarningInfo" style="display: none;"></span>
<a id="logoutWarningLink"></a>
</div>
</div>
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.6.0.00014/Scripts/Panopto/Controls/ModalPopup.js"></script>
<div class="modal-background" style="display:none;">
<div tabindex="1"></div>
<div id="modalWindow" role="dialog" aria-modal="true" style="display:none;">
<div class="modal-border-left"></div>
<div class="modal-wrapper">
<div class="modal-header">
<div id="modalIcon"></div>
<div id="modalHeader"></div>
<a target="_blank" id="modalHelp" style="display: none">了解更多</a>
<div id="modalSpinner">
<div class="loading-block">
<div class="branding-color-holders spinner-background"></div>
<div class="loading-indicator branded-animation"></div>
</div>
</div>
<div id="closeDiv">
<a id="closeLink" class="material-icons" href="#" title="关闭" aria-label="关闭">close</a>
</div>
</div>
<div class="modal-view">
<ul id="modalNavigation" class="sys-template tabs" style="visibility:hidden;" role="navigation">
<li class="accented-tab"><a href="#">{binding Name, convert=displayModalPageName}</a></li>
</ul>
<div class="modal-content">
<iframe id="modalIframe" name="modalIframe" frameborder="0"></iframe>
<div id="modalContentPlaceholder"></div>
</div>
</div>
</div>
<div class="modal-border-right"></div>
</div>
<div tabindex="0"></div>
</div>
<script type="text/javascript">
//<![CDATA[
Panopto.Login && Panopto.Login.setUpClientHandlers(); //]]>
</script>
</form>
Text Content
close 由Panopto技术支持 登录 PANOPTO 登录 查看更多视频 Panopto Blackboard POLYU Portal (For non-LMS, Research and more) Blackboard Ultra 登录 我们采用cookie来记录你的特定偏好和测量用户是如何使用我们网站的。如果你继续浏览本网站,表示你同意我们使用cookie。 了解更多 了解更多 close * {binding Name, convert=displayModalPageName}