1 2 3 4<!DOCTYPE html> 5<html lang="en-US" data-lang="en-US" crm-lang="en-US" dir="ltr" crm-lcid="1033" 6 same-site-mode="None"> 7<head> 8 9 <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /> 10
10<script type="text/javascript" > 11 12 </script>
12 13 <title> 14 15 Home 16 | Pūaha | Victoria University of Wellington 17</title> 18 19 <meta name="description" content="Use the Pūaha web portal to manage your student admin, access useful tools, and find support services. View your key dates, timetables, and grades." /> 20 21
21<script src="/_portal/7b138792-1090-45b6-9241-8f8d96d8c372/Resources/ResourceManager?lang=en-US"></script>
21 22 23
23<script type="text/javascript"> 24 // Refresh all powerBI Iframes on Login in one Iframe 25 window.addEventListener('message', function (event) { 26 if (event && event.data && event.data == 'refreshPowerBI') { 27 $("iframe.powerbi").each(function () { 28 this.src = this.src; 29 }); 30 } 31 }); 32 33 // Fix for incorrect viewport width setting in IE 10 on Windows Phone 8. 34 if (navigator.userAgent.match(/IEMobile\/10\.0/)) { 35 var msViewportStyle = document.createElement("style"); 36 msViewportStyle.appendChild(document.createTextNode("@-ms-viewport{width:auto!important}")); 37 document.getElementsByTagName("head")[0].appendChild(msViewportStyle); 38 } 39 </script>
39 40 41 42 43 <link href="/bootstrap.min.css?1670435630000" rel="stylesheet" /> 44 45 <link href="https://content.powerapps.com/resource/powerappsportal/dist/font-awesome.bundle-3d8a58a48f.css" onerror="javascript: var target = event.target; var link = document.createElement('link'); link.crossOrigin = target.crossOrigin; link.href = '/dist/font-awesome.bundle-3d8a58a48f.css'; link.rel = 'stylesheet'; target.insertAdjacentElement('afterend',link);" rel="stylesheet" /> 46 47 <link href="https://content.powerapps.com/resource/powerappsportal/dist/preform.bundle-b72a6ea21d.css" onerror="javascript: var target = event.target; var link = document.createElement('link'); link.crossOrigin = target.crossOrigin; link.href = '/dist/preform.bundle-b72a6ea21d.css'; link.rel = 'stylesheet'; target.insertAdjacentElement('afterend',link);" rel="stylesheet" /> 48 49 50 51 <link href="https://content.powerapps.com/resource/powerappsportal/dist/privatemode.bundle-049b12b66e.css" onerror="javascript: var target = event.target; var link = document.createElement('link'); link.crossOrigin = target.crossOrigin; link.href = '/dist/privatemode.bundle-049b12b66e.css'; link.rel = 'stylesheet'; target.insertAdjacentElement('afterend',link);" rel="stylesheet" /> 52 53 54 55 56 57 58 59 60 <link rel="stylesheet" href="/Areas/Account/css/account.css"> 61 62 63 <link href="/select2.min.css?1697085317000" rel="stylesheet" /> 64<link href="/intlTelInput.min.css?1670435636000" rel="stylesheet" /> 65<link href="/tui-time-picker.css?1670435639000" rel="stylesheet" /> 66<link href="/tui-date-picker.css?1670435637000" rel="stylesheet" /> 67<link href="/calendarDefault.css?1670435640000" rel="stylesheet" /> 68<link href="/tui-calendar.css?1670435633000" rel="stylesheet" /> 69<link href="/theme.css?1782163753000" rel="stylesheet" /> 70 71 72
72<script>
vendor: 327 bytes, lines 72-76
72(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 73new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 74j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 75'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 76})(window,document,'script','dataLayer','
76GTM-KFJR8JS
vendor: 3 bytes, line 76
76');
76</script>
76 77<!-- End Google Tag Manager --> 78 79 80 81 82 83 <link href="https://content.powerapps.com/resource/powerappsportal/dist/pwa-style.bundle-55718a4c0d.css" onerror="javascript: var target = event.target; var link = document.createElement('link'); link.crossOrigin = target.crossOrigin; link.href = '/dist/pwa-style.bundle-55718a4c0d.css'; link.rel = 'stylesheet'; target.insertAdjacentElement('afterend',link);" rel="stylesheet" /> 84 85 </head> 86<body data-sitemap-state="/" 87 data-dateformat="dd/MM/yyyy" 88 data-timeformat="HH:mm" 89 data-datetimeformat="ddd dd/MM/yyyy HH:mm" 90 data-app-path="/" 91 data-ckeditor-basepath="/js/BaseHtmlContentDesigner/Libs/msdyncrm_/libs/ckeditor/" 92 data-case-deflection-url="/_services/search/7b138792-1090-45b6-9241-8f8d96d8c372"> 93 94 95 96 <link href="https://content.powerapps.com/resource/powerappsportal/dist/pcf-style.bundle-373a0f4982.css" onerror="javascript: var target = event.target; var link = document.createElement('link'); link.crossOrigin = target.crossOrigin; link.href = '/dist/pcf-style.bundle-373a0f4982.css'; link.rel = 'stylesheet'; target.insertAdjacentElement('afterend',link);" rel="stylesheet" /> 97 98 99 100 101 102 <div id="offlineNotificationBar" class="displayNone"> 103 <img alt="web" id="web" onerror="javascript: var target = event.target; var img = document.createElement('img'); img.src = '/css/images/web.png'; img.alt = 'web'; img.id = 'web' ; target.insertAdjacentElement('afterend',img); target.remove();" src="https://content.powerapps.com/resource/powerappsportal/img/web.png" /> 104 <div id="message">You’re offline. This is a read only version of the page.</div> 105 <div id="close" onclick="this.parentElement.style.display='none';"><img alt="close" onerror="javascript: var target = event.target; var img = document.createElement('img'); img.src = '/css/images/close.png'; img.alt = 'close'; img.id = '' ; target.insertAdjacentElement('afterend',img); target.remove();" src="https://content.powerapps.com/resource/powerappsportal/img/close.png" /></div> 106 </div> 107 108 109 110
110<script type="text/javascript"> 111 window.DisableCkEditor = window.DisableCkEditor || {}; 112 113 DisableCkEditor.Value = 'False'; 114 </script>
114 115 116
116<script type="text/javascript"> 117 var enableOmniChannelWidgetWithSiteCopilot = 'False'; 118 if (enableOmniChannelWidgetWithSiteCopilot === "True" || enableOmniChannelWidgetWithSiteCopilot === "true") { 119 const authUrl = window.location.origin + "/_services/auth/portalusertoken"; 120 const fetchWithRetries = async (url, options, retries) => { 121 try { 122 const authResponse = await fetch(url, options); 123 const token = await authResponse.text(); 124 sessionStorage['c2Token'] = token; 125 } catch (err) { 126 if (retries === 1) throw err; 127 return await fetchWithRetries(url, options, retries - 1); 128 } 129 }; 130 fetchWithRetries(authUrl, { method: "POST" }, 4); 131 132 // Enable/disable Omnichannel session refresh on auth state change 133 // When enabled, closeChat() is called when user logs in/out to start a fresh session 134 var enableOmniChannelSessionRefreshSetting = 'True'; 135 window.enableOmniChannelSessionRefresh = enableOmniChannelSessionRefreshSetting === 'True' || enableOmniChannelSessionRefreshSetting === 'true'; 136 } 137 </script>
137 138 139
139<script type="text/javascript"> 140 var isPvaBotAuthenticated = sessionStorage['isPvaBotAuthenticated']; 141 var isPortalUserLoggedIn = 'False'; 142 143 if ((isPvaBotAuthenticated != null || isPvaBotAuthenticated != undefined) && isPvaBotAuthenticated != isPortalUserLoggedIn) { 144 sessionStorage['triggerPvaBotSignOut'] = true; 145 sessionStorage.removeItem('c2Token'); 146 sessionStorage.removeItem('directLinetoken'); 147 sessionStorage.removeItem('conversation_Id'); 148 149 sessionStorage.removeItem('bot_c2Token'); 150 sessionStorage.removeItem('botdirectLinetoken'); 151 sessionStorage.removeItem('botconversation_Id'); 152 } 153 sessionStorage['isPvaBotAuthenticated'] = isPortalUserLoggedIn; 154 </script>
154 155 156
156<script type="text/javascript"> 157 window["CSPSettings"] = window["CSPSettings"] || {}; 158 window["CSPSettings"].nonce = ''; 159 window["FabricConfig"] = window["FabricConfig"] || {}; 160 window["FabricConfig"].mergeStyles = window["FabricConfig"].mergeStyles || {}; 161 window["FabricConfig"].mergeStyles.cspSettings = window["CSPSettings"]; 162 window["Microsoft"] = window["Microsoft"] || {}; 163 window["Microsoft"].Dynamic365 = { 164 Portal: { 165 166 User: { 167 userName: '', 168 firstName: '', 169 lastName: '', 170 email: '', 171 contactId: '', 172 userRoles: [], 173 }, 174 175 type: 'CustomerPortal', 176 id: '8a407384-abc4-491b-bdb2-d283857d5272', 177 geo: 'OCE', 178 tenant: 'cfe63e23-6951-427e-8683-bb84dcf1d20c', 179 correlationId: '6ee49722-ae51-4bf3-82a3-573bb038b4a1', 180 orgEnvironmentId: 'fd88ed68-9847-4d7d-8349-026f2a3a4855', 181 orgId: '4721e59b-edd6-40ac-b7b5-7d67f7fe0e52', 182 portalProductionOrTrialType: 'Production', 183 isTelemetryEnabled: 'True', 184 InstrumentationSettings: { 185 instrumentationKey: '197418c5cb8c4426b201f9db2e87b914-87887378-2790-49b0-9295-51f43b6204b1-7172', 186 collectorEndpoint: 'https://us-mobile.events.data.microsoft.com/OneCollector/1.0/' 187 }, 188 timerProfileForBatching: 'NEAR_REAL_TIME', 189 activeLanguages: ["en-US"], 190 isClientApiEnabled: 'True', 191 isSpaSite: 'False' 192 } 193 }; 194 195 window["Microsoft"].PowerPages = window["Microsoft"].PowerPages || {}; 196 window["Microsoft"].PowerPages.onPagesClientApiReady = (callback) => { 197 return new Promise((resolve, reject) => { 198 let isComplete = false; 199 let timeoutId; 200 const timeoutInterval = 10000; 201 202 function handleReady() { 203 if (!isComplete && window.$pages) { 204 isComplete = true; 205 clearTimeout(timeoutId); 206 try { 207 if (typeof callback === "function") { 208 callback(window.$pages); 209 } 210 } catch (e) { 211 console.error("onPagesClientApiReady callback error:", e); 212 } 213 resolve(window.$pages); // should we reject if callback throws an error 214 } 215 } 216 217 if (window.$pages) { 218 handleReady(); 219 return; 220 } 221 222 function sdkListener() { 223 handleReady(); 224 window.removeEventListener('pagesSDKInitialized', sdkListener); 225 } 226 227 window.addEventListener('pagesSDKInitialized', sdkListener); 228 229 timeoutId = setTimeout(() => { 230 if (!isComplete) { 231 window.removeEventListener('pagesSDKInitialized', sdkListener); 232 if (window.$pages) { 233 handleReady(); 234 } else { 235 isComplete = true; 236 reject(new Error('window.$pages not available.')); 237 } 238 } 239 }, timeoutInterval); 240 }); 241 }; 242 243 // Deprecated alias: Microsoft.Dynamic365.Portal.onPagesClientApiReady. 244 // Remove once telemetry shows no callers remain. 245 (function () { 246 var _impl = window["Microsoft"].PowerPages.onPagesClientApiReady; 247 var _logged = false; 248 249 window["Microsoft"].Dynamic365.Portal.onPagesClientApiReady = function (callback) { 250 if (!_logged) { 251 _logged = true; 252 try { 253 if (window.clientLogWrapper && typeof window.clientLogWrapper.traceWarning === "function") { 254 window.clientLogWrapper.traceWarning( 255 "Microsoft.Dynamic365.Portal.onPagesClientApiReady invoked (deprecated)", 256 "DeprecatedApi", 257 "ClientApiReady", 258 "Invoke", 259 "DeprecationTracker" 260 ); 261 } 262 if (typeof console !== "undefined" && console.warn) { 263 console.warn( 264 "[DEPRECATED] Microsoft.Dynamic365.Portal.onPagesClientApiReady is deprecated " + 265 "and will be removed in a future release. Use Microsoft.PowerPages.onPagesClientApiReady instead." 266 ); 267 } 268 } catch (_) { /* never break the caller */ } 269 } 270 271 return _impl(callback); 272 }; 273 })(); 274 275 // Mark request not cacheable if Dynamics365PortalAnalytics cookie is being refreshed by the server or if the cookie in request header is invali
275d 276 277 278 // For client side telemetry intializing Dynamics365PortalAnalytics cookie object 279 280 window["Microsoft"].Dynamic365.Portal.dynamics365PortalAnalytics = 'cn5IzTvuE9W2K39vidf7p7rU7jK3BocF0kvv20PQMBuorraz8FvFvemL1qj0WnfSlxP-aFR2u7s_VjxT28Z_wgLgQsP2DEopLzhNGeXP2mt68sblb64ybg5Qwubk1Ln0J48FnD6Tgxv944K9EJuq0A2'; // CodeQL [SM00430] False Positive: only alphanumeric chars allowed, for non-alphanumeric char it will return INVALID_CHARACTERS_IN_COOKIE 281 282 283 </script>
283 284 285
285<script type="text/javascript"> 286 287 288 </script>
288 289 290 291 292 293<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/cookieconsent@3/build/cookieconsent.min.css" /> 294<link rel="stylesheet" type="text/css" href="/Fusion5-toggle.css" />
295<script src="https://cdn.jsdelivr.net/npm/cookieconsent@3/build/cookieconsent.min.js" data-cfasync="false"></script>
295 296<!-- Google Tag Manager (noscript) -->
vendor: 69 bytes, lines 296-297
296 297<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
297GTM-KFJR8JS
vendor: 85 bytes, lines 297-298
297" 298height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
299<!-- End Google Tag Manager (noscript) --> 300 301<!-- MS Clarity--> 302
303<script type="text/javascript"> 304 305var clarityTrackingId = "ttev0na3tx"; 306 307(function (c, l, a, r, i, t, y) { 308 c[a] = c[a] || function () { 309 (c[a].q = c[a].q || []).push(arguments); 310 }; 311 t = l.createElement(r); 312 t.async = true; 313 t.src = `https://www.clarity.ms/tag/${i}`; 314 y = l.getElementsByTagName(r)[0]; 315 y.parentNode?.insertBefore(t, y); 316})(window, document, "clarity", "script", clarityTrackingId); 317 318</script>
318 319 320<!-- End MS Clarity--> 321 322<!--<h1 style="visibility: hidden;height: 0px;">Vuw Portal</h1>--> 323<div role="navigation" > 324<div class="navbar navbar-inverse navbar-static-top"> 325 <div class="container"> 326 <div class="row"> 327 <div class="logo col" style=""> 328 <a href="/" title="Victoria University of Wellington" target="_self" style="padding: 0px!important;"> 329 <picture> 330 <source media="(min-width: 768px)" srcset="/logo-green-full.svg"> 331 <source media="(max-width: 767px)" srcset="/logo-green-full.svg"> 332 <img alt="Te Herenga Waka â Wellington University logo"> 333 </picture> 334 </a> 335 </div> 336 <div class="headerTitleContainer" > 337 <span class="menuContainerMaoriTitle headerTitleMaoriText" style="color: #0D4C38;font-weight: 1000;font-size:30px; ">PÅ«aha</span><br><span class="menuContainerEnglishTitle headerTitleText" style="color: #0D4C38;margin: 0px;padding: 0px;float: left;font-size: 1.2em;font-weight: 900;position: relative;top: -5px;">My portal</span> 338 </div> 339<!-- <picture style="padding-left: 22px;"> 340 <source media="(min-width: 768px)" srcset="/Puahatransparentcropped.png"> 341 <source media="(max-width: 767px)" srcset="/Puahatransparentcropped.png"> 342 <img alt="Puaha" class="portaltitleimg"> 343 </picture>--> 344 <a id="signin" aria-label="Log In" href="/SignIn?returnUrl=%2Fsignin" title="Log In"> 345 <img src="/icons/source_icons_user-square-alt.svg" alt="">Log In 346 </a> 347 </div> 348 </div> 349</div> 350</div> 351 352<div class="modal fade" id="toolsModal" tabindex="-1" aria-modal="true" role="dialog" aria-labelledby="toolsModalLabel" aria-hidden="true"> 353 <div class="modal-dialog modal-lg" role="document"> 354 <div class="modal-content"> 355 <div class="modal-header"> 356 357 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 358 <span aria-hidden="true">×</span> 359 </button> 360 <span class="pageMaoriTitle2">Aku rauemi</span><br><span class="pageTitleEnglish2">My tools</span> 361 </div> 362 <div class="modal-body toolFlex-Container" id="modalbody"> 363 </div> 364 </div> 365 </div> 366</div> 367<section id="formModalDialog" aria-hidden="true" aria-modal="true" aria-labelledby="formModalDialog" aria-label="<span class='fa fa-info-circle' aria-hidden='true'></span> Modal Form" class="modal fade modal-form modal-form-details" data-backdrop="static" role="dialog" tabindex="-1" style="display: none;"> 368 <div class="modal-lg modal-dialog"> 369 <div class="modal-content"> 370 <div class="modal-header"> 371 <button id="formModalDialogClose" aria-label="Close" class="close" data-dismiss="modal" tabindex="0" title="Close" type="button"> 372 <span aria-hidden="true">Ã</span><span class="sr-only">Close</span> 373 </button> 374 <h1 id="formModalTitle" class="modal-title h4" title="Modal Title">My Modal Title</h1> 375 </div> 376 <div class="modal-body"> 377 <div class="form-loading" style="display: none;"> 378 <span class="fa fa-spinner fa-spin fa-4x" aria-hidden="true"></span> 379 </div> 380 381 <iframe src=""></iframe> 382 </div> 383 </div> 384 </div> 385</section> 386 387
388<script> 389var toolsObjects = [ 390 { 391 id: "193a4246-5459-ed11-9562-00224818acaf", 392 name: "Nuku", 393 url: "https://nuku.wgtn.ac.nz/", 394 isnewwindow: true , 395 decription: "", 396 tooltip: "Nuku", 397 imageurl: "/icons/nuku.svg", 398 imagewidth: "40", 399 imageheight: "40", 400 imagealtertext: "Nuku" 401 }, 402 { 403 id: "89daf83d-bdf8-eb11-94ef-00224818171e", 404 name: "Student Records", 405 url: "https://www.wgtn.ac.nz/student-records", 406 isnewwindow: true , 407 decription: "", 408 tooltip: "Student Records", 409 imageurl: "/icons/source_icons_archive.svg", 410 imagewidth: "40", 411 imageheight: "40", 412 imagealtertext: "Student Records" 413 }, 414 { 415 id: "d362ff6e-bdf8-eb11-94ef-00224818171e", 416 name: "MyDegree", 417 url: "https://mydegree.wgtn.ac.nz/", 418 isnewwindow: true , 419 decription: "", 420 tooltip: "MyDegree", 421 imageurl: "/icons/source_icons_journal-page.svg", 422 imagewidth: "40", 423 imageheight: "40", 424 imagealtertext: "MyDegree" 425 }, 426 { 427 id: "b78db789-bdf8-eb11-94ef-00224818171e", 428 name: "MyAllocator", 429 url: "https://www.wgtn.ac.nz/students/tools#myAllocator", 430 isnewwindow: true , 431 decription: "", 432 tooltip: "MyAllocator", 433 imageurl: "/icons/source_icons_clock-outline.svg", 434 imagewidth: "40", 435 imageheight: "40", 436 imagealtertext: "MyAllocator" 437 }, 438 { 439 id: "dbc6d814-bef8-eb11-94ef-00224818171e", 440 name: "Student email", 441 url: "https://outlook.com/myvuw.ac.nz", 442 isnewwindow: true , 443 decription: "", 444 tooltip: "Student email", 445 imageurl: "/icons/source_icons_mail-opened.svg", 446 imagewidth: "40", 447 imageheight: "40", 448 imagealtertext: "Student email" 449 }, 450 { 451 id: "7937ea7b-bdf8-eb11-94ef-00224818171e", 452 name: "Office365", 453 url: "https://m365.cloud.microsoft/apps/", 454 isnewwindow: true , 455 decription: "", 456 tooltip: "Office365", 457 imageurl: "/icons/source_icons_multiple-pages.svg", 458 imagewidth: "40", 459 imageheight: "40", 460 imagealtertext: "Office365" 461 }, 462 { 463 id: "39fba5aa-bdf8-eb11-94ef-00224818171e", 464 name: "Pay fees", 465 url: "https://www.wgtn.ac.nz/students/money/payments", 466 isnewwindow: true , 467 decription: "", 468 tooltip: "Pay fees", 469 imageurl: "/icons/source_icons_send-dollars.svg", 470 imagewidth: "40", 471 imageheight: "40", 472 imagealtertext: "Pay fees" 473 }, 474 { 475 id: "dd8393bc-bdf8-eb11-94ef-00224818171e", 476 name: "Other payments", 477 url: "https://pay.wgtn.ac.nz/home/menu", 478 isnewwindow: true , 479 decription: "", 480 tooltip: "Other payments", 481 imageurl: "/icons/source_icons_credit-card-2.svg", 482 imagewidth: "40", 483 imageheight: "40", 484 imagealtertext: "Other payments" 485 }, 486 { 487 id: "c47ab8e8-bdf8-eb11-94ef-00224818171e", 488 name: "Library", 489 url: "https://www.wgtn.ac.nz/library/", 490 isnewwindow: true , 491 decription: "", 492 tooltip: "Library", 493 imageurl: "/icons/source_icons_building.svg", 494 imagewidth: "40", 495 imageheight: "40", 496 imagealtertext: "Library" 497 }, 498 { 499 id: "ac03a09e-bdf8-eb11-94ef-00224818171e", 500 name: "Printing", 501 url: "https://wgtn.ac.nz/print", 502 isnewwindow: true , 503 decription: "", 504 tooltip: "Printing", 505 imageurl: "/icons/source_icons_printer.svg", 506 imagewidth: "40", 507 imageheight: "40", 508 imagealtertext: "Printing" 509 }, 510 { 511 id: "f72f12e2-bdf8-eb11-94ef-00224818171e",
512 name: "Inclusive Learning Software", 513 url: "https://www.wgtn.ac.nz/disability/for-students/key-services/inclusive-learning-software", 514 isnewwindow: true , 515 decription: "", 516 tooltip: "Inclusive Learning Software", 517 imageurl: "/icons/source_icons_group.svg", 518 imagewidth: "40", 519 imageheight: "40", 520 imagealtertext: "Inclusive Learning Software" 521 }, 522 { 523 id: "98e5b4d4-bdf8-eb11-94ef-00224818171e", 524 name: "CareerHub", 525 url: "https://careerhub.vuw.ac.nz/students/login", 526 isnewwindow: true , 527 decription: "", 528 tooltip: "CareerHub", 529 imageurl: "/icons/source_icons_city.svg", 530 imagewidth: "40", 531 imageheight: "40", 532 imagealtertext: "CareerHub" 533 }, 534 { 535 id: "90ea5492-bdf8-eb11-94ef-00224818171e", 536 name: "Workspace", 537 url: "https://www.wgtn.ac.nz/myworkspace/student/", 538 isnewwindow: true , 539 decription: "", 540 tooltip: "Workspace", 541 imageurl: "/icons/source_icons_planet.svg", 542 imagewidth: "40", 543 imageheight: "40", 544 imagealtertext: "Workspace" 545 }, 546 { 547 id: "7e115208-bef8-eb11-94ef-00224818171e", 548 name: "Software download", 549 url: "https://myvuwac.sharepoint.com/sites/downloads", 550 isnewwindow: true , 551 decription: "", 552 tooltip: "Software download", 553 imageurl: "/icons/source_icons_import.svg", 554 imagewidth: "40", 555 imageheight: "40", 556 imagealtertext: "Software download" 557 }, 558 { 559 id: "2ef1eaf5-bdf8-eb11-94ef-00224818171e", 560 name: "Password", 561 url: "https://password.student.vuw.ac.nz/default.aspx", 562 isnewwindow: true , 563 decription: "", 564 tooltip: "Password", 565 imageurl: "/icons/source_icons_lock.svg", 566 imagewidth: "40", 567 imageheight: "40", 568 imagealtertext: "Password" 569 }, 570 { 571 id: "2776ee51-de18-f111-8341-7ced8db1a5f6", 572 name: "NZSM bookings", 573 url: "https://vuwnzsm.skedda.com/", 574 isnewwindow: true , 575 decription: "", 576 tooltip: "NZSM bookings", 577 imageurl: "/icons/nzsm.svg", 578 imagewidth: "", 579 imageheight: "40", 580 imagealtertext: "NZSM bookings" 581 } 582 ]; 583</script>
583
584<script> 585var formid =""; 586var allowProfileEdit = false; 587 588 window.closeTaskModal = function(){ 589 $('#formModalDialog').modal('hide'); 590 }; 591 592 const appealViewForm = "29311414-d747-ec11-8c62-002248159d4b"; 593 const geViewForm = "3b397b9a-7f46-ec11-8c62-002248159ea1"; 594 const taskForm = "f99b69b6-789e-ec11-b400-002248155c27"; 595 var refreshTasks = false; 596 597 function showPersonProfleForm(){ 598 var portalId = "00000000-0000-0000-0000-000000000000"; 599 600 var url = "/_portal/modal-form-template-path/" + portalId + "?entityformid=" + formid; 601 console.log(url); 602 var $modal = $("#formModalDialog"); 603 $("#formModalDialog #formModalTitle").text("Edit Contact"); 604 605 //Retrieve the iframe of the modal and set it load the service 606 var $iFrame = $modal.find("iframe"); 607 608 $iFrame.attr("src", url); 609 610 //Hook in handler to hide loader image when done loading 611 $iFrame.on("load", function () { 612 $modal.find(".form-loading").hide(); 613 $modal.find("iframe").contents().find("#EntityFormControl").show(); 614 }); 615 616 //Show the loader image at start 617 $modal.find(".form-loading").show(); 618 $modal.find("iframe").contents().find("#EntityFormControl").hide(); 619 620 $modal.on('show.bs.modal', function () { 621 $modal.attr("aria-hidden", "false"); 622 }); 623 624 $modal.off("hidden.bs.modal.entitygrid").on("hidden.bs.modal.entitygrid", function () { 625 if(formid === taskForm &&$("#formModalDialog iframe").contents().find(".alert-success").length > 0) 626 { 627 let t = { 628 activityid: optionalParams.replace("&pid=",""), 629 iscase:false 630 }; 631 632 markNotificationRead(t); 633 634 if (typeof getNotificationData == 'function') { 635 getNotificationData(); 636 } 637 } 638 $modal.attr("aria-hidden", "true"); 639 $("#formModalDialogClose").show(); 640 }); 641 642 $modal.modal(); 643 } 644 645 function showContactForm(){ 646 var portalId = "00000000-0000-0000-0000-000000000000"; 647 var formid ="746ad67e-01d7-ec11-a7b6-002248186e31"; 648 var url = "/_portal/modal-form-template-path/" + portalId + "?entityformid=" + formid; 649 650 var $modal = $("#formModalDialog"); 651 $("#formModalDialog #formModalTitle").text("Edit Contact"); 652 653 //Retrieve the iframe of the modal and set it load the service 654 var $iFrame = $modal.find("iframe"); 655 656 $iFrame.attr("src", url); 657 658 //Hook in handler to hide loader image when done loading 659 $iFrame.on("load", function () { 660 $modal.find(".form-loading").hide(); 661 $modal.find("iframe").contents().find("#EntityFormControl").show(); 662 }); 663 664 //Show the loader image at start 665 $modal.find(".form-loading").show(); 666 $modal.find("iframe").contents().find("#EntityFormControl").hide(); 667 668 $modal.on('show.bs.modal', function () { 669 $modal.attr("aria-hidden", "false"); 670 }); 671 672 $modal.off("hidden.bs.modal.entitygrid").on("hidden.bs.modal.entitygrid", function () { 673 if(formid === taskForm &&$("#formModalDialog iframe").contents().find(".alert-success").length > 0) 674 { 675 let t = { 676 activityid: optionalParams.replace("&pid=",""), 677 iscase:false 678 }; 679 680 markNotificationRead(t); 681 682 if (typeof getNotificationData == 'function') { 683 getNotificationData(); 684 } 685 } 686 $modal.attr("aria-hidden", "true"); 687 $("#formModalDialogClose").show(); 688 }); 689 690 $modal.modal(); 691 } 692 693 function showTaskForm(recordId, title, formid, optionalParams){ 694 /*if(formid === taskForm){ 695 $("#formModalDialogClose").hide(); 696 }*/ 697 698 var portalId = "00000000-0000-0000-0000-000000000000"; 699 var url = "/_portal/modal-form-template-path/" + portalId + "?entityformid=" + formid + "&id=" + recordId ; 700 if(optionalParams !== undefined){ 701 url += optionalParams; 702 } 703 704 var $modal = $("#formModalDialog"); 705 706 $("#formModalDialog #formModalTitle").text(title); 707 708 //Retrieve the iframe of the modal and set it load the service 709 var $iFrame = $modal.find("iframe"); 710 711 $iFrame.attr("src", url); 712 713 //Hook in handler to hide loader image when done loading 714 $iFrame.on("load", function () { 715 $modal.find(".form-loading").hide(); 716 $modal.find("iframe").contents().find("#EntityFormControl").show(); 717 }); 718 719 //Show the loader image at start 720 $modal.find(".form-loading").show(); 721 $modal.find("iframe").contents().find("#EntityFormControl").hide(); 722 723 $modal.on('show.bs.modal', function () { 724 $modal.attr("aria-hidden", "false"); 725 }); 726 727 $modal.off("hidden.bs.modal.entitygrid").on("hidden.bs.modal.entitygrid", function () { 728 if(formid === taskForm &&$("#formModalDialog iframe").contents().find(".alert-success").length > 0) 729 { 730 let t = { 731 activityid: optionalParams.replace("&pid=",""), 732 iscase:false 733 }; 734 735 markNotificationRead(t); 736 737 if (typeof getNotificationData == 'function') { 738 getNotificationData(); 739 } 740 } 741 $modal.attr("aria-hidden", "true"); 742 $("#formModalDialogClose").show(); 743 }); 744 745 $modal.modal(); 746 } 747 748 function showNotificationsPopup(){ 749 $('#signedInPopup').hide('slow'); 750 var margin = ($('.navbar .container').outerWidth(true) - $('.navbar .container').outerWidth()) /2; 751 var padding = ($('.navbar .container').innerWidth() - $('.navbar .container').width()) /2; 752 753 var newRight = (margin + padding +10 + 48 + 10) + "px"; 754 if($(window).width() <= 400){ 755 newRight = "48px"; 756 } 757 $("#notificationsPopup").css("right", newRight ); 758 window.setTimeout(function(){ 759 $('#signedInPopup').hide('slow'); 760 $("#notificationsPopup").show("slow").addClass("open"); 761 },50); 762 } 763 764 765 766 767var myAccessTools = document.getElementById("accessTools"); 768// Execute a function when the user releases a key on the keyboard 769if(myAccessTools != null){ 770 myAccessTools.addEventListener("keyup", function(event) { 771 // Number 13 is the "Enter" key on the keyboard 772 if (event.keyCode === 13) { 773 // Trigger the button element with a click 774 myAccessTools.click(); 775 } 776 });
777} 778 779var toolsBuilt = false; 780var decodeHTML = function (html) { 781 var txt = document.createElement('textarea'); 782 txt.innerHTML = html; 783 return txt.value; 784}; 785function showTools(){ 786 if(!toolsBuilt){ 787 buildToolsList(); 788 toolsBuilt = true; 789 }; 790 $("#toolsModal").modal(); 791} 792 793function buildToolsList(){ 794 var modalbody = document.getElementById("modalbody"); 795 796 for (let i = 0; i < toolsObjects.length; i++) { 797 var iDiv = document.createElement('div'); 798 iDiv.id = "pudiv"+toolsObjects[i]["name"].replace(/\s/g,'') 799 iDiv.title = toolsObjects[i]["name"]; 800 iDiv.className="toolFlex-item"; 801 802 var linkImageDiv = document.createElement('div'); 803 linkImageDiv.className="toolFlex-innerItemBody"; 804 var linkURLimage = document.createElement('a'); 805 806 var linkImage = document.createElement('img'); 807 linkImage.src = toolsObjects[i]["imageurl"]; 808 linkImage.alt = toolsObjects[i]["imagealtertext"]; 809 810 if(toolsObjects[i]["imagewidth"] != null){ 811 linkImage.style.width = toolsObjects[i]["imagewidth"].toString() +"px"; 812 } 813 if(toolsObjects[i]["imageheight"] != null){ 814 linkImage.style.height = toolsObjects[i]["imageheight"].toString() +"px"; 815 } 816 817 linkURLimage.appendChild(linkImage); 818 linkURLimage.href = toolsObjects[i]["url"]; 819 linkURLimage.setAttribute("target", "_blank"); 820 linkImageDiv.appendChild(linkURLimage) 821 822 var linkButtonDiv = document.createElement('div'); 823 linkButtonDiv.className="toolFlex-innerItemButton"; 824 var linkURL = document.createElement('a'); 825 linkURL.setAttribute("class","aVuwColor"); 826 var linkText = document.createTextNode(toolsObjects[i]["imagealtertext"]); 827 828 linkURL.appendChild(linkText); 829 linkURL.href = toolsObjects[i]["url"]; 830 if(toolsObjects[i]["isnewwindow"]){ 831 linkURL.setAttribute("target", "_blank"); 832 } 833 linkButtonDiv.appendChild(linkURL); 834 835 iDiv.appendChild(linkImageDiv); 836 iDiv.appendChild(linkButtonDiv); 837 modalbody.appendChild(iDiv) 838 } 839}; 840 841 842function fnBrowserDetect(){ 843 844 let userAgent = navigator.userAgent; 845 let browserName; 846 847 if(userAgent.match(/chrome|chromium|crios/i)){ 848 browserName = "chrome"; 849 }else if(userAgent.match(/firefox|fxios/i)){ 850 browserName = "firefox"; 851 } else if(userAgent.match(/safari/i)){ 852 browserName = "safari"; 853 }else if(userAgent.match(/opr\//i)){ 854 browserName = "opera"; 855 } else if(userAgent.match(/edg/i)){ 856 browserName = "edge"; 857 }else{ 858 browserName="No browser detection"; 859 } 860 861 return browserName; 862 } 863 864 865</script>
865 866 867 868 869 870 871 <!-- add anti-forgery token--> 872 <div id="antiforgerytoken" data-url="/_layout/tokenhtml"></div> 873 874 875 <!-- Client Telemetry init if telemetry enabled--> 876
876<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/client-telemetry.bundle-d490766e4f.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/client-telemetry.bundle-d490766e4f.js" type="text/javascript"></script>
876 877 878 879 880 <!-- Client Telemetry Wrapper init --> 881
881<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/client-telemetry-wrapper.bundle-633e70f51b.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/client-telemetry-wrapper.bundle-633e70f51b.js" type="text/javascript"></script>
881 882 883
883<script> 884 window.clientLogWrapper = new ClientLogWrapper(); 885 </script>
885 886
886<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/preform.moment_2_29_4.bundle-750b699ecd.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/preform.moment_2_29_4.bundle-750b699ecd.js" type="text/javascript"></script>
886 887 888 889 890
890<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/pcf-dependency.bundle-805a1661b7.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/pcf-dependency.bundle-805a1661b7.js" type="text/javascript"></script>
890 891 892
892<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/pcf.bundle-60440c37cb.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/pcf.bundle-60440c37cb.js" type="text/javascript"></script>
892 893 894
894<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/pcf-extended.bundle-b0e01b5622.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/pcf-extended.bundle-b0e01b5622.js" type="text/javascript"></script>
894 895 896 897 898 <div id="content-container" class="container wrapper-body" role="main"> 899 <div id="content"> 900 901 902 903 <ul class="nav nav-tabs nav-account" role="tablist" onkeydown="navigation(event)"> 904 <li role="none" class="active"><a role="tab" aria-selected="True" href="javascript:void(0)" aria-label="Sign in" title="Sign in"><span class="fa fa-sign-in" aria-hidden="true"></span> Sign in</a></li> 905 906 <li role="none" class=""> 907 <a role="tab" aria-selected="False" href="/Account/Login/Register" aria-label="Register" title="Register">Register</a> 908 </li> 909 910 <li role="none" class=""><a role="tab" aria-selected="False" href="/Register" aria-label="Redeem invitation" title="Redeem invitation">Redeem invitation</a></li> 911 912 </ul> 913
914<script type="text/javascript"> 915 916 const keyCodes = { 917 END: 35, 918 HOME: 36, 919 LEFT: 37, 920 RIGHT: 39, 921 SPACE: 32 922 }; 923 924 $(document).ready(function () { 925 //make the tabindex='0' for active tab and -1 for others 926 $(".nav.nav-tabs.nav-account > li > a").attr("tabindex", "-1"); 927 $(".nav.nav-tabs.nav-account > li > a").attr("aria-selected", "false"); 928 $(".nav.nav-tabs.nav-account > li.active > a").attr("tabindex", "0"); 929 $(".nav.nav-tabs.nav-account > li.active > a").trigger("focus"); 930 $(".nav.nav-tabs.nav-account > li.active > a").attr("aria-selected", "true"); 931 }); 932 933 function navigation(e) 934 { 935 //change tabindex dynamically for all the tabs on key press of left-right navigation keys or home/end keys 936 var tabs = $(".nav.nav-tabs.nav-account > li > a"); 937 if (e.keyCode === keyCodes.END || e.keyCode === keyCodes.HOME || e.keyCode === keyCodes.LEFT || e.keyCode === keyCodes.RIGHT) { 938 var currentTab = $(document.activeElement); 939 for (index = 0; index < tabs.length; index++) { 940 if ($(tabs[index]).text() === currentTab.text()) { 941 e.keyCode === keyCodes.LEFT || e.keyCode === keyCodes.END ? (index == 0 || e.keyCode === keyCodes.END ? $(tabs[tabs.length - 1]).trigger("focus") : 942 $(tabs[index - 1]).trigger("focus")) : (index == (tabs.length - 1) || e.keyCode === keyCodes.HOME ? $(tabs[0]).focus() : $(tabs[index + 1]).trigger("focus")); 943 } 944 } 945 } 946 //open tab on click of SPACE key 947 if (e.keyCode == keyCodes.SPACE) { 948 e.preventDefault(); 949 $(document.activeElement)[0].click(); 950 tabs.attr("tabindex", "-1").attr("aria-selected", "false"); 951 } 952 } 953</script>
953 954 955 956 <div class="page-content" id="mainContent"> 957 958 <div class="xrm-editable-html xrm-attribute page-copy" data-languageContext="English"><div class="xrm-attribute-value">
958<script> 959 $("body").hide(); 960// see if we can auto trigger sign in button when going to this page. 961 $(document).ready(function() { 962 $("#external-login-heading").hide(); 963 964 //$("#content-container").removeClass("wrapper-body"); 965 $("#content-container").addClass("externalSignInBackground"); 966 967 $(".col-md-6").attr("class", "col-md-12"); 968 $(".form-horizontal").attr("style","display: flex;flex-direction: column;align-items: center;flex-wrap: wrap;align-content: center;justify-content: center;"); 969 var azureadbuttontext = "My University student account"; 970 var azureb2cbuttontext = "Email or social account"; 971 972 var azureadbutton = $('button[title="Sign in with your '+azureadbuttontext+' account."]'); 973 var azureb2cbutton = $('button[title="Sign in with your '+azureb2cbuttontext+' account."]'); 974 //var azureb2cbutton2 = $('button[title="Sign in with your '+azureb2cbuttontext+' account."]'); 975 976 azureadbutton.text("").append('<img class="signinbuttonimg" src="~/icons/source_verified-user.svg" /><span style="padding-left:10px;">'+azureadbuttontext+'</span>'); 977 azureadbutton.attr('title', azureadbuttontext); 978 azureadbutton.addClass("aVuwColor signinbutton"); 979 azureb2cbutton.text("").append('<img class="signinbuttonimg2" src="~/icons/source_icons_mail-opened.svg" /><img class="signinbuttonimg2" src="~/icons/icon_google.png" /><img class="signinbuttonimg2-withoutmargin" src="~/icons/icon_facebook.png" /><br/><span>'+azureb2cbuttontext+'</span>').button(); 980 azureb2cbutton.attr('title', azureb2cbuttontext); 981 azureb2cbutton.addClass("aVuwColor signinbutton"); 982 983 $('<div id="titleheader" class="signintitle"/>').insertBefore(azureadbutton); 984 985 $('<span class="pageMaoriTitle1">Whakaurua</span><br><span class="pageTitleEnglish1">Log in</span><br><br>').appendTo($('#titleheader')) 986 987 $('<div id="actionDiv" class="signinbody"/>').appendTo($(".form-horizontal")); 988 989 $('<span class="pageTitleEnglish2 signinsubtitle" id="signinsubtitle">Log in with</span>').appendTo("#actionDiv"); 990 azureadbutton.appendTo("#actionDiv"); 991 azureadbutton.attr("style","width:85%;"); 992 azureb2cbutton.appendTo("#actionDiv"); 993 azureb2cbutton.attr("style","width:85%;"); 994 995 $('<p class="pageTitleEnglish2 signinsubtitle" id="signinsubtitle2" style="text-align: center;padding-bottom: 0px;">New to the University? <br/><span style="font-size:1rem;">Register for an account using a method below:</span></p>').insertBefore(azureb2cbutton); 996 997 998 999 1000 1001 $('<a class="linkButton aVuwColor redeembutton" style="background-color: #CCDCD7;margin-top:25px;" href="/Register" target="_self">Received an invitation? Redeem it now ></a>').insertAfter(azureb2cbutton); 1002 1003 1004 $('<a class="linkButton aVuwColor redeembutton" style="background-color: #CCDCD7;margin-top:25px;" href="https://agent-partner.wgtn.ac.nz/" target="_self">Applying as an international agent or partner?</a>').insertAfter(azureb2cbutton); 1005 1006 1007 var azureb2cbutton2 = azureb2cbutton.clone(); 1008 azureb2cbutton2.insertBefore($("#signinsubtitle2")); 1009 1010 $(".nav").hide(); 1011 $('button').show(); 1012 $("body").show(); 1013 }); 1014</script>
1014 1015<style> 1016 body { 1017 background-image: url("/icons/ExternalSignInBackground.jpg"); 1018 background-size: cover; 1019 1020 padding-bottom: 0px; 1021 1022 } 1023 1024 footer{ 1025 /*position: absolute!important;*/ 1026 bottom: 0; 1027 width: 100%; 1028 } 1029 .footerContentPhoneNumb { 1030 width: 120px; 1031 } 1032 @media (min-width: 768px) { 1033 body{ 1034 background-image: url("/icons/ExternalSignInBackground.jpg"); 1035 } 1036 1037 footer{ 1038 /*position: absolute!important;*/ 1039 bottom: 0; 1040 width: 100%; 1041 } 1042 } 1043 1044 1045 1046</style> 1047</div></div> 1048 1049 1050 1051 <div class="row"> 1052 1053 <div class="col-md-6"> 1054 1055 1056<form action="/Account/Login/ExternalLogin" method="post"> 1057<input name="__RequestVerificationToken" type="hidden" value="vgeSGzrdQDH-Q6UjaCXJy60oYeFh5p1Cr7otKCkP0Va2naNiEZWHtUcraQMNNgF8cIv9yVSaTQKnEvxoRxnNPxdoFlS9taUFSOGZga--K-41" /> 1058<div class="form-horizontal"> 1059 <!-- Check if external login is enabled --> 1060 <h2 class="login-heading-section" id="external-login-heading"> 1061 <span class="xrm-editable-text xrm-attribute"><span class="xrm-attribute-value-encoded xrm-attribute-value">Sign in with an external account</span></span> 1062 </h2> 1063 <div aria-describedby="loginValidationSummary" aria-label="Sign in failed." class="validation-summary-valid listStyleTypeNone alert alert-block alert-danger" data-valmsg-summary="true" id="loginValidationSummary" tabindex="0"><ul><li style="display:none"></li> 1064</ul></div> 1065 <div id="4_ctl00_AzureADRebrandDisclaimer"> 1066 1067</div> 1068 1069 1070 1071 <button 1072 name="provider" type="submit" class="btn btn-primary btn-line" 1073 id="https://login.wgtn.ac.nz/tfp/0bbbb963-9f90-4de8-b34f-34346004d86a/B2C_1A_VUW_S1_SIGNUP_SIGNIN_PORTAL/v2.0/" 1074 title="Sign in with your Email or social account account." 1075 value="https://login.wgtn.ac.nz/tfp/0bbbb963-9f90-4de8-b34f-34346004d86a/B2C_1A_VUW_S1_SIGNUP_SIGNIN_PORTAL/v2.0/">Email or social account 1076 </button> 1077 1078 <button 1079 name="provider" type="submit" class="btn btn-primary btn-line" 1080 id="https://login.windows.net/cfe63e23-6951-427e-8683-bb84dcf1d20c/" 1081 title="Sign in with your My University student account account." 1082 value="https://login.windows.net/cfe63e23-6951-427e-8683-bb84dcf1d20c/">My University student account 1083 </button> 1084 1085 1086</div> 1087</form> 1088 1089 </div> 1090 1091 </div> 1092
1092<script type="text/javascript"> 1093 $(document).ready(function () { 1094 document.querySelector('title').innerHTML = ($('.nav-tabs > li.active').text() + " | Pūaha | Victoria University of Wellington"); 1095 shell.refreshToken(); 1096 }); 1097</script>
1097 1098 1099 </div> 1100 1101 </div> 1102 </div> 1103 1104 1105
1105<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/pcf-loader.bundle-f4a0e619b8.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/pcf-loader.bundle-f4a0e619b8.js" type="text/javascript"></script>
1105 1106 1107 1108 1109 1110 1111 1112 <div id="pp-native-controls-react-root"></div>
1113<script>window._nativeControlConfig = { "publicPath":"https://content.powerapps.com/resource/powerappsportal/controls", "versions": {"pcf_loader":"0.0.51","pcf_controls":"3.24.8","mf_shared":"0.2.32","host":"0.15.1","data_grid":"1.12.3","controls_fluent_v9":"0.0.54"}, "pvaEmbedded": { "defaultWidgetMode": "normal", "useCustomTypingIndicator": false, "skipSingleBotWelcomeScreen": false } }</script>
vendor: 1 bytes, line 1113
1113
1114<script defer="defer" src="https://content.powerapps.com/resource/powerappsportal/controls/host/main.3ee2491f78.chunk.js"></script>
1114 1115 1116 1117 1118 <footer role="contentinfo"> 1119 <div class="footer-bottom hidden-print"> 1120 <div class="container"> 1121 <div class="row"> 1122 <div class="col-md-4 col-sm-12 col-xs-12"style="width: auto;" > 1123 <img alt="Victoria University of Wellington Student Portal" /> 1124 </div> 1125 <div class="col-md-8 col-sm-11 col-xs-11 footerContent"> 1126 <div class="col-md-6 col-sm-6 col-xs-6 footerContentPhoneNumbs"> 1127 <div class="footerContentPhoneNumb"> 1128 <a href='mailto:[email protected]'><u>Contact us</u></a> 1129 </div> 1130 <div class="footerContentPhoneNumb"> 1131 <a href = "tel:0800040404"> 0800 04 04 04</a> 1132 </div> 1133 <div class="footerContentPhoneNumb"> 1134 <a href = "tel:6444721000"> +64 4 472 1000</a> 1135 </div> 1136 1137 </div> 1138 <div class="col-md-6 col-sm-6 col-xs-6"> 1139 Emergency: <a href= "tel:6444639999"><b>+64 4 463 9999</b></a> or ext. 8888 (internal) 1140 </div> 1141 </br> 1142 <div class="col-md-12"> 1143 By using our systems you agree to the Universityâs <a href="https://www.wgtn.ac.nz/site-info/privacy" target="_blank"><u>privacy notice</u></a> and <a href="https://www.wgtn.ac.nz/about/governance/policy/policies" target="_blank"><u>applicable policies</u></a>. 1144 </div> 1145 </div> 1146 </div> 1147 <!--<div class="row"> 1148 <div class="col-md-8 col-sm-11 col-xs-11"> 1149 <a href="https://www.wgtn.ac.nz/site-info/privacy">Privacy</a> 1150 </div> 1151 </div> 1152 <div class="row"> 1153 <div class="col-md-11 col-sm-12 col-xs-12 text-right"> 1154 <div class="xrm-editable-html xrm-attribute" data-languageContext="English"><div class="xrm-attribute-value"><p>Copyright © Victoria University of Wellington, New Zealand</p> 1155 1156 1157</div></div> 1158 </div> 1159 1160 </div> 1161 </div>--> 1162 </div> 1163</footer> 1164 1165
1166<script type="text/javascript" src="/f5common.js?v=2026-09-24T08:27:35Z" ></script>
1166
1167<script type="text/javascript" src="/intlTelInput.min.js?v=2026-09-24T08:27:35Z" ></script>
1167
1168<script class="iti-load-utils" async="" src="/utils.js?v=2026-09-24T08:27:35Z"></script>
1168
1169<script type="text/javascript" src="/moment-timezone-with-data-10-year-range.js?v=2026-09-24T08:27:35Z"></script>
1169 1170 1171<!--
1171<script src="https://maps.googleapis.com/maps/api/js?libraries=places&language=en&key=AIzaSyBfd6SSxekdva-kVGk2zJh_PFR0dyYt3Ag"></script>
1171 1172console.log(moment.utc()); 1173console.log(moment.tz(moment.utc(),"NZ").format("YYYY-MM-DD HH:mm:ss")); 1174--> 1175
1176<script type="text/javascript"> 1177 (function ($) { 1178 $(document).ready(function () { 1179 $(".dropdown-submenu").on("keydown", function (event) { 1180 if (event.keyCode == 9) { 1181 $(this).toggleClass("open"); 1182 } 1183 }); 1184 1185 $("body").on("click",function(event){ 1186 let tgt = $(event.target); 1187 let sipop = tgt.closest("#signedInPopup"); 1188 let npop = tgt.closest("#notificationsPopup"); 1189 if(tgt.prop("id") !== "signedInPopup" && sipop.length === 0){ 1190 if($('#signedInPopup').hasClass("open")){ 1191 $('#signedInPopup').hide('slow').removeClass("open"); 1192 } 1193 } 1194 1195 if(tgt.prop("id") !== "notificationsPopup" && npop.length === 0){ 1196 if($('#notificationsPopup').hasClass("open")){ 1197 $('#notificationsPopup').hide('slow').removeClass("open"); 1198 } 1199 } 1200 }); 1201 1202 1203 }); 1204 }(jQuery)); 1205 1206 1207 function showLoader(show){ 1208 if($(".overlay").length === 0) { 1209 $("body").append($("<div>",{ class: "overlay"})); 1210 var spanner = $("<div>",{ class: "spanner"}); 1211 spanner.append($("<div>",{ class: "loader"})); 1212 spanner.append($("<p>",{ id: "loader-text", text:"Please wait."})); 1213 $("body").append(spanner); 1214 } 1215 1216 if(show){ 1217 $("div.spanner,div.overlay").addClass("show"); 1218 } else { 1219 $("div.spanner,div.overlay").removeClass("show"); 1220 } 1221 } 1222 1223 1224</script>
1224 1225 1226 1227
1227<script type="text/javascript"> 1228 1229 function trackCopilotCustomUsage(botSchema) { 1230 const request = { 1231 botSchemaName: botSchema 1232 } 1233 var json = JSON.stringify(request); 1234 shell.ajaxSafePost({ 1235 type: "POST", 1236 contentType: "application/json", 1237 url: "/_services/copilot/TrackUsage", 1238 data: json 1239 }).done(function () { 1240 }).fail(function (jqXhr) { 1241 }); 1242 } 1243 1244 function findAndLogCustomCopilotUsage() { 1245 const pageSource = document.documentElement.outerHTML; 1246 const customPvaBotWebchatRegex = /api\.(preprod\.|test\.)?powerplatform\.(com|us|cn|appsplatform\.us)\/powervirtualagents\/botsbyschema\/([^/]+)\/directline\/token/; 1247 const customPvaBotIframeRegex = /powerva\.microsoft\.com\/environments\/([0-9a-fA-F\-]+)\/bots\/([^/]+)\/webchat/; 1248 const omniChannelRegex = /livechatwidget\/scripts\/LiveChatBootstrapper\.js/; 1249 1250 const matchPvaBotWebchat = pageSource.match(customPvaBotWebchatRegex); 1251 if (matchPvaBotWebchat && matchPvaBotWebchat[3]) { 1252 trackCopilotCustomUsage(matchPvaBotWebchat[3]); 1253 } 1254 1255 const matchPvaBotIframe = pageSource.match(customPvaBotIframeRegex); 1256 if (matchPvaBotIframe && matchPvaBotIframe[2]) { 1257 trackCopilotCustomUsage(matchPvaBotIframe[2]); 1258 } 1259 1260 const matchOmniChannel = pageSource.match(omniChannelRegex); 1261 if (matchOmniChannel && matchOmniChannel[0]) { 1262 trackCopilotCustomUsage("omnichannelWidget"); 1263 } 1264 } 1265 1266 window.addEventListener("load", function () { 1267 findAndLogCustomCopilotUsage(); 1268 }); 1269 </script>
1269 1270 1271 1272 1273 1274 1275 1276 1277
1277<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/bootstrap.bundle-105a4995b8.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/bootstrap.bundle-105a4995b8.js" type="text/javascript"></script>
1277 1278 1279
1279<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/postpreform.bundle-4687dda8df.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/postpreform.bundle-4687dda8df.js" type="text/javascript"></script>
1279 1280 1281
1281<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/app.bundle-1e948af604.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/app.bundle-1e948af604.js" type="text/javascript"></script>
1281 1282 1283
1283<script onerror="javascript: var target = event.target; var script = document.createElement('script'); script.crossOrigin = target.crossOrigin; script.src = '/dist/default-1033.moment_2_29_4.bundle-eda4e638fd.js'; script.type = 'text/javascript'; target.insertAdjacentElement('afterend',script);" src="https://content.powerapps.com/resource/powerappsportal/dist/default-1033.moment_2_29_4.bundle-eda4e638fd.js" type="text/javascript"></script>
1283 1284 1285 1286 1287 1288 1289
1289<script type="text/javascript"> 1290!function(T,l,y){var S=T.location,k="script",D="instrumentationKey",C="ingestionendpoint",I="disableExceptionTracking",E="ai.device.",b="toLowerCase",w="crossOrigin",N="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"5",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[b](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,u,p,l;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");
12902===i.length&&(e[i[0][b]()]=i[1])}if(!e[C]){var r=e.endpointsuffix,o=r?e.location:null;e[C]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[D]||d[D]||"",u=s[C],p=u?u+"/v2/track":d.endpointUrl,(l=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=p,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),l.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,p)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:N,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(N,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(l,p))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(k);n.src=h;var e=y[w];return!e&&""!==e||"undefined"==n[w]||(n[w]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(k)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[I]&&!0!==s[I]){var c="onerror";t(["_"+c]);var u=T[c];T[c]=function(e,t,n,a,i){var r=u&&u(e,t,n,a,i);return!0!==r&&m["_"+c]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);function a(){y.onInit&&y.onInit(n)}(T[t]=n).queue&&0===n.queue.length?(n.queue.push(a),n.trackPageView({})):a()}(window,document,{ 1291src: "https://js.monitor.azure.com/scripts/b/ai.2.min.js", // The SDK URL Source 1292// name: "appInsights", // Global SDK Instance name defaults to "appInsights" when not supplied 1293// ld: 0, // Defines the load delay (in ms) before attempting to load the sdk. -1 = block page load and add to head. (default) = 0ms load after timeout, 1294// useXhr: 1, // Use XHR instead of fetch to report failures (if available), 1295crossOrigin: "anonymous", // When supplied this will add the provided value as the cross origin attribute on the script tag 1296// onInit: null, // Once the application insights instance has loaded and initialized this callback function will be called with 1 argument -- the sdk instance (DO NOT ADD anything to the sdk.queue -- As they won't get called) 1297onInit: function(appInsights) { 1298 1299 appInsights.clearAuthenticatedUserContext(); 1300 1301 }, 1302cfg: { // Application Insights Configuration 1303 instrumentationKey: "7257eebc-d2fe-43c7-af4d-e9c6b08fd777" 1304}}); 1305</script>
1305 1306
1306<script> 1307 //this event will update the title of the page based on active breadcrumb 1308 $('.breadcrumb').ready(function () { 1309 if ($('.breadcrumb').is(':visible')) { 1310 document.querySelector('title').innerHTML = ($('.breadcrumb > li.active').text() + " | Pūaha | Victoria University of Wellington"); 1311 } 1312 }); 1313 1314 function GoToNewEditor() { 1315 var editCmsUrlSegment = "EditInCms"; 1316 var currentUrl = window.location.href; 1317 if (currentUrl.indexOf('?') > -1) { 1318 var urlSegments = currentUrl.split("?"); 1319 window.location.href = window.location.origin + '/' + editCmsUrlSegment + window.location.pathname + '?' + urlSegments[1]; 1320 } 1321 else { 1322 window.location.href = window.location.origin + '/' + editCmsUrlSegment + window.location.pathname; 1323 } 1324 } 1325 </script>
1325 1326 1327 1328 1329 1330 1331
1331<script> 1332 if ('serviceWorker' in navigator) { 1333 navigator.serviceWorker.getRegistrations().then(function (registrations) { 1334 for (let registration of registrations) { 1335 registration.unregister(); 1336 } 1337 }).catch(function (err) { 1338 console.log('Service Worker unregister action failed: ', err); 1339 }); 1340 } 1341 </script>
1341 1342 1343 1344 1345 <!--Start Show Session Expire Warning Popup here --> 1346 1347 1348</body> 1349</html> 1350<!-- Generated at 9/24/2026 8:27:35 AM --> 1351<!-- Page OK -->
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.