phoenixft.ap.panopto.com
Open in
urlscan Pro
18.143.230.249
Public Scan
Submitted URL: http://phoenixft.ap.panopto.com/Panopto
Effective URL: https://phoenixft.ap.panopto.com/Panopto/Pages/Auth/Login.aspx?ReturnUrl=https%3A%2F%2Fphoenixft.ap.panopto.com%2FPanopto%2FPages...
Submission: On November 07 via api from AE — Scanned from SG
Effective URL: https://phoenixft.ap.panopto.com/Panopto/Pages/Auth/Login.aspx?ReturnUrl=https%3A%2F%2Fphoenixft.ap.panopto.com%2FPanopto%2FPages...
Submission: On November 07 via api from AE — Scanned from SG
Form analysis
1 forms found in the DOMPOST ./Login.aspx?ReturnUrl=https%3a%2f%2fphoenixft.ap.panopto.com%2fPanopto%2fPages%2fHome.aspx
<form method="post" action="./Login.aspx?ReturnUrl=https%3a%2f%2fphoenixft.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="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUJMjY0OTY4Njc2DxYCHhNWYWxpZGF0ZVJlcXVlc3RNb2RlAgEWAmYPZBYCAgEPZBYEAgoPDxYCHgdWaXNpYmxlZ2QWAmYPFgIfAWgWEGYPFgIeCWlubmVyaHRtbAVC5aaC5p6c5L2g5bey57uP5a6J6KOF5LqG5b2V5YOP5py677yM5L2g5Y+v5Lul5LuO6L+Z6YeM5ZCv5Yqo5a6D44CCZAIBDxYCHgRocmVmBUtodHRwczovL3Bob2VuaXhmdC5hcC5wYW5vcHRvLmNvbS9QYW5vcHRvL1BhZ2VzL1JlY29yZGVyL0xhdW5jaFJlY29yZGVyLmFzcHhkAgIPFgIfAgVj5aaC5p6cIFBhbm9wdG/msqHmnInlkK/liqjvvIzor7fnoa7kv53mgqjkuIvovb3lubblronoo4XkuobkuIvpnaLmnIDmlrDniYjmnKznmoRQYW5vcHRv5b2V5YOP5py644CCZAIDDxYCHwMFemh0dHBzOi8vcGhvZW5peGZ0LmFwLnBhbm9wdG8uY29tL1Bhbm9wdG8vQ2FjaGUvMTQuNy4wLjAwMDE2L1NvZnR3YXJlL1Bhbm9wdG9SZWNvcmRlci5leGU/YXJjaD1YODYmYW1wO3VzZUN1c3RvbUJpbmFyeT1UcnVlZAIEDxYCHwMFfGh0dHBzOi8vcGhvZW5peGZ0LmFwLnBhbm9wdG8uY29tL1Bhbm9wdG8vQ2FjaGUvMTQuNy4wLjAwMDE2L1NvZnR3YXJlL1Bhbm9wdG9SZWNvcmRlci5leGU/YXJjaD1BbWQ2NCZhbXA7dXNlQ3VzdG9tQmluYXJ5PVRydWVkAgUPFgIfAwV+aHR0cHM6Ly9waG9lbml4ZnQuYXAucGFub3B0by5jb20vUGFub3B0by9DYWNoZS8xNC43LjAuMDAwMTYvU29mdHdhcmUvUGFub3B0byUyMFJlY29yZGVyLnBrZz9hcmNoPU5vbmUmYW1wO3VzZUN1c3RvbUJpbmFyeT1UcnVlZAIGD2QWBmYPFgIfAwWAAWh0dHBzOi8vcGhvZW5peGZ0LmFwLnBhbm9wdG8uY29tL1Bhbm9wdG8vQ2FjaGUvMTQuNy4wLjAwMDE2L1NvZnR3YXJlL1Bhbm9wdG9SZW1vdGVSZWNvcmRlci5leGU/YXJjaD1YODYmYW1wO3VzZUN1c3RvbUJpbmFyeT1UcnVlZAIBDxYCHwMFggFodHRwczovL3Bob2VuaXhmdC5hcC5wYW5vcHRvLmNvbS9QYW5vcHRvL0NhY2hlLzE0LjcuMC4wMDAxNi9Tb2Z0d2FyZS9QYW5vcHRvUmVtb3RlUmVjb3JkZXIuZXhlP2FyY2g9QW1kNjQmYW1wO3VzZUN1c3RvbUJpbmFyeT1UcnVlZAICDxYCHwIFfzxhIGhyZWY9J21haWx0bzpkdWJhaUBwaG9lbml4ZnQuY29tJz7ogZTns7vkvaDnmoTns7vnu5/nrqHnkIblkZg8L2E+IOS7peWtpuS5oOabtOWkmuWFs+S6juWmguS9leS9v+eUqFBhbm9wdG/nibnngrnnmoTmlrnms5XjgIJkAgcPFgIfAwWIAWh0dHBzOi8vcGhvZW5peGZ0LmFwLnBhbm9wdG8uY29tL1Bhbm9wdG8vQ2FjaGUvMTQuNy4wLjAwMDE2L1NvZnR3YXJlL1Bhbm9wdG9SZWNvcmRlck5vSW5zdGFsbGF0aW9uLnppcD9hcmNoPVg4NiZhbXA7dXNlQ3VzdG9tQmluYXJ5PVRydWVkAgsPZBYCZg9kFgJmD2QWAgIBD2QWAmYPZBYCZg9kFgYCBQ9kFgQCAQ9kFgICAQ9kFgQCAQ8WAh8BaBYCAgEPEA8WBB4LXyFEYXRhQm91bmRnHgdFbmFibGVkaBYCHgphcmlhLWxhYmVsBQznmbvlvZXph4fnlKgQFQEHUGFub3B0bxUBD3Bhbm9wdG9pbnRlcm5hbBQrAwFnFgFmZAIDD2QWAmYPZBYEAgEPZBYGZg8PZBYEHgtwbGFjZWhvbGRlcgUM55So5oi35ZCN77yaHwYFDOeUqOaIt+WQje+8mmQCAQ8PZBYEHwcFBuWvhueggR8GBQblr4bnoIFkAgIPEGQWAh4FY2xhc3MFDm1hdGVyaWFsLWljb25zZGQCAw8PFgIfAWhkFgICAQ8PZBYEHwcFDOeUteWtkOmCrueusR8GBQznlKjmiLflkI3vvJpkAgMPZBYCAgEPZBYCAgEPZBYCAgEPD2QWBB8HBQznlKjmiLflkI3vvJofBgUM55So5oi35ZCN77yaZAIHDxYCHwFoFgQCAQ9kFghmDw8WAh4EVGV4dGRkZAICD2QWAmYPDxYCHwkFB1Bhbm9wdG9kZAIDDxYCHgVzdHlsZQUNZGlzcGxheTpub25lOxYCZg8PFgIfCWRkZAIED2QWAmYPDxYCHwkFCeaSreaUvuWZqGRkAgUPZBYCAgIPZBYIAgEPD2QWBB8HBQzlvZPliY3lr4bnoIEfBgUM5b2T5YmN5a+G56CBZAIDDw9kFgQfBwUJ5paw5a+G56CBHwYFCeaWsOWvhueggWQCBQ8PZBYEHwcFDOehruiupOWvhueggR8GBQznoa7orqTlr4bnoIFkAgcPZBYEAgEPD2QWBB8HBQ/lronlhajmgKfpl67popgfBgUP5a6J5YWo5oCn6Zeu6aKYZAIDDw9kFgQfBwUP5a6J5YWo5oCn5Zue562UHwYFD+WuieWFqOaAp+WbnuetlGQCCQ9kFgICAQ8WAh8BaGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFNGN0bDAwJFBhZ2VDb250ZW50UGxhY2Vob2xkZXIkbG9naW5Db250cm9sJFJlbWVtYmVyTWUhyO9M+fOsD0tejS+Oypj6ZAeob6ABh5CsRntYppIxhQ==">
</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.7.0.00016/Scripts/MicrosoftAjax/MicrosoftAjax.js" type="text/javascript"></script>
<script src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.7.0.00016/Scripts/MicrosoftAjax/MicrosoftAjaxWebForms.js" type="text/javascript"></script>
<script src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.7.0.00016/Scripts/MicrosoftAjax/start.js" type="text/javascript"></script>
<script src="/Panopto/ScriptResource.axd?d=jX53go6YI1VpcRfxcX57lK3N7DvG6q8WtozQ34oYVm9fKLUi01ucm7xc826wXqX6B04xKD-ciiVJZ4oP739fteAeRyaiPQx8CB3eS2xUHFI9CjXT1emKzA10o5Ng4qughfdoheAGAzX9_qNzjR_92TFLRF5Xv5IfTAn0g5MyiMA1&t=78fb96d8"
type="text/javascript"></script>
<script src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.7.0.00016/Scripts/Panopto/Data.js" type="text/javascript"></script>
<script src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.7.0.00016/Scripts/Panopto/Events.js" type="text/javascript"></script>
<script src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.7.0.00016/Scripts/Panopto/Util.js" type="text/javascript"></script>
<script src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.7.0.00016/Scripts/Panopto/RenderBranding.js" type="text/javascript"></script>
<script src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.7.0.00016/Scripts/Panopto/Application.js" type="text/javascript"></script>
<script src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.7.0.00016/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="/wEdAAhyyv7GbbwzcD+Z6YRixq0v6NcOqBVf9h86JOOauF9Ei6/n6RfadRjx4dgq5eWj6G5ElpkYSLh/LY1Q025tVc7rpWiBb0DAVhJF3A71vPKG5bcudZDp/wThJyXtMBITM3o1BdObaKEmrPrir4KxcQYlgReXuMLeiejWfg8fSLQt4keTWPiIgEGiSwCKZpm7ncAOMDGq7KVg8kryRYd2F0G3">
</div>
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.7.0.00016/Scripts/jQuery/jquery-ui.min.js"></script>
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.7.0.00016/Scripts/jQuery/datepicker-localization.min.js"></script>
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.7.0.00016/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.7.0.00016/Scripts/waveform/waveform.js"></script>
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.7.0.00016/Scripts/tether/tether.min.js"></script>
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.7.0.00016/Scripts/tether-shepherd/shepherd.min.js"></script>
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.7.0.00016/Scripts/Panopto/Bundles/Core.js"></script>
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.7.0.00016/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$LoginButton', 'PageContentPlaceholder_loginControl_LoginButton', 'ctl00$PageContentPlaceholder$loginControl$ForgotPasswordButton',
'PageContentPlaceholder_loginControl_ForgotPasswordButton'
], [], 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"> close </div>
</div>
</div>
</div>
<!-- end header -->
<script type="text/javascript" src="//static-assets-cdn.i.ap.panopto.com/Panopto/Cache/14.7.0.00016/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/637254734961897251/_branding/db4aeb3b-5663-4c73-9fec-abb90068e965/637254734160166278_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.7.0.00016/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://phoenixft.ap.panopto.com/Panopto/Pages/Auth/Login.aspx?ReturnUrl=https%3A%2F%2Fphoenixft.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_dropDownPanel">
<div id="PageContentPlaceholder_loginControl_internalLoginControls" onkeypress="javascript:return WebForm_FireDefaultButton(event, 'PageContentPlaceholder_loginControl_LoginButton')">
<div class="input-wrapper">
<input name="ctl00$PageContentPlaceholder$loginControl$usernameInput" type="text" id="usernameInput" spellcheck="false" autocapitalize="off" placeholder="用户名:" aria-label="用户名:">
</div>
<div class="input-wrapper">
<input name="ctl00$PageContentPlaceholder$loginControl$passwordInput" type="password" id="passwordInput" autocapitalize="off" autocomplete="off" placeholder="密码" aria-label="密码">
</div>
<div class="input-wrapper">
<label class="remember">
<input id="RememberMe" type="checkbox" name="ctl00$PageContentPlaceholder$loginControl$RememberMe" class="material-icons">保持登录 </label>
</div>
<div class="input-wrapper login-action">
<a onclick="Panopto.Login.checkStorageAccess();" id="PageContentPlaceholder_loginControl_LoginButton" class="standard-button branded-button" href="javascript:__doPostBack('ctl00$PageContentPlaceholder$loginControl$LoginButton','')">登录</a>
</div>
<div class="input-wrapper">
<a id="PageContentPlaceholder_loginControl_ForgotPasswordButton" class="forgot-password-link" href="javascript:__doPostBack('ctl00$PageContentPlaceholder$loginControl$ForgotPasswordButton','')">忘记你的密码了?</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.7.0.00016/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 登录 查看更多视频 保持登录 登录 忘记你的密码了? 我们采用cookie来记录你的特定偏好和测量用户是如何使用我们网站的。如果你继续浏览本网站,表示你同意我们使用cookie。 了解更多 了解更多 close * {binding Name, convert=displayModalPageName}