CINXE.COM
Course Detail | Myskillsfuture.gov.sg
<!DOCTYPE html> <html lang="en"> <head> <!-- <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0" /> --> <meta charset="utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge"/> <meta content="width=device-width, initial-scale=1.0" name="viewport"/> <!-- Will override in child template --> <meta http-equiv="cache-control" content="max-age=0"/> <meta http-equiv="cache-control" content="no-cache"/> <meta http-equiv="expires" content="0"/> <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT"/> <meta http-equiv="pragma" content="no-cache"/> <meta name="keywords"/> <meta name="description" content="Search for SkillsFuture Credit-eligible courses in the course directory. Bookmark courses you are interested in to easily access them post-login."/> <!-- Schema.org markup for Google+ --> <meta itemprop="name" content="Course Detail | Myskillsfuture.gov.sg"/> <meta itemprop="description" content="Search for SkillsFuture Credit-eligible courses in the course directory. Bookmark courses you are interested in to easily access them post-login."/> <meta itemprop="image" content="https://www.myskillsfuture.gov.sg/content/dam/portal/social/skillsfuture_fb_1200by630_w.jpg"/> <!-- Twitter card data --> <meta name="twitter:card" content="summary_large_image"/> <meta name="twitter:site" content="@SkillsFutureSG"/> <meta name="twitter:title" content="Course Detail | Myskillsfuture.gov.sg"/> <meta name="twitter:description" content="Search for SkillsFuture Credit-eligible courses in the course directory. Bookmark courses you are interested in to easily access them post-login."/> <meta name="twitter:creator" content="@SkillsFutureSG"/> <!-- Twitter summary card with large image must be at least 280x150px --> <meta name="twitter:image:src" content="https://www.myskillsfuture.gov.sg/content/dam/portal/social/skillsfuture_fb_1200by630_w.jpg"/> <!-- Open graph data --> <meta property="og:type" content="website"/> <meta property="og:title" content="Course Detail | Myskillsfuture.gov.sg"/> <meta property="og:description" content="Search for SkillsFuture Credit-eligible courses in the course directory. Bookmark courses you are interested in to easily access them post-login."/> <meta property="og:url" content="https://www.myskillsfuture.gov.sg/content/portal/en/training-exchange/course-directory/course-detail.html"/> <meta property="og:image" content="https://www.myskillsfuture.gov.sg/content/dam/portal/social/skillsfuture_fb_1200by630_w.jpg"/> <meta property="og:image" content="https://www.myskillsfuture.gov.sg/content/dam/portal/social/skillsfuture_fb_200by200_w.jpg"/> <!-- Google Sign In --> <meta name="google-signin-client_id" content="138989246253-3rgkq9hpgcf2s1donoe66u58danb9icv.apps.googleusercontent.com.apps.googleusercontent.com"/> <link rel="icon" href="/favicon.ico"/> <title>Course Detail | Myskillsfuture.gov.sg</title> <script> //The scope of this file is to create global variables and function that are available in all pages. //Do not override this file in the child pages. Becareful on the variable name and also the variable //Secure Cookie Vulnerability //Function to check if need to set secure flag for client side cookies. function GetSecureCookieFlag(){ var securityProtocol=""; if(location && location.protocol == "https:"){ securityProtocol=";secure"; } return securityProtocol; } //Boolean Function to check if need to set secure flag for client side cookies. function CheckSecureCookieFlag(){ var securityProtocol=false; if(location && location.protocol == "https:"){ securityProtocol=true; } return securityProtocol; } </script> <!-- <sly data-sly-include="/libs/wcm/core/components/init/init.jsp" data-sly-unwrap/> --> <script src="/etc.clientlibs/clientlibs/granite/jquery.min.js"></script> <script src="/etc.clientlibs/clientlibs/granite/utils.min.js"></script> <script src="/etc.clientlibs/clientlibs/granite/jquery/granite.min.js"></script> <script src="/etc.clientlibs/foundation/clientlibs/jquery.min.js"></script> <script src="/etc/clientlibs/msf/core-base/csrfheader.min.js"></script> <script src="/etc.clientlibs/clientlibs/granite/jquery/granite/csrf.min.js"></script> <script src="/etc/clientlibs/granite/jquery/granite/csrf.min.js"></script> <link rel="stylesheet" href="/etc/clientlibs/msf/core-base/Workforce-v3-course-detail.min.css" type="text/css"> <script src="/etc/clientlibs/msf/core-base/Workforce-v3-course-detail.min.js"></script> <link rel="stylesheet" href="/etc/clientlibs/msf/core-base/V3-ui-course-detail.min.css" type="text/css"> <link rel="stylesheet" href="/etc/clientlibs/msf/core-modules/tex/individual.min.css" type="text/css"> <!-- This will be overrided by child --> <!-- Will override in child template --> <script type="text/javascript" src="//cdn.evgnet.com/beacon/skillsfuturesingapore/ssg_prod/scripts/evergage.min.js"/> <style id="antiClickjack">body{display:none !important;}</style> <script type="text/javascript"> if (self === top) { var antiClickjack = document.getElementById("antiClickjack"); antiClickjack.parentNode.removeChild(antiClickjack); } else { top.location = self.location; } </script> <script type="text/javascript"> /* var tx_analytics_AOT = decodeURIComponent(RequestUtil.getURLParameter('areaOfTraining')) || ''; var tx_analytics_refNum = decodeURIComponent(RequestUtil.getURLParameter('courseReferenceNumber')) || ''; var tx_analytics_courseTitle = decodeURIComponent(RequestUtil.getURLParameter('courseTitle')) || ''; if (tx_analytics_AOT && tx_analytics_AOT.indexOf('&')) { tx_analytics_AOT = tx_analytics_AOT.replace('&', 'and'); } */ var digitalData = { page: { pillar: "Training Exchange", audience: "Individuals", type: "detail" // optional }, user: { // optional, for logged in users only id: '294de3557d9d00b3d2d8a1e6aab028cf' // ID is from the backend user database } }; </script> <script src="//assets.adobedtm.com/7354f1c0c20b/d6ddc6e14c09/launch-f3038b0e7b74.min.js"></script> <script src="https://assets.wogaa.sg/scripts/wogaa.js"></script> <meta http-equiv="Content-Security-Policy" content="default-src https: 'unsafe-eval' 'unsafe-inline'; object-src 'none'; img-src * data:"/> </head> <body class="v3 page course-detail-v3"> <input id="portalContextPath" type="hidden"/> <link rel="stylesheet" href="/etc/clientlibs/msf/core-base/header-footer-v3-course-detail.min.css" type="text/css"> <script src="/etc/clientlibs/msf/core-base/header-footer-v3-course-detail.min.js"></script> <header id="mysf-header-v3" class="fixed-top bootstrap-v3 screen-v3" data-bind="showHide : isHeaderPopulated()"> <div class="header-alert-holder"> <!-- Note: This implementation is done purely on the html page due to following. 1. To optimise page loading speed by retaining the logic at client side. 2. To work around Cloud Front caching, Dispatcher caching and Local Browser caching 3. To reuse the component across various portal's from 1 single source. Do consider the above before changing. --> <style> .close-cookie{ position: relative; margin-left: 99%; z-index: 11; cursor: pointer; color: #ffffff; top: 2px; font-size: 20px; font-family: 'FontAwesome'; width: 100%; } #cookieDiv .leftBox{ width:98%; } .cookie_message_text{ font-family:"Work Sans", sans-serif; font-size: 16px; color: #fff; width:96%; } .cookie_message_close{ width:0; /* padding-right: 5%; */ /* padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto; */ } .exclamation{ position: relative; z-index: 11; color: #e68717; font-size: 36px; font-family: 'FontAwesome'; width:4%; } fa-exclamation-triangle::before { font-family: 'FontAwesome'; font-weight:normal; line-height: 24px; padding-top: 1px; content: '\f00d'; color: #e68717; } .leftContent{ } .cookieMessageBox{ background-color: #3e3e3e; } #cookieDiv{ background-color: #3e3e3e; height: 50px; bottom:0px; padding-top:10px; position: fixed; z-index: 1051; width: 100%; } @media(max-width:1215px){ #cookieDiv{ height: 80px; } } @media(max-width:662px){ #cookieDiv{ height: 100px; } } </style> <div id="cookieDiv" class="col-xs-12" style="display:none"> <div id="cookieMessageBox" class='clear'> <div class="container"> <div style="float:left" class='leftBox'> <div class="leftContent"> <div class="cookie_message_text" id="cookieMessage"></div> </div> </div> <div class="cookie_message_close"> <span class="close-cookie fa-close" onclick="closeCookieMessage()"></span> </div> </div> </div> </div> <script> var COOKIE={ PORTAL:"MySkillsFuture uses cookies to personalise content for you. By continuing to use this website, you consent to our use of cookies.", TPG:"Training Partners Gateway uses cookies to personalise content for you. By continuing to use this website, you consent to our use of cookies." } function closeCookieMessage() { $('#cookieDiv').hide(); }; $( document ).ready(function() { //Cookie Enable message Logic -- Start var cookieEnabled = navigator.cookieEnabled; if(!cookieEnabled ){ //donot display on mobile apps page try{ var viewSource = RequestUtil.getURLParameter("viewSource"); if (!(viewSource && (viewSource == 'mobileApp'))) { var cookieText = COOKIE.PORTAL; if(window.location.href.indexOf("/content/portal/en/training-provider") >= 0){ cookieText = COOKIE.TPG; } $('.cookie_message_text').text(cookieText); $('#cookieDiv').show(); } }catch(e){ } } //Cookie Enable message Logic -- End }); </script> <script> var MAINTENANCE={ KEY:"MAIN-2024-11-23-1", //STUDENT:"Course fees after SkillsFuture Funding in course listings will be temporarily unavailable from 23 NOV 2024 11:00 PM to 24 NOV 2024 07:00 AM.", WORKFORCE:"Course fees after SkillsFuture Funding in course listings will be temporarily unavailable from 23 NOV 2024 11:00 PM to 24 NOV 2024 07:00 AM.", //TRAINING_PROVIDER: "<b>Training Partners Gateway</b> will be undergoing scheduled maintenance on the following dates: <b>22 NOV 2024 09:00 PM to 23 NOV 2024 07:00 AM</b>. During this period, the portal will not be available. Thank you for your patience.", UAM:"Course fees after SkillsFuture Funding in course listings will be temporarily unavailable from 23 NOV 2024 11:00 PM to 24 NOV 2024 07:00 AM.", SHOW_MAINTENACE:true, START_TIME: "2017-11-29T00:06:00.000Z", END_TIME: "2024-11-23T23:00:00.000Z" } </script> <style> .maintenancePlaceholder.alert.alert-dark.fade.show { display: flex !important; opacity: 1; z-index: 11; } .maintenancePlaceholder.alert.alert-dark.fade.show.close { display: none !important; } </style> <div class="maintenancePlaceholder alert alert-dark fade show" role="alert" style="display: none !important"> <div class="alert-message flex-fill"> <i class="bi bi-exclamation-circle-fill"></i> <span id="maintenanceMessage"></span> </div> <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close" onclick="closeMessage()"> <i class="bi bi-x"></i> </button> </div> <script> function checkMessageShowstatus(){ var showMessage = true; if(sessionStorage.getItem('curMessageKey')==MAINTENANCE.KEY){ showMessage= false; return showMessage; } if(!MAINTENANCE.SHOW_MAINTENACE){ showMessage=false; return showMessage; } if(getMessage()==null){ showMessage=false; return showMessage; } //donot display on mobile apps page try{ var viewSource = RequestUtil.getURLParameter("viewSource"); if (viewSource && (viewSource == 'mobileApp')) { showMessage=false; return showMessage; } }catch(e){ } /* if other conditions are true check if the date is inbetween the start and end date */ showMessage = checkdateInbetween(); return showMessage; } /* this function checks for if the date is inbetween 2 dates */ function checkdateInbetween(){ var dateInBetween = true; var fromDate; var toDate; var curDate = new Date(); if(typeof DateOverridenFlag !== 'undefined' && DateOverridenFlag==true){ fromDate= new Date(MAINTENANCE.START_TIME,false); toDate= new Date(MAINTENANCE.END_TIME,false); }else{ fromDate= new Date(MAINTENANCE.START_TIME); toDate= new Date(MAINTENANCE.END_TIME); } if(!(curDate.getTime() <= toDate.getTime() && curDate.getTime() >= fromDate.getTime())) { dateInBetween=false; } return dateInBetween; } function closeMessage() { //add messageKey to local storage sessionStorage.setItem("curMessageKey",MAINTENANCE.KEY); //close the message $('.maintenancePlaceholder').hide(); //if(window.location.href.indexOf("/content/portal/en/training-provider") >= 0){ $('#spaceMaintenance').css('padding-top','0px'); //} setTimeout(function(){ $(window).trigger('resize'); }, 100); }; function getMessage(){ if(window.location.href.indexOf("/content/student") >= 0){ return MAINTENANCE.STUDENT; } else if(window.location.href.indexOf("/content/portal/en/training-provider") >= 0){ return MAINTENANCE.TRAINING_PROVIDER; } else if(window.location.href.indexOf("/uam") >= 0){ return MAINTENANCE.UAM; } else{ return MAINTENANCE.WORKFORCE; } return null; } $( document ).ready(function() { $('.maintenancePlaceholder').hide(); $('.maintenancePlaceholder').addClass('close'); if(sessionStorage.getItem("curMessageKey") !=MAINTENANCE.KEY){ var returnStatus = checkMessageShowstatus(); if(!returnStatus){ MAINTENANCE.SHOW_MAINTENACE=false; $('#displayMessage').html(""); $('#mainDiv').hide(); $('.maintenancePlaceholder').hide(); $('.maintenancePlaceholder').addClass('close'); }else{ $('.maintenancePlaceholder').removeClass('close'); $('.maintenancePlaceholder').show(); $('#maintenanceMessage').html(getMessage()); setTimeout(function(){ $(window).trigger('resize'); }, 200); } if(window.location.href.indexOf("student") > -1 != true){ // except student pages var splashScreenFlag = CookieStorage.cookieStorage(CookieConstants.COOKIE_SPLASH_SCREEN_FLAG) || ''; if (splashScreenFlag && splashScreenFlag === 'true') { $('#splashscreen').modal('show'); CookieStorage.removeCookieStorageWithPath(CookieConstants.COOKIE_SPLASH_SCREEN_FLAG,'/content'); } } } //$(window).trigger('resize'); }); if(_satellite == null){ var _satellite = { pageBottom : function(rawUrl) { console.log('analytics not loaded'); }, track : function(rawUrl){ console.log('analytics not loaded'); } } } var MODSEC_PARAMS = { RESTRICTED_KEYWORDS:["coalesce","root@"], REPLACEMENT_CHARACTERS:"_" } function modSecSanitiseAgainstSingleItem(value,singleItem,replacementCharacter){ var returnValue = value; if(singleItem && replacementCharacter && value && value.toLowerCase().indexOf(singleItem.toLowerCase()) >-1){ var regex = new RegExp(singleItem , "ig"); returnValue=value.replace(regex, value.split(" ")[value.toLowerCase().indexOf(singleItem.toLowerCase())]+replacementCharacter); } return returnValue; } function modSecSanitiseAgainstArray(value,arrayList,replacementCharacter){ var returnValue = value; if(value && arrayList && arrayList.length>0){ arrayList.forEach(function(element) { returnValue = modSecSanitiseAgainstSingleItem(returnValue,element,replacementCharacter); }); } return returnValue; } // if(null!=digitalData && digitalData.organisation && digitalData.organisation.name){ // digitalData.organisation.name = modSecSanitiseAgainstArray(digitalData.organisation.name,MODSEC_PARAMS.RESTRICTED_KEYWORDS,MODSEC_PARAMS.REPLACEMENT_CHARACTERS); // } try{ $.ajaxSetup({contents: {script: false}}); }catch(e){ } </script> </div> <!-- start - Inclusion of SGDS script for Masthead banner --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@govtechsg/sgds-masthead/dist/sgds-masthead/sgds-masthead.css"/> <script type="module" src="https://cdn.jsdelivr.net/npm/@govtechsg/sgds-masthead/dist/sgds-masthead/sgds-masthead.js"> </script> <div class="masthead-placeholder" style="min-height: 32px;"> <sgds-masthead fluid></sgds-masthead> </div> <script> $(document).ready(function() { const mastHeadBanner = document.querySelector('.masthead-placeholder'); mastHeadBanner.addEventListener('click', function() { console.log('First click event listener'); setTimeout(function(){ $(window).trigger('resize'); }, 100); }); }); </script> <!-- <div class="masthead-layout d-flex"> <div class="masthead-text-size-change "> <span>Change Text Size:</span> <a href="#" onclick="javascript:zoomOut(event);"><small>A-</small></a> <a href="#" onclick="javascript:zoomIn(event);">A+</a> </div> </div> --> <!-- <div id="sgds-masthead" class="sgds-masthead" aria-label="A Singapore Government Agency Website"> <div class="sgds-masthead-banner"> <div class="container-fluid"> <div class="masthead-layout"> <div class="masthead-govt-crest flex-fill"> <span style="cursor: pointer;" data-bind="click : function() { $root.iconClick($root.mastheadUrl(),'_blank') }" class="sgds-icon sgds-icon-sg-crest text-decoration-none"></span> <div style="cursor: pointer;" data-bind="click : function() { $root.iconClick($root.mastheadUrl(),'_blank') }" class="is-text">A Singapore Government Agency Website</div> </div> <div class="masthead-text-size-change"> <span>Change Text Size:</span> <a href="#" onclick="javascript:zoomOut(event);"><small>A-</small></a> <a href="#" onclick="javascript:zoomIn(event);">A+</a> </div> </div> </div> --> <!-- end - Inclusion of SGDS script for Masthead banner --> <div class="header-holder" id="mainHeader"> <div class="container-fluid"> <div class="d-flex align-items-center"> <div class="navbar-brand header-logo-holder" data-title="Welcome!" data-intro="Take a short tour of the MySkillsFuture Portal.<br/>Click 'Next' to proceed." data-step="1"> <a href="/content/portal/en/index.html" class="text-decoration-none stretched-link"> <!-- <img src="/etc/clientlibs/msf/core-base/V3-ui-course-detail/images/myskillsfuture-color.webp" alt="MySkillsFuture logo"> --> <img src="/etc/clientlibs/msf/core-base/V3-ui-course-detail/images/myskillsfuture-color.webp" alt="MySkillsFuture"/> </a> </div> <div class="header-nav-holder flex-fill"> <div class="navbar-menu"> <!-- Remove explore dropdown header --> <!-- <div class="explore-dropdown-header"> <div class="container-xxl"> <div class="explore-dropdown-header-content"> <div class="d-flex flex-fill"></div> <button type="button" class="btn-close"></button> </div> </div> </div> --> <div class="mobile-search-holder collapse" id="globalSearch" data-bs-parent="#mainHeader"> <div class="container-xxl"> <div class="input-group global-search-bar"> <input id="global-search-header-searchbar" type="text" class="form-control global-search header-search" placeholder='Include " " for better search results, e.g. "data security"' data-bind="jqAuto: { source: $PORTAL_SEARCH.remoteHandler, value : $PORTAL_SEARCH.portalSearchKeyword, labelProp : 'parameter', valueProp: 'parameter', options: { html:true, delay:250, minLength : 3 , select : function(data, event) { }} }, valueUpdate: 'afterkeydown', value : $PORTAL_SEARCH.portalSearchKeyword, executeOnEnter : function() { $PORTAL_SEARCH.searchPortalArticles(document.getElementById('global-search-header-searchbar').value)}"/> <div class="input-group-append"> <a rel="nofollow" href="#" class="clear-search animated" aria-label="Clear search bar"> <span class="sgds-icon sgds-icon-cross clear-global-search"></span> </a> <button class="btn btn-primary" type="button" data-bind="click : function() { $PORTAL_SEARCH.searchPortalArticles(document.getElementById('global-search-header-searchbar').value) }"> <i class="sgds-icon sgds-icon-search"></i> <span>Search</span> </button> </div> </div> </div> <div class="search-suggestions recent-popular-results"> <div class="container-xxl"> <div data-bind="foreach : $PORTAL_SEARCH.getRecentSearches()"> <h6 class="my-2" data-bind="text: category"></h6> <ul data-bind="foreach : searches"> <li> <a href="#"> <i class="material-icons-outlined">history</i> <span data-bind="text: title, click :function() { $PORTAL_SEARCH.navigateRecentSearch(url);}"></span> </a> </li> </ul> </div> <h6 class="my-2">Popular Searches</h6> <ul data-bind="foreach : $PORTAL_SEARCH.popularSearches()"> <li> <a href="#"> <i class="material-icons-outlined">search</i> <span data-bind="text : keyword,click :function() { $PORTAL_SEARCH.searchPortalArticles(keywordText);}"></span> </a> </li> </ul> </div> </div> <div class="search-suggestions suggestion-results d-none"> <div class="container-xxl"> <div class="autoSuggestInitiatives d-none"> <h6 class="my-2">Initiatives</h6> <ul></ul> </div> <div class="autoSuggestCourses d-none"> <h6 class="my-2">Courses</h6> <ul></ul> </div> <div class="autoSuggestArticles d-none"> <h6 class="my-2">Articles</h6> <ul></ul> </div> </div> </div> </div> <div class="navbar-item active d-none"> <div class="navbar-item-top-level-link"> <a class="navbar-link" rel="nofollow" href="#"> <h6><span>Home</span></h6> </a> </div> </div> <div class="navbar-item nav-header-link navbar-contactus"> <div class="navbar-item-top-level-link"> <a class="navbar-link" href="javascript:$HOME_V3.clickGoToCSP('HOME');"> <h6><span>Careers & Skills Passport</span></h6> </a> </div> </div> <div class="navbar-item nav-header-link navbar-courses"> <div class="navbar-item-top-level-link"> <a class="navbar-link" rel="nofollow" href="#"> <h6> <span>Courses</span> <i class="sgds-icon sgds-icon-chevron-down"></i> </h6> </a> <button class="mobile-collapse-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#menuDropdown-03"> <i class="sgds-icon sgds-icon-chevron-down"></i> </button> </div> <div class="navbar-dropdown collapse mega-menu" id="menuDropdown-03"> <div class="container-xxl"> <div class="mega-menu-holder"> <div class="mega-menu-navigation"> <!-- <sly data-sly-use.aot="aot.js"> <div class="row row-cols-1 row-cols-lg-3"> <sly data-sly-list.child=""> <div class="col"> <a href="" class="navbar-item sub-link"></a> </div> </sly> </div> </sly> --> <div class="row row-cols-1 text-center"> <div class="col"> <a href="/content/portal/en/portal-search/portal-search.html" class="navbar-item sub-link">Search Courses</a> </div> <div class="col"> <a href="/content/portal/en/portal-search/portal-search.html?fq=IsValid%3Atrue&q=Tags%3A%22SkillsFuture%20Credit%20(Mid-Career)%22&jumpstart=false" class="navbar-item sub-link">SkillsFuture Credit (Mid-Career) Courses</a> </div> <div class="col"> <a href="/content/portal/en/career-resources/career-resources/education-career-personal-development/use_SFC_for_online_subscriptions_and_courses.html" class="navbar-item sub-link">Online Courses and Subscriptions</a> </div> </div> </div> </div> </div> </div> </div> <!-- <div class="navbar-item nav-header-link navbar-initiatives"> <div class="navbar-item-top-level-link"> <a class="navbar-link" href="/content/portal/en/initiatives/initiatives.html"> <h6><span>Initiatives</span></h6> </a> </div> </div> --> <div class="navbar-item nav-header-link navbar-eservices"> <div class="navbar-item-top-level-link"> <a class="navbar-link" href="/content/portal/en/e-services.html"> <h6><span>E-Services</span></h6> </a> </div> </div> <div class="navbar-item nav-header-link navbar-resources"> <div class="navbar-item-top-level-link"> <a class="navbar-link" rel="nofollow" href="#"> <h6> <span>Resources</span> <i class="sgds-icon sgds-icon-chevron-down"></i> </h6> </a> <button class="mobile-collapse-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#menuDropdown-04"> <i class="sgds-icon sgds-icon-chevron-down"></i> </button> </div> <div class="navbar-dropdown collapse mega-menu" id="menuDropdown-04"> <div class="container-xxl"> <div class="mega-menu-holder"> <div class="mega-menu-navigation"> <div class="row row-cols-1 text-center"> <div class="col"> <a href="/content/portal/en/career-resources/career-resources.html" class="navbar-item sub-link">View Articles</a> </div> <div class="col"> <a href="/content/portal/en/initiatives/initiatives.html" class="navbar-item sub-link">View SkillsFuture Initiatives</a> </div> </div> </div> </div> </div> </div> </div> <!-- <div class="navbar-item nav-header-link navbar-contactus"> <div class="navbar-item-top-level-link"> <a class="navbar-link" href="/content/portal/en/header/faqs/for-further-assistance.html"> <h6><span>Contact Us</span></h6> </a> </div> </div> --> <div class="navbar-item nav-header-link navbar-aboutus"> <div class="navbar-item-top-level-link"> <a class="navbar-link" href="/content/portal/en/about/about-myskillsfuture.html"> <h6><span>About Us</span></h6> </a> </div> </div> </div> </div> <div class="header-actions-holder"> <div class="d-flex align-items-center justify-content-end"> <div class="d-flex"> <!-- ko if: isLoggedIn() --> <!-- ko if: isLoggedIn() && isSingPassLogin() --> <div class="right-action-single-btn d-none d-lg-flex" data-bind="if : isSingPassLogin() && isLoggedIn()"> <span class="badge rounded-pill bg-danger" data-bind="html : $root.notificationsCount()"></span> <button class="sgds btn btn-link" type="button" data-bind="click : function() { $root.iconClick($root.notifications().inboxUrl, '_blank') }"> <i class="fa-regular fa-bell"></i> </button> </div> <div class="right-action-single-btn d-none d-lg-flex" data-bind="if : isSingPassLogin() && isLoggedIn()"> <span class="badge rounded-pill bg-danger" data-bind="html : $root.bookmarkResultCount()"></span> <button class="sgds btn btn-link" type="button" data-bind="click : function() { $root.iconClick($root.bookmarkResultUrl(), '_blank') }"> <i class="fa-regular fa-heart"></i> </button> </div> <!-- /ko --> <div class="right-action-single-btn" data-bind="if : isLoggedIn()"> <a class="right-action-header-profile-btn streched-link" data-bs-toggle="offcanvas" href="#offcanvasMenu" role="button"> <div class="right-action-header-profile d-flex"> <div class="right-action-header-profile-img"> <span class="material-icons-two-tone">account_circle</span> </div> <div class="right-action-header-profile-info d-none d-lg-flex"> <div> <span class="profile-name"><strong data-bind="text : $Util.shortenText(preferredName(), 20),attr:{title:preferredName()}"></strong></span> <!-- <span class="profile-credit" data-bind="if : availableCredits()">Credit Balance: <strong data-bind="text : availableCredits()"></strong></span>--> <span class="profile-credit"><a style="white-space: nowrap;" data-bind="if : availableCredits(), attr: { href: $GLOBAL_CONSTANTS.SFC_URL.PROD }">SkillsFuture Credit</a></span> </div> </div> </div> </a> </div> <div class="right-action-header-profile d-none" data-bind="if : isLoggedIn()"> <div class="right-action-header-profile-img"> <!--<i class="bi bi-person-circle"></i>--> <span class="material-icons-two-tone">account_circle</span> </div> <div class="right-action-header-profile-info"> <a class="streched-link" href="#"> <span class="profile-name"><strong data-bind="text : $Util.shortenText(preferredName(), 20),attr:{title:preferredName()}"></strong></span> <!-- <span class="profile-credit" data-bind="if : availableCredits()">Credit Balance: <strong data-bind="text : availableCredits()"></strong></span>--> <span class="profile-credit"><a style="white-space: nowrap;" data-bind="if : availableCredits(), attr: { href: $GLOBAL_CONSTANTS.SFC_URL.PROD }">SkillsFuture Credit</a></span> </a> </div> </div> <div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasMenu" aria-modal="true" role="dialog"> <div class="offcanvas-header"> <div class="d-flex flex-fill"> <div class="right-action-header-profile"> <div style="display:none" class="right-action-header-profile-img d-none"> <span class="material-icons-two-tone">account_circle</span> </div> <div class="right-action-header-profile-info"> <div> <span class="profile-name"><strong data-bind="text : $Util.shortenText(preferredName(), 20),attr:{title:preferredName()}"></strong></span> <!-- <span class="profile-credit" data-bind="if : availableCredits()">Credit Balance: <strong data-bind="text : '$' + availableCredits()"></strong></span> --> <!-- <span class="profile-credit" data-bind="if : availableCredits()">Credit Balance: <strong data-bind="text : availableCredits()"></strong></span>--> </div> </div> </div> </div> <div class="header-actions-holder"> <div class="d-flex align-items-center"> <div class="right-action-single-btn d-lg-none" data-bind="if : isSingPassLogin() && isLoggedIn()"> <span class="badge rounded-pill bg-danger" data-bind="html : $root.notificationsCount()"></span> <button class="sgds btn btn-link" type="button" data-bind="click : function() { $root.iconClick($root.notifications().inboxUrl, '_blank') }"> <i class="fa-regular fa-bell"></i> </button> </div> <div class="right-action-single-btn d-lg-none" data-bind="if : isSingPassLogin() && isLoggedIn()"> <span class="badge rounded-pill bg-danger" data-bind="html : $root.bookmarkResultCount()"></span> <button class="sgds btn btn-link" type="button" data-bind="click : function() { $root.iconClick($root.bookmarkResultUrl(), '_blank') }"> <i class="fa-regular fa-heart"></i> </button> </div> </div> </div> <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> </div> <div class="offcanvas-body"> <div class="offcanvas-section"> <div class="list-group"> <!-- clientlibs/msf/core-base/Workforce-v3/js/use-api/userNav.js --> <!-- clientlibs/workforce/Workforce-v2/js/use-api/userNav.js --> <!-- <a class="list-group-item" href="/content/portal/en/individual/profile.html"><span>Profile</span></a> <a data-bind="visible: isSingPassLogin() || $AccessControl.isPortalIdLogin() " class="list-group-item" href="/content/portal/en/individual/skills-passport.html"><span>Skills Passport</span></a> <a data-bind="visible: isSingPassLogin() || $AccessControl.isPortalIdLogin() " class="list-group-item" href="/content/portal/en/individual/skills-passport.html#timeline"><span>Initiatives Applications</span></a> <a data-bind="visible: isSingPassLogin() || $AccessControl.isPortalIdLogin() " class="list-group-item" href="/content/portal/en/individual/documents.html"><span>Documents</span></a> <a class="list-group-item" href="/content/portal/en/individual/courses.html"><span>Course Enquiries</span></a> <a data-bind="visible: isSingPassLogin() || $AccessControl.isPortalIdLogin() " class="list-group-item" href="/content/portal/en/individual/feedback.html"><span>Feedback</span></a> <a class="list-group-item" href="/content/portal/en/individual/take-attendance.html"><span>Take Attendance</span></a> <a data-bind="visible: $AccessControl.isPortalIdLogin() " class="list-group-item" href="/content/portal/en/portalid/change-password.html"><span>Change Password</span></a> <a class="list-group-item" href="/content/portal/en/individual/settings.html"><span>Settings</span></a> --> </div> </div> </div> <div class="offcanvas-footer"> <div class="d-flex gap-3"> <a href="#" class="text-dark" onclick="window.open('/content/portal/en/header/faqs/others.html')">Help</a> <a href="#" class="text-dark" onclick="$UserLoginUtil.triggerLogout(); $UserLoginUtil.closeSideMenu();">Logout</a> </div> </div> </div> <!-- /ko --> <!-- ko if: !isLoggedIn() --> <div class="navbar-item align-self-center btn-login-v3"> <a class="sgds btn btn-outline-primary" onclick="assignRoute(window.location.href); $UserLoginUtil.setTargetUserMsg(0);" role="button" data-bs-toggle="offcanvas" href="#offcanvasLogin"> <span>Login</span> </a> </div> <!-- /ko --> <div class="right-action-single-btn d-none d-lg-flex"> <button class="btn btn-header-search" type="button" data-bs-toggle="collapse" data-bs-target="#globalSearch" aria-label="Search MySkillsFuture website" aria-expanded="false"> <span class="sgds-icon sgds-icon-search"></span> <span class="sgds-icon sgds-icon-cross"></span> </button> </div> </div> <div class="d-lg-none"> <a aria-label="Mobile navigation menu" class="hamburger-menu" data-bs-toggle="collapse" href="#siteMainNav" role="button" aria-expanded="false"> <span class="icon-bar"></span> </a> </div> </div> </div> </div> </div> </div> <div class="breadcrumb-holder"> <div class="container-fluid"> <nav aria-label="breadcrumb"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a href="/content/portal/en/index.html">Home</a></li> <li class="breadcrumb-item active" aria-current="page"><a href="/content/portal/en/training-exchange/course-directory.html" onclick="CQ_Analytics.record({event:'followBreadcrumb',values: { breadcrumbPath: '/content/portal/en/training-exchange/course-directory' },collect: false,options: { obj: this },componentPath: 'portal/components/content/breadcrumb_v3'})">Courses</a></li> <li class="breadcrumb-item active" aria-current="page">Course Detail</li> <!-- <li class="breadcrumb-item active" aria-current="page">Areas of Training</li> --> </ol> </nav> </div> </div> <div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasLogin" aria-modal="true" role="dialog" aria-label="Login modal"> <div class="offcanvas-header"> <div class="d-flex flex-fill"> </div> <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> </div> <div class="offcanvas-body"> <div class="offcanvas-login-holder"> <span id="loginWoMsg"><h4 class="mb-4">Hi there! Please log in to use this e-service.</h4></span> <p class="interested d-none">Login to use the service safely and for us to pre-fill your name and contact details for the training provider to respond to you.<br/></p> <h4 id="loginWMsg" class="d-none mb-4"> </h4> <div class="singpass-v3-login"> <h3 class="h6" id="login_panel_target_user">For Singapore Citizens and Permanent Residents</h3> <!-- <h3 class="h6" id="login_panel_target_user">For Singapore Citizens, Permanent Residents and holders of Foreign Identification Number (FIN)</h3> --> <form id="individual-sp-login-form" action="/services/common/doLogin" method="post"> <input type="hidden" name="loginType" value="SP"/> <input type="hidden" name="roleNameType" value=""/> <input type="hidden" id="redirectURL" name="redirectURL" value=""/> <input type="hidden" id="isMaintainLoginSession" name="isMaintainLoginSession" value=""/> <input type="hidden" id="lgnModalwMsgisMaintainLoginSession" name="lgnModalwMsgisMaintainLoginSession" value=""/> <a rel="nofollow" href="#" class="btn btn-danger d-block text-center singpass-v3-login-btn" isDefault="yes" onclick="$UserLoginUtil.clickSingPassLogin()">Singpass</a> </form> <p class="small singpass-note">Don't have a Singpass account? Forgot your password? <a href="https://www.singpass.gov.sg/main" class="link-primary fw-bold" rel="nofollow">Click here</a></p> </div> <div class="security-liner-message"> <br/> <h3 class="h6" data-bind="html: Granite.I18n.get('security-liner-message')"></h3> </div> </div> </div> <div class="offcanvas-footer"> <div class="d-flex gap-3"> <a href="#" class="text-dark" onclick="window.open('/content/portal/en/header/faqs/others.html')">Help</a> <a href="#" class="text-dark skipButton d-none" data-bs-dismiss="offcanvas">Skip</a> </div> </div> </div> <!-- ALERT BOX POP UP PANEL --> <!-- **************************** --> <div id="Alert_PopupPanel" style="display:none;" class="modal fade"> <div class="Closebtn_PopupPanel"></div> <div class="contentblock"> <div class="message">Place your text here</div> <div class="ActionPanel"> <button class="btn btn_bigorange confirmButton" type="button">OK</button> <a href="#" class="btn btn_bigorange confirmLink" style="display:none;" type="button">OK</a> <button class="btn btn_bigorange cancelButton" type="button">Cancel</button> </div> </div> </div> <!-- Yes No POP UP PANEL --> <!-- **************************** --> <div id="Common_PopupPanel" style="display:none;" class="modal fade"> <div class="Closebtn_PopupPanel"></div> <div class="contentblock"> <div class="message"></div> <div class="ctabox"> <button class="ctabtn small confirmButton" type="button"></button> <a rel="nofollow" href="#" class="btn btn_bigorange confirmLink" style="display:none;" type="button"></a> <button class="ctabtn small cancelButton" type="button"></button> </div> </div> </div> <!-- Common Modal Popup by Bootstrap --> <div class="modal fade" id="Common_Bootstrap_Modal_Popup" tabindex="-1" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <div class="general-message-holder"> <div> <div class="card"> <div class="card-body"> <div id="popup-icon-holder" class="message-icon mb-4"> </div> <h3 id="popup-content" class="mb-4"></h3> <div class="btn-holder justify-content-center"> <button data-bs-dismiss="modal" id="popup-btn-2" type="button" class="btn btn-outline-dark"></button> <button data-bs-dismiss="modal" id="popup-btn-1" type="button" class="btn btn-primary"></button> <!-- <a data-dismiss="modal" class="btn btn-outline-dark" id="popup-btn-2"></a> <a data-dismiss="modal" class="btn btn-primary" id="popup-btn-1"></a> --> </div> </div> </div> </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary d-none" data-bs-dismiss="modal">Close</button> </div> </div> </div> </div> <!-- Common Modal XL Popup by Bootstrap --> <div class="modal fade" id="Common_Bootstrap_XL_Modal_Popup" tabindex="-1" aria-hidden="true"> <div class="modal-dialog modal-xl modal-dialog-centered"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title"></h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> </div> <div class="modal-footer"> <div class="btn-holder"> <button data-bs-dismiss="modal" id="popup-btn-2" type="button" class="btn btn-outline-dark"></button> <button data-bs-dismiss="modal" id="popup-btn-1" type="button" class="btn btn-primary"></button> </div> </div> </div> </div> </div> <!-- Info Modal --> <div class="modal fade" id="infoModal" tabindex="-1" aria-hidden="true"> <div class="modal-dialog modal-lg modal-fluid modal-dialog-centered"> <div class="modal-content"> <div class="modal-header border-0"> <!--<h5 class="modal-title" id="exampleModalLabel">Modal title</h5>--> <button type="button" class="btn-close my-1" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body p-4"> <div class="general-message-holder"> <div> <div class="card"> <div class="card-body"> <h3 class="mb-3 fw-normal"></h3> <p></p> <br/> <div class="btn-holder justify-content-center"> <button type="button" data-bs-dismiss="modal" id="popup-btn-2" class="btn btn-outline-dark">No</button> <button type="button" data-bs-dismiss="modal" id="popup-btn-1" class="btn btn-primary">Yes</button> </div> </div> </div> </div> </div> </div> <div class="modal-footer border-0"></div> </div> </div> </div> <div id="duplicate_session_popup_modal" data-keyboard="false" data-backdrop="static" aria-hidden="true" class="modal fade duplicateSessionPopupModal" tabindex="-1" role="dialog"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title" style="text-align: center;">Duplicate Sessions</h4> </div> <div class="modal-body"> <div id="duplicate_session_container" style="text-align: center;"> <span>Another login session has been detected. If you continue, the previous session will be removed.</span> <br/><br/> <span>Do you want to continue?</span> </div> <div class="duplicateSessionContainer" style="text-align: center;margin-top: 23px;"> <a rel="nofollow" href="#" id="duplicate_session_popup_modal_yes_buttton" class="ctabtn tiffany">Yes</a> <a rel="nofollow" href="#" id="duplicate_session_popup_modal_logout_buttton" class="ctabtn tiffany">Logout</a> </div> </div> </div> </div> </div> <!-- message of network disconnection CR-34 2020-11-07 --> <div class="header-alert-holder d-none" id="networkDisconnectionMessageBoxV3"> <style> .networkDisconnectionPlaceholder.alert.alert-dark.fade.show { display: flex !important; opacity: 1; } .networkDisconnectionPlaceholder.alert.alert-dark.fade.show.close { display: none !important; } #networkDisconnectionMessageBoxV3 { position: relative; z-index: -1; } </style> <div class="networkDisconnectionPlaceholder alert alert-dark fade show" role="alert" style=""> <div class="alert-message flex-fill"> <i class="bi bi-exclamation-circle-fill"></i> <span id="networkDisconnectionMessage">No network connection. Reconnect to keep the browsing going.</span> </div> <button type="button" class="btn-close" aria-label="Close" onclick="closeNetworkMessageBox()"> <i class="bi bi-x"></i> </button> </div> </div> <script> function openNetworkMessageBox() { $('#networkDisconnectionMessageBoxV3').addClass('d-block'); $('#networkDisconnectionMessageBoxV3').removeClass('d-none'); } function closeNetworkMessageBox() { $('#networkDisconnectionMessageBoxV3').removeClass('d-block'); $('#networkDisconnectionMessageBoxV3').addClass('d-none'); }; function initializeDetection() { console.log('initializeDetection....'); window.addEventListener("offline", function (event) { console.log('status: network is disconnected at ', new Date()); openNetworkMessageBox(); $(window).trigger('resize'); }) window.addEventListener("online", function (event) { console.log('status: network is connected at ', new Date()); closeNetworkMessageBox(); $(window).trigger('resize'); }) if (!navigator.onLine) openNetworkMessageBox(); else closeNetworkMessageBox(); } $(document).ready(function () { initializeDetection(); }) </script> <div class="site-action-holder"> <a rel="nofollow" href="#" class="back-top cd-top shadow"> <div><span class="material-icons-outlined">vertical_align_top</span></div> </a> </div> </header> <div class="coverall"></div> <script> // Populate Header var populateHeaderMenuViewModel = new PopulateHeaderMenuViewModel(); populateHeaderMenuViewModel.renderHeaderMenu_v3(); </script> <div class="modal fade" id="loginTempSingPassModal" tabindex="-1" style="z-index:9999998; margin-top: 10%; padding-top: 45px;" role="dialog" data-type="0"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <h4 class="modal-title" style="text-align: center">Login</h4> </div> <div class="modal-body"> <form id="sing-pass-login-form"> <input type="hidden" name="redirectURL" value=""/> <input type="hidden" id="isMaintainLoginSession" name="isMaintainLoginSession" value="false"/> <h2 class="form-signin-heading"></h2> <div class="form-group row"> <label for="inputUser" class="col-sm-2 col-form-label">User Id</label> <div class="col-sm-10"> <input class="form-control" type="text" name="userId" id="inputUser" placeholder="User ID" autocomplete="off" autofocus/> <div id="ERROR-userid" class="help-block with-errors hidden"> <ul class="list-unstyled"> <li></li> </ul> </div> </div> </div> <div class="form-group row"> <label for="inputPassword" class="col-sm-2 col-form-label">Password</label> <div class="col-sm-10"> <input type="password" class="form-control" id="inputPassword" name="userPwd" placeholder="Password" autocomplete="off" autofocus/> <div id="ERROR-password" class="help-block with-errors hidden"> <ul class="list-unstyled"> <li></li> </ul> </div> </div> </div> <div class="form-group row "> <div class="col-sm-10" style="float: right;text-align: left"> <input class="form-control" type="hidden" name="userType" id="userType" value="SP"/> </div> </div> <div class="form-group row"> <label class="col-sm-2 col-form-label"></label> <div class="col-sm-10"> <div id="ERROR-loginError" class="help-block with-errors hidden"> <ul class="list-unstyled"> <li></li> </ul> </div> </div> </div> <div class="theme1 form-group aligncenter"> <a rel="nofollow" href="#" id="button-submit-login-sing-pass" class="ctabtn" style="background-color: #5aacb4;">Sign in</a> <a rel="nofollow" href="#" class="ctabtn" data-bs-dismiss="modal" onclick="clearInput()" style="background-color: #5aacb4;">Cancel</a> <a href="javascript:loginWithTempCorpass('TP');" class="ctabtn" style="background-color: #5aacb4;">Corp Pass Login</a> </div> </form> </div> </div> </div> </div> <script> var serializeFormJSON = function(formObj) { var o = {}; var a = formObj.serializeArray(); $.each(a, function() { if (o[this.name]) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; } $("#button-submit-login-sing-pass").click(function() { var postLoginURLredirect = document.getElementById('sing-pass-login-form').redirectURL.value; if (!postLoginURLredirect) { document.getElementById('sing-pass-login-form').redirectURL.value = window.location.href ; } if(validateLoginForm()){ var formData = serializeFormJSON($("#sing-pass-login-form")); $.ajax({ type: "POST", url: "/services/common/spcplogin-temp", cache: false, data: formData, success: function(rawData) { var result = rawData; if (typeof rawData === 'string') { try { result = JSON.parse(rawData); } catch(e) { // invalid json } } if (result.status) { $('#ERROR-loginError').addClass('hidden'); $('#ERROR-loginError').html(''); if (result.statusCode == 1 || result.statusCode == 17) { $.cookie.defaults = { path: '/content/portal/en/' }; var url = checkAssignedRoute(); if (url == "") { window.location.href = '/content/portal/en/index.html'; } else { // tracking SN login link to MySF account if ($SessionStorage.get('loginFormId')) { WorkforceAnalytics.Common.trackingSocialLoginLinkAndUnLinkMSF($SessionStorage.get('loginFormId'),'link','success'); $SessionStorage.remove('loginFormId'); } window.location.href = url; } } else if (result.statusCode == 3) { $.cookie.defaults = { path: '/content/portal/en/' }; //Should let filter to identify window.location.href = '/content/portal/en/index.html'; // url is registration page, social acc didn't link to singpass // tracking SN login link to MySF account if ($SessionStorage.get('loginFormId')) { WorkforceAnalytics.Common.trackingSocialLoginLinkAndUnLinkMSF($SessionStorage.get('loginFormId'),'link','failure'); $SessionStorage.remove('loginFormId'); } } else if (result.statusCode == 0 || result.statusCode == 4 || result.statusCode == 6) { window.location.href='/services/common/doLogout?redirectURL=/content/portal/en/index.html?loginStatus=' + result.statusCode; } else if (result.statusCode == 14) { window.location.href=PortalConstants.URL.EASY_LOGIN; } } else if (!result.status) { $('#ERROR-loginError').removeClass('hidden'); $('#ERROR-loginError').html(result.message); } localStorage.removeItem("isPostJobs"); } });} }); function validateLoginForm(){ var isValidUser = true; var isValidPassword = true; var isValidUEN=true; var isValidRoles=true; var form=$("#sing-pass-login-form"); if(form.find('input#inputUser').val().trim().length == 0){ isValidUser = false; form.find('input#inputUser').focus(); $('#ERROR-userid ul li').html('User ID field cannot be empty'); $('#ERROR-userid').removeClass('hidden'); } else{ $('#ERROR-userid').addClass('hidden'); $('#ERROR-userid ul li').html(''); } if(form.find('input#inputPassword').val().trim().length == 0){ isValidPassword = false; form.find('input#inputPassword').focus(); $('#ERROR-password ul li').html('Password field cannot be empty'); $('#ERROR-password').removeClass('hidden'); } else{ $('#ERROR-password').addClass('hidden'); $('#ERROR-password ul li').html(''); } if(isValidUser && isValidPassword){ $('#ERROR-loginError').html(''); return true; } return false; } function loginWithTempCorpass(roleNameType){ console.log('temp sing') $('#login_popup_modal').modal('hide'); $('#loginTempSingPassModal').modal('hide'); $('#loginModal_corpass').modal('show'); document.getElementById('corp-pass-login-form').roleNameType.value = roleNameType; } function loginWithTempSingpass(){ $('#login_popup_modal').modal('hide'); $('#loginTempSingPassModal').modal('show'); // window.location = LoginUtils.LOGIN_SP_URL; } </script> <style> .changetextsize_box{ display:none; } </style> <div class="modal fade" id="loginModal_corpass" tabindex="-1" style="z-index:9999999; margin-top: 8%; padding-top: 98px;" role="dialog" data-type="0"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <h4 class="modal-title" style="text-align: center">Corp Pass Login</h4> </div> <div class="modal-body"> <form id="corp-pass-login-form"> <input type="hidden" name="roleNameType" value=""/> <input type="hidden" name="redirectURL" value=""/> <h2 class="form-signin-heading"></h2> <div class="form-group row"> <label for="inputUser" class="col-sm-2 col-form-label">UEN</label> <div class="col-sm-10"> <input class="form-control" type="text" name="uen" id="inputUEN" placeholder="UEN Number" autofocus/> <div id="ERROR-uen" class="help-block with-errors hidden"> <ul class="list-unstyled"> <li></li> </ul> </div> </div> </div> <div class="form-group row"> <label for="inputUser" class="col-sm-2 col-form-label">User Id</label> <div class="col-sm-10"> <input class="form-control" type="text" name="userId" id="inputUser" placeholder="User ID" autofocus autocomplete="off"/> <div id="ERROR-userid" class="help-block with-errors hidden"> <ul class="list-unstyled"> <li></li> </ul> </div> </div> </div> <div class="form-group row"> <label for="inputPassword" class="col-sm-2 col-form-label">Password</label> <div class="col-sm-10"> <input type="password" class="form-control" id="inputPassword" name="userPwd" placeholder="Password" autocomplete="off" autofocus/> <div id="ERROR-password" class="help-block with-errors hidden"> <ul class="list-unstyled"> <li></li> </ul> </div> </div> </div> <div class="form-group row"> <label for="tpCode" class="col-sm-2 col-form-label">TP Code</label> <div class="col-sm-10"> <input type="text" class="form-control" id="tpCode" name="tpCode" placeholder="TP Code" autocomplete="off" autofocus/> </div> </div> <div class="form-group row"> <label for="roles" class="col-sm-2 col-form-label">Roles</label> <div class="col-sm-10"> <ul class="roles"> <li style=" display: inline-block;"><input type="checkbox" name="roleName" id="tp_admin" value="TP_ADMIN" style="display: inline;"/><label for="tp_admin_label"> TP Admin </label></li> <li style="display: inline-block;"><input type="checkbox" name="roleName" id="job_admin" value="JOBSBANK_ADMIN" style=" display: inline;"/><label for="job_admin_label"> Job Admin </label></li> <li style="display: inline-block;"><input type="checkbox" name="roleName" id="course_admin" value="COURSE_ADMIN" style="display: inline;"/><label for="course_admin_label"> Course Admin</input></label></li> <li style="display: inline-block;"><input type="checkbox" name="isForeignEntity" id="isForeignEntity" value="true" style="display: inline;"/><label for="course_admin_label"> isForeignEntity</input></label></li> <li style="display: inline-block;"><input type="checkbox" name="isNonSingpassHolder" id="isNonSingpassHolder" value="true" style="display: inline;"/><label for="course_admin_label"> isNonSingpassHolder</input></label></li> </ul> <div id="ERROR-roles" class="help-block with-errors hidden"> <ul class="list-unstyled"> <li></li> </ul> </div> </div> </div> <div class="form-group row "> <div class="col-sm-10" style="float: right;text-align: left"> <input class="form-control" type="hidden" name="userType" id="userType" value="CP"/> </div> </div> <!-- <div class="form-group row hidden"> <div class="col-sm-10" style="float: right;text-align: left"> <sly data-sly-use.SEOTitleUtil="clientlibs/student/sightlyjstool/SEOTitleUtil.js"> <a href="/content/student/en//reset-password.html">Forgot your password?</a> </sly> </div> </div> --> <div class="form-group row"> <label class="col-sm-2 col-form-label"></label> <div class="col-sm-10"> <div id="ERROR-loginError" class="help-block with-errors hidden"> <ul class="list-unstyled"> <li></li> </ul> </div> </div> </div> <div class="theme1 form-group aligncenter"> <a rel="nofollow" href="#" id="button-submit-login-corp-pass" onclick="$UserLoginUtil.corpPassLogin()" class="ctabtn" style="background-color: #5aacb4;">Sign in</a> <a rel="nofollow" href="#" class="ctabtn" data-bs-dismiss="modal" style="background-color: #5aacb4;">Cancel</a> </div> </form> </div> </div> </div> </div> <script src="/etc/clientlibs/msf/core-base/V3-ui.min.js"></script> <!-- <div class="page__title" data-sly-resource="title"></div> --> <!-- <sly data-sly-include="content.html"/> --> <!-- <div class="container page__main"> --> <!-- <div class="page__title" data-sly-resource="title"></div> --> <!-- <sly data-sly-include="content.html" data-sly-unwrap/> --> <!-- </div> --> <main class="theme1"> <!-- <div class="page-header"> --> <!-- <div class="container"> --> <!-- <div class="row"> --> <!-- <div class="col-xs-8 col-sm-9 col-md-10"> --> <!-- <sly data-sly-include="partials/breadcrumb.html" data-sly-unwrap/> --> <!-- </div> --> <!-- <sly data-sly-resource ="changefontsize"/> --> <!-- </div> --> <!-- </div> --> <!-- </div> --> <div class="page__par"> <div class="course-details"> <link rel="stylesheet" href="/etc/clientlibs/msf/tex/individual/course-detail-v3.min.css" type="text/css"> <script src="/etc/clientlibs/msf/tex/individual/course-detail-v3.min.js"></script> <div class="page-header"> <div class="container-xxl"> <div class="course-details-holder user-prototype"> <div class="card"> <div class="card-img"> <!-- ko if : courseDetail.areaOfTrainings().length > 0 --> <div class="card-badge-holder" data-bind="foreach : courseDetail.areaOfTrainings()"> <a class="badge rounded-pill text-bg-primary" data-bind="text : description, attr : { href : $INDIVIDUAL_CONSTANT.PAGE_URL.COURSE_SEARCH + '?fq=Area_of_Training:(' + code() + ')' }"></a> </div> <!-- /ko --> <!-- <div class="header_tags_container" data-bind="foreach : courseDetail.areaOfTrainings()"> <li class="keyword_tags text-transform-none"><a target="_blank" data-bind="text : description, attr : { href : $INDIVIDUAL_CONSTANT.PAGE_URL.COURSE_DIRECTORY + '?fq=Area_of_Training:(' + code() + ')' }"></a></li> </div> --> <img id="courseDetailImg" alt="" class="img-cover" data-object-fit="cover"/> </div> <div class="card-body"> <div class="course-details-header"> <small>Course ID: <span data-bind="html : courseDetail.extCourseRefNo"></span></small> <h2 class="card-title" data-bind="text : courseDetail.courseTitle"></h2> <div class="course-provider-info-holder"> <div class="course-provider"> <a aria-label="Click here to go to the course provider" data-bind="attr : { href : $INDIVIDUAL_CONSTANT.PAGE_URL.TP_PROFILE_PUBLIC + '?UEN=' + courseDetail.trainingOrganisation.uen() }"> <span class="course-icon"><i class="fa-solid fa-building" style="margin-left: 1px;"></i></span> <span data-bind="text : courseDetail.trainingProviderAlias() || courseDetail.trainingOrganisation.organizationName()"></span> </a> </div> <small>UEN/Foreign Entity Number: <span data-bind="text : courseDetail.trainingOrganisation.uen"></span></small> </div> </div> <div class="course-details-body"> <!-- ko if : courseDetail.courseRuns().length > 0 && !$Util.isLearningPlatformCourse(courseDetail) --> <div class="upcoming-course-date"> <label><span>Upcoming Course Date:</span></label> <div class="d-flex align-items-center gap-2"> <strong class="h5 mb-0" data-bind="text: $Util.dateFormatting(courseDetail.courseRuns()[0].courseStartDate(),'DD MMM YY')"></strong> <a href="#courseDetailsSection03" class="small" onclick="javascript:$COURSE_DETAILS_V3.srollToPosition(event, 'ScheduleSectionTarget');">View More</a> </div> </div> <!-- /ko --> <div class="card-cost-holder"> <div class="row row-cols-2 row-cols-lg-3 row-cols-xl-3"> <!-- ko if : $Util.isSfcCourse(courseDetail) || !$Util.isFreeNonSfcCourse(courseDetail) --> <div class="col"> <!-- ko if: courseDetail.isOnlineCourse() --> <label> <span>Subscription Fee:</span> <!-- ko if: $Util.isSfSeriesKeyword(courseDetail.getCourseTaggingsCode(), $INDIVIDUAL_CONSTANT.COURSE_TAG_CODE.SCTP_COURSE) --> <a href="#" class="op-link" data-bind="click: function(data, event) { $Util.onlineFeePopUp(courseDetail.courseReferenceNumber(), courseDetail.areaOfTrainingDescription(), courseDetail.courseTitle()) }"> <i class="bi bi-info-circle" data-bs-toggle="tooltip" data-bs-placement="top" data-bind="attr : {'data-bs-title' : $Util.courseFeeTooltip()}"></i> </a> <!-- /ko --> <!-- ko ifnot: $Util.isSfSeriesKeyword(courseDetail.getCourseTaggingsCode(), $INDIVIDUAL_CONSTANT.COURSE_TAG_CODE.SCTP_COURSE) --> <a href="#" class="op-link" data-bind="click: function(data, event) { $Util.onlineFeePopUp(courseDetail.courseReferenceNumber(), courseDetail.areaOfTrainingDescription(), courseDetail.courseTitle()) }"> <i class="bi bi-info-circle" data-bs-toggle="tooltip" data-bs-placement="top" data-bind="attr : {'data-bs-title' : $Util.courseFeeTooltip()}"></i> </a> <!-- /ko --> </label> <!-- /ko --> <!-- ko ifnot: courseDetail.isOnlineCourse() --> <label> <span>Full Fee:</span> <!-- ko if: $Util.isSfSeriesKeyword(courseDetail.getCourseTaggingsCode(), $INDIVIDUAL_CONSTANT.COURSE_TAG_CODE.SCTP_COURSE) --> <a href="#" class="op-link" data-bind="click: function(data, event) { $Util.fullFeePopUpSCTP(courseDetail.courseReferenceNumber(), courseDetail.areaOfTrainingDescription(), courseDetail.courseTitle()) }"> <i class="bi bi-info-circle" data-bs-toggle="tooltip" data-bs-placement="top" data-bind="attr : {'data-bs-title' : $Util.courseFeeTooltip()}"></i> </a> <!-- /ko --> <!-- ko ifnot: $Util.isSfSeriesKeyword(courseDetail.getCourseTaggingsCode(), $INDIVIDUAL_CONSTANT.COURSE_TAG_CODE.SCTP_COURSE) --> <a aria-label="Click here to find out more about the course" href="#" class="op-link" data-bind="click: function(data, event) { $Util.fullFeePopUp(courseDetail.courseReferenceNumber(), courseDetail.areaOfTrainingDescription(), courseDetail.courseTitle()) }"> <i class="bi bi-info-circle" data-bs-toggle="tooltip" data-bs-placement="top" data-bind="attr : {'data-bs-title' : $Util.courseFeeTooltip()}"></i> </a> <!-- /ko --> </label> <!-- /ko --> <div class="h3 mb-0"><strong data-bind="text : $Util.formatFee(courseDetail.totalCostOfTrainingPerTrainee())"></strong></div> </div> <!-- /ko --> <!-- ko if : $Util.isSfcOrSCTPCourse(courseDetail) --> <div class="col" name="nettfee" style="display:none"> <label> <span>After SkillsFuture Funding:</span> <a aria-label="After skillsFuture funding" href="#" class="op-link" data-bind="click: function(data, event) { $Util.nettFeePopUp(courseDetail.courseTitle(), courseDetail.courseReferenceNumber(), courseDetail.eligibleGrants(), courseDetail.areaOfTrainingDescription()) }"> <i class="bi bi-info-circle" data-bs-toggle="tooltip" data-bs-placement="top" data-bind="attr : {'data-bs-title' : $Util.courseFeeTooltip()}"></i> </a> </label> <div class="h3 mb-0"><strong data-bind="attr : { id : courseDetail.extCourseRefNo}"></strong></div> </div> <div class="right" name="netspin"> <i class="fa fa-spinner fa-spin" style="font-size:24px"></i> </div> <div class="right" name="eligibleGrants" style="display:none;" data-bind="attr : { id : courseDetail.extCourseRefNo() + '_EG' }"> <div class=""> <a aria-label="Course reference number" href="#" data-bind="attr : { id : courseDetail.extCourseRefNo() + '_EG'}"></a> </div> </div> <!-- /ko --> <div class="gcErrorMsg right" style="display:none"></div> </div> </div> <div class="course-info-holder course-info-grid-holder"> <!-- ko if: courseRatingViewModel.courseRating.qualityIndicator.isRatedOverall() --> <div class="card-ratings-holder"> <div class="stars-holder"> <!-- ko foreach: new Array(5) --> <i class="fa-regular fa-star" data-bind="attr: {class: $root.courseRatingViewModel.populateStar_v3($root.courseRatingViewModel.courseRating.qualityIndicator.starsRatingForOverallQuality(), $index())}"></i> <!-- /ko --> </div> <span><span data-bind="text: courseRatingViewModel.courseRating.qualityIndicator.numberOfRespondents"></span> Ratings</span> </div> <!-- /ko --> <!-- ko if: courseDetail.courseAttendeeCount --> <div class="course-attendance-holder"> <i class="fa-regular fa-circle-check text-primary"></i> <span data-bind="text : courseDetail.courseAttendeeCount"></span><span> Attended</span> </div> <!-- /ko --> <div class="course-wishlist-btn-holder"> <!-- ko if: $root.multipleTpModel.isBookmarked(courseDetail.tpCourseList()) --> <a href="#" class="link-dark op-link" data-bind="click : $root.multipleTpModel.bookmarkShowLogin, attr: { 'title': $Util.showLoginTooltip()}"> <i class="fa-solid fa-heart d-block"></i> <span>Added To Wishlist</span> </a> <!-- /ko --> <!-- ko ifnot: $root.multipleTpModel.isBookmarked(courseDetail.tpCourseList()) --> <a href="#" class="link-dark op-link" data-bind="click : $root.multipleTpModel.bookmarkShowLogin, attr: { 'title': $Util.showLoginTooltip()}"> <i class="fa-regular fa-heart d-block"></i> <span>Add To Wishlist</span> </a> <!-- /ko --> </div> </div> </div> </div> </div> </div> </div> </div> <div id="courseDetailsContent"> <div class="page-tab-holder tab-holder" id="courseDetails"> <div class="container-xxl"> <ul class="nav nav-pills"> <li class="nav-item"> <a class="nav-link" href="#courseDetailsSection01" onclick="javascript:$COURSE_DETAILS_V3.srollToPosition(event, 'OverviewSectionTarget');"> <span>Course Overview</span> </a> </li> <!-- ko if: !isLoadingFeeDetail() --> <li class="nav-item"> <a class="nav-link" href="#courseDetailsSection02" onclick="javascript:$COURSE_DETAILS_V3.srollToPosition(event, 'FeeDetailsSectionTarget');"> <span>Fee Details</span> </a> </li> <!-- /ko --> <!-- ko if : courseDetail.courseRuns().length > 0 && !$Util.isLearningPlatformCourse(courseDetail) --> <li class="nav-item"> <a class="nav-link" href="#courseDetailsSection03" onclick="javascript:$COURSE_DETAILS_V3.srollToPosition(event, 'ScheduleSectionTarget');"> <span>Schedule</span> </a> </li> <!-- /ko --> <!-- ko if: courseRatingViewModel.courseRating.qualityIndicator.isRatedOverall() || courseRatingViewModel.courseRating.outcomeIndicator.isRatedOverall() || courseTraineeCommentViewModel.mainCommentList().length > 0 --> <li class="nav-item"> <a class="nav-link" href="#courseDetailsSection04" onclick="javascript:$COURSE_DETAILS_V3.srollToPosition(event, 'RatingsSectionTarget');"> <span>Ratings</span> </a> </li> <!-- /ko --> <!-- <li class="nav-item"> <a class="nav-link" href="#courseDetailsSection05" onclick="javascript:$COURSE_DETAILS_V3.srollToPosition(event, 'OpportunitiesSectionTarget');"> <span>Opportunities</span> </a> </li> --> <!-- ko if: courseFAQViewModel.showHideFaq() --> <li class="nav-item"> <a class="nav-link" href="#courseDetailsSection06" onclick="javascript:$COURSE_DETAILS_V3.srollToPosition(event, 'FaqSectionTarget');"> <span>FAQ</span> </a> </li> <!-- /ko --> </ul> </div> </div> <div class="course-detail-info-holder"> <section class="course-section section" id="courseDetailsSection01"> <div class="container-xxl"> <div class="course-section-holder"> <!-- ko if : courseDetail.isSFC4Course --> <div> <span class="sfc-box">Eligible for SkillsFuture Credit (Mid Career)</span> </div> <!-- /ko --> <!-- ko if : courseDetail.courseBundle().length > 0 --> <em>This course is eligible for SkillsFuture Credit (Mid-Career) <span class="courseOverviewBold">only if you sign up for SkillsFuture Career Transition Programme</span>. </em> <!-- /ko --> <div class="course-section-header"> <h3 id="OverviewSectionTarget">Course Overview</h3> <p>If you are interested in this course, please register directly with the training provider.</p> </div> <div class="course-section-body"> <div class="two-columns-layout"> <div class="row"> <div class="col-lg-8"> <!-- ko if : courseDetail.courseObjective --> <div class="card course-overview-card"> <div class="card-body"> <h4 class="card-title">About This Course</h4> <p data-bind="html : courseDetail.courseObjective"></p> </div> </div> <!-- /ko --> <!-- ko if : courseDetail.isShownCourseDescription() && courseDetail.courseDescription()--> <div class="card course-overview-card"> <div class="card-body"> <h4 class="card-title">What You'll Learn</h4> <p data-bind="html : courseDetail.courseDescription"></p> </div> </div> <!-- /ko --> <!-- ko ifnot : courseDetail.isShownCourseDescription() --> <!-- ko if : courseDetail.courseContent() --> <div class="card course-overview-card"> <div class="card-body"> <h4 class="card-title">What You'll Learn</h4> <p data-bind="html : courseDetail.courseContent">What you will learn from this course:</p> </div> </div> <!-- /ko --> <!-- /ko --> <!-- ko if : courseDetail.relevantJobRoles --> <div class="card course-overview-card"> <div class="card-body"> <h4 class="card-title">Relevant Job Role(s)</h4> <p data-bind="text: courseDetail.relevantJobRoles"></p> </div> </div> <!-- /ko --> <!-- ko if : courseDetail.accreditation().length > 0 --> <!-- <sly data-sly-include="templates/course-accreditation.html" /> --> <!-- /ko --> <!-- ko if : courseDetail.entryRequirement --> <div class="card course-overview-card"> <div class="card-body"> <h4 class="card-title">Minimum Entry Requirement</h4> <p data-bind="html : courseDetail.entryRequirement"></p> </div> </div> <!-- /ko --> <!-- ko if : courseDetail.courseModule().length > 0 || courseDetail.courseBundle().length > 0 --> <!-- ko if : courseDetail.courseModule().length > 0 --> <div class="card course-overview-card"> <div class="card-body"> <h4 id="ModuleSectionTarget" class="card-title"> <span>This </span> <a data-bind="attr : { href :'/content/portal/en/career-resources/career-resources/education-career-personal-development/skillsfuture-career-transition-programme.html'}"> SkillsFuture Career Transition Programme (SCTP) </a> <span> consists of the following modules:</span> </h4> <!-- ko foreach : courseDetail.courseModule() --> <div class="anchor-list-holder"> <a data-bind="attr : { href : $INDIVIDUAL_CONSTANT.PAGE_URL.COURSE_DETAIL + '?courseReferenceNumber=' + courseReferenceNumber }"> <span data-bind="text : courseTitle"></span> </a> </div> <!-- /ko --> <p class="addMsg">Individuals can tap on SkillsFuture Credit (Mid-Career) if you are aged 40 and above, and taking <span class="addMsgBold">all the modules in the list</span>.</p> </div> </div> <!-- /ko --> <!-- ko if : courseDetail.courseBundle().length > 0 --> <div class="card course-overview-card "> <div class="card-body"> <h4 id="ModuleSectionTarget" class="card-title"> <span>This course is also offered as a module in the following </span> <a data-bind="attr : { href :'/content/portal/en/career-resources/career-resources/education-career-personal-development/skillsfuture-career-transition-programme.html'}"> SkillsFuture Career Transition Programme(s) SCTPs: </a> </h4> <!-- ko foreach : courseDetail.courseBundle() --> <div class="anchor-list-holder"> <a data-bind="attr : { href : $INDIVIDUAL_CONSTANT.PAGE_URL.COURSE_DETAIL + '?courseReferenceNumber=' + courseReferenceNumber }"> <span data-bind="text : courseTitle"></span> </a> </div> <!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> <!-- ko if : courseDetail.tags().length > 0 && !isMobileAppView()--> <div class="card course-overview-card"> <div class="card-body"> <h4 class="card-title">Keyword Tags</h4> <div class="keyword-search-holder pt-0"> <div data-bind="foreach : $root.courseDetail.tags()"> <a class="badge rounded-pill text-bg-primary" target="_blank" data-bind="text : text, attr : { href : $INDIVIDUAL_CONSTANT.PAGE_URL.COURSE_SEARCH + '?q=Tags:%22' + text() + '%22&search=true&jumpstart=false' }">Popular</a> </div> </div> </div> </div> <!-- /ko --> </div> <div class="col-lg-4"> <div class="card course-overview-card"> <ul class="list-group list-group-flush"> <!-- ko if : courseDetail.qualificationAttained.description --> <li class="list-group-item"> <div class="d-flex course-overview-list-item"> <div class="flex-shrink-0"> <span class="material-icons-outlined">badge</span> </div> <div class="flex-grow-1"> <label class="text-black-50 small">Issued upon Completion</label> <div class="h6 mb-0" data-bind="text : courseDetail.qualificationAttained.description"></div> </div> </div> </li> <!-- /ko --> <!-- ko if : courseDetail.minimumEducationReq.description --> <li class="list-group-item"> <div class="d-flex course-overview-list-item"> <div class="flex-shrink-0"> <span class="material-icons-outlined">leaderboard</span> </div> <div class="flex-grow-1"> <label class="text-black-50 small">Min. Qualifications</label> <div class="h6 mb-0" data-bind="text : courseDetail.minimumEducationReq.description"></div> </div> </div> </li> <!-- /ko --> <!-- ko if : courseDetail.modeOfTrainings().length > 0 --> <li class="list-group-item"> <div class="d-flex course-overview-list-item"> <div class="flex-shrink-0"> <span class="material-icons-outlined">tv</span> </div> <div class="flex-grow-1"> <label class="text-black-50 small">Training Commitment</label> <div class="h6 mb-0"> <span data-bind="foreach : courseDetail.modeOfTrainings.sort((a, b) => ko.unwrap(a.description) < ko.unwrap(b.description) ? -1 : 1)"> <span data-bind="text : description"></span><span data-bind="if : ($index() !== ($parent.courseDetail.modeOfTrainings().length - 1))">,</span> </span> </div> </div> </div> </li> <!-- /ko --> <!-- ko ifnot : courseDetail.isOnlineCourse() --> <li class="list-group-item"> <div class="d-flex course-overview-list-item"> <div class="flex-shrink-0"> <span class="material-icons-outlined">schedule</span> </div> <div class="flex-grow-1"> <label class="text-black-50 small">Duration</label> <div class="h6 mb-0" data-bind="text: $Util.formatCourseDuration(courseDetail.numberOfTrainingDay(), courseDetail.totalTrainingDurationHour())"></div> </div> </div> </li> <!-- /ko --> <!-- ko if : courseDetail.mediumOfInstructions().length > 0 --> <li class="list-group-item"> <div class="d-flex course-overview-list-item"> <div class="flex-shrink-0"> <span class="material-icons-outlined">mode_comment</span> </div> <div class="flex-grow-1"> <label class="text-black-50 small">Language</label> <div class="h6 mb-0"> <span data-bind="foreach : courseDetail.mediumOfInstructions.sort((a, b) => ko.unwrap(a.description) < ko.unwrap(b.description) ? -1 : 1)"> <span data-bind="text : description"></span><span data-bind="if : ($index() !== ($parent.courseDetail.mediumOfInstructions().length - 1))">,</span> </span> </div> </div> </div> </li> <!-- /ko --> </ul> <!-- ko if : courseDetail.contactPerson().length > 0 --> <div class="card-footer bg-white"> <div> <h5 class="mb-3">Contact Person(s)</h5> <div class="contact-persons-holder"> <!-- ko foreach : courseDetail.contactPerson --> <div class="contact-person-single"> <div class="contact-person-info"> <span class="d-block"><span data-bind="text : salutation"></span> <span data-bind="text : fullName"></span></span> <span class="d-block" data-bind="text : telNum"></span> <span class="d-block"> <a target="_blank" class="link-primary" data-bind="text : email, attr : {href : 'mailto:' + email()}"></a> </span> </div> <!-- ko if : $root.courseDetail.courseEnquiryURL() && !$root.isMobileAppView()--> <button class="btn btn-outline-primary text-nowrap" data-bind="click : function(data, event) { $root.goToExtPage($root.courseDetail.courseEnquiryURL()) }">I'm interested!</button> <!-- /ko --> <!-- ko ifnot : $root.courseDetail.courseEnquiryURL() --> <!-- ko if : email() --> <!--ko if : LoginUtils.isUserLogin() --> <button class="btn btn-outline-primary text-nowrap" data-bind="showHide: !$root.isMobileAppView(), click: $root.EnquiryViewModel.openEnquiryForm">I'm interested!</button> <!-- /ko --> <!--ko ifnot : LoginUtils.isUserLogin() --> <button class="btn btn-outline-primary text-nowrap" data-bind="showHide: !$root.isMobileAppView()" onclick="$UserLoginUtil.showLoginOverlay(true, false, false, true, window.location.href, null, false);$UserLoginUtil.showInterested(true);">I'm interested!</button> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <!-- close loop --> </div> </div> </div> <!-- /ko --><!-- close outer if --> </div> <div class="btn-holder"> <a analytics-cross-link-click analytics-cross-link-action="cross link" analytics-cross-link-label="Course Overview>Visit Training Provider's Website" analytics-cross-link-action-name="Course Overview" analytics-cross-link-action-value="Visit Training Provider's Website" data-bind="click : goToExtTrainingProviderPage" href="#" class="btn btn-primary w-100" target="_blank">Visit Training Provider's Website</a> </div> </div> </div> </div> </div> </div> </div> </section> <!-- ko if: !isLoadingFeeDetail() --> <section class="course-section section bg-blue-50" id="courseDetailsSection02"> <div class="container-xxl"> <div class="course-section-holder"> <div class="course-section-header"> <h3 id="FeeDetailsSectionTarget">Fee Details</h3> <!-- ko if : courseDetail.isSFCCourse() --> <div class="sfc-only-courses"> <p>This course is not eligible for SkillsFuture funding. However, you can use your SkillsFuture Credit to pay for the course fees.</p> <p>For further information on SkillsFuture Credit, click <a target="_blank" href="/content/portal/en/header/faqs/skillsfuture-credit.html">here<span class="mysf-screen-reader-text">Click here for further information on SkillsFuture Credit</span></a>.</p> </div> <!-- /ko --> <!-- ko ifnot : courseDetail.isSFCCourse() --> <div class="skills-future-funded-courses"> <p>Click the buttons below to learn about the subsidies available for self-sponsored and employer-sponsored individuals. Please contact the training provider to advise you on your subsidy eligibility and the nett fee payable by you. </p> </div> <!-- /ko --> </div> <!-- ko ifnot : courseDetail.isSFCCourse() --> <div class="course-section-body"> <div class="fee-cards-holder"> <div class="card"> <div class="card-body"> <div class="fees-info-holder flex-fill"> <div class="fees-icon"> <span class="material-icons-outlined">person</span> </div> <div class="fees-info"> <h3 class="h5">Self-sponsored Individual</h3> <p>Course fee funding for SSG-approved courses</p> </div> </div> <div class="fees-btn-holder"> <a id="courseFeeDetailsIndividualUrl" target="_blank" href="#" class="btn btn-primary">View Details</a> </div> </div> </div> <div class="card"> <div class="card-body"> <div class="fees-info-holder flex-fill"> <div class="fees-icon"> <span class="material-icons-outlined">business_center</span> </div> <div class="fees-info"> <h3 class="h5">Employer-sponsored Individual</h3> <p>Course fee funding for SSG-approved courses</p> </div> </div> <div class="fees-btn-holder"> <a id="courseFeeDetailsEmployersUrl" href="#" target="_blank" class="btn btn-primary">View Details</a> </div> </div> </div> </div> </div> <!-- /ko --> </div> </div> </section> <script> $COURSE_DETAILS_V3.setFeeDetailsUrl(); </script> <!-- /ko --> <!-- ko if : courseDetail.courseRuns().length > 0 && !$Util.isLearningPlatformCourse(courseDetail) --> <section class="course-section section" id="courseDetailsSection03"> <div class="container-xxl"> <div class="course-section-holder"> <div class="course-section-header"> <h3 id="ScheduleSectionTarget">Schedule</h3> <p>Please check with the training provider for the most updated course information and course run dates.</p> </div> <div class="course-section-body"> <div class="schedule-cards-holder" data-bind="foreach: { data: courseRunsListComputed, as: 'courseRun'}"> <div class="card"> <div class="card-body"> <div class="schedule-card-header"> <h6>Upcoming Course Date(s):</h6> <h5 class="text-primary"> <span data-bind="text : $Util.dateRangeFormation(courseStartDate(), courseEndDate(), 'DD MMM YYYY', 'DD MMM YYYY')"></span> <!-- ko if : vacancyTypeCode --> <!-- <div class="statustext" data-bind="css : {'red' : vacancyTypeCode() === $TP_CONSTANT.VACANCY_TYPES_CODE.FULL, 'blue' : vacancyTypeCode() !== $TP_CONSTANT.VACANCY_TYPES_CODE.FULL}"></div> --> <small class="badge text-bg-primary" data-bind="text : $root.getVacancyTypeDescription(vacancyTypeCode())">Limited Vacancy</small> <!-- /ko --> </h5> </div> <ul class="list-unstyled"> <li> <label>Register from:</label> <strong data-bind="text : $Util.dateRangeFormation(registrationOpenDate(), registrationCloseDate(), 'DD MMM YYYY', 'DD MMM YYYY')"></strong> </li> <li> <label>Mode of Training:</label> <strong data-bind="text: courseRun.modeOfTraining"></strong> </li> <!-- ko if : courseTrainers().length > 0 --> <li> <label>Trainer(s):</label> <!-- ko foreach : courseTrainers --> <strong><a href="#" class="link-primary" data-bs-toggle="modal" data-bs-target="#modalTrainerInfo" data-bind="text : trainer.name , click : $root.showTrainer"></a></strong><!-- ko if : $index() < (courseRun.courseTrainers().length - 1) -->, <!-- /ko --> <!-- /ko --> </li> <!-- /ko --> <!-- ko if : intakeSize --> <li> <label>Intake Size:</label> <strong>Max. <span data-bind="text : intakeSize"></span> participants</strong> </li> <!-- /ko --> <!-- ko if : postalCode --> <li> <label>Primary Venue:</label> <strong><a href="#" class="link-primary" data-bs-toggle="modal" data-bs-target="#oneMapModal" data-bind="text : venue, click : $root.openOneMap"></a> <i class="fa fa-fw fa-wheelchair grey" data-bind="visible : wheelchairAccess"></i></strong> </li> <!-- /ko --> </ul> <!-- <div class="sessions"> <span class="padding-left-5" data-bind="text : scheduleInfo"></span> </div> --> <div class="card-btn-holder scheduler-btn-holder"> <button type="button" class="btn btn-outline-primary scheduler-btn" data-bind="click : $root.sessionsPopUpViewModel.openSessionsPopUpv3">View Sessions</button> <!-- ko if : courseRun.courseApplicationUrl().length > 1 --> <button type="button" class="btn btn-outline-primary scheduler-btn" data-bind="click : function() {$root.goToExtTrainingProviderApplyCourseRunPage(courseRun)}">Apply</button> <!-- /ko --> </div> </div> </div> </div> <br/> <div class="pagination-holder"> <nav> <ul class="pagination justify-content-center"> <li class="page-item disabled" data-bind="attr: { class: $root.hasPrevious() ? 'page-item' : 'page-item disabled' }"> <a href="#" class="page-link" data-bind="click : $root.loadPrev"> <i class="fa-solid fa-chevron-left"></i> </a> </li> <!-- ko foreach : paginationList --> <li class="page-item" data-bind="visible: isPageNo, attr: { class: ($root.pageNumber() == number) ? 'page-item active' : 'page-item' }"> <a class="page-link" href="#" data-bind=" text: number, click: $root.loadPage.bind($data,number)"></a> </li> <li class="page-item" data-bind="visible: !isPageNo"><span>...</span></li> <!-- /ko --> <li class="page-item" data-bind="attr: { class: $root.hasNext() ? 'page-item' : 'page-item disabled' }"> <a href="#" class="page-link" data-bind=" click : $root.loadMore"> <i class="fa-solid fa-chevron-right"></i> </a> </li> </ul> </nav> </div> <!--<div class="btn-holder d-flex gap-3 justify-content-center mt-lg-3"> <button type="button" class="btn btn-primary px-lg-4" data-bs-toggle="modal" data-bs-target="#modalAllCourseRuns">View all course runs</a> </div> <br> <div class="text-center"> <p>For more information please check with the training provider</p> </div>--> </div> </div> </div> </section> <div class="modal fade" id="modalShowSessions" tabindex="-1" aria-hidden="true"> <div class="modal-dialog modal-xl modal-dialog-centered"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">Sessions</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <!-- ko if : $root.sessionsPopUpViewModel.courseDetailPopUpSessions().length > 0 --> <div class="schedule-cards-holder" data-bind="foreach: { data: $root.sessionsPopUpViewModel.courseDetailPopUpSessions, as: 'courseSession'}"> <div class="card schedule-limited"> <div class="card-body"> <div class="schedule-card-header"> <h5 class="text-primary"> <span data-bind="text: $Util.dateFormatting(courseSession.sessionStartDate(),'DD MMM YY')"></span> </h5> </div> <ul class="list-unstyled mb-0"> <li> <label>Time:</label> <strong data-bind="text : $Util.dateRangeFormation(courseSession.sessionStartTime(), courseSession.sessionEndTime(), 'hh:mm A', 'hh:mm A')"></strong> </li> <li> <label>Mode of Training:</label> <strong data-bind="text : courseSession.modeOfTraining"></strong> </li> <li> <label>Primary Venue:</label> <strong data-bind="text : courseSession.venue"></strong> </li> </ul> </div> </div> </div> <!-- /ko --> <!-- ko ifnot : $root.sessionsPopUpViewModel.courseDetailPopUpSessions().length > 0 --> <div class="schedule-cards-holder"> There is no session information available. </div> <!-- /ko --> </div> </div> </div> </div> <div class="modal fade" id="modalTrainerInfo" tabindex="-1" aria-hidden="true"> <div class="modal-dialog modal-xl modal-dialog-centered"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">Trainer Information</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <div class="trainer-info-holder py-3"> <div class="trainer-icon"> <div> <!-- ko ifnot : trainerForPopup.photoContent --> <img src="/etc/designs/msf/static/images/tex/trainer_blank.jpg"/> <!-- /ko --> <!-- ko if : trainerForPopup.photoContent --> <img data-bind="attr : {src : 'data:image/jpg;base64,' + trainerForPopup.photoContent() }"/> <!-- /ko --> </div> </div> <div class="trainer-profile"> <h4><span data-bind="text : getSalutationDesc(trainerForPopup.salutationId())"></span> <span data-bind="text : trainerForPopup.name"></span></h4> <!-- ko if : trainerForPopup.linkedInURL --> <div> <a href="#" class="trainer-linkedIn" target="_blank" data-bind="text : trainerForPopup.linkedInURL, attr : { href : $Util.formatNiceURL(trainerForPopup.linkedInURL()) }"></a> </div> <!-- /ko --> <!-- ko if : trainerForPopup.domainAreaOfPractice --> <div> <h5 class="mb-2 text-primary">Key Domains/Areas of Practice</h5> <p data-bind="html : trainerForPopup.domainAreaOfPractice"></p> </div> <!-- /ko --> <!-- ko if : trainerForPopup.computedQualificationsV3 --> <div> <h5 class="mb-2 text-primary">Qualifications Levels and Description</h5> <ul class="list-group list-group-flush" data-bind="html: trainerForPopup.computedQualificationsV3"> </ul> </div> <!-- /ko --> <!-- ko if : trainerForPopup.experience --> <div> <h5 class="mb-2 text-primary">Experience</h5> <div data-bind="html : trainerForPopup.experience"></div> </div> <!-- /ko --> </div> </div> </div> <div class="modal-footer justify-content-center"> <p class="small">Disclaimer: This information is provided by the training partner. Please check with the training partner for more details.</p> </div> </div> </div> </div> <!-- Course Venue Modal --> <div class="modal fade" id="oneMapModal" tabindex="-1" aria-hidden="true"> <div class="modal-dialog modal-xl modal-dialog-centered"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">View Location</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <div class="map-holder updatedResume" id="popup-content"> </div> </div> <div class="modal-footer border-0"></div> </div> </div> </div> <!-- /ko --> <!-- ko if: courseRatingViewModel.courseRating.qualityIndicator.isRatedOverall() || courseRatingViewModel.courseRating.outcomeIndicator.isRatedOverall() || courseTraineeCommentViewModel.mainCommentList().length > 0 --> <section class="course-section section bg-blue-50" id="courseDetailsSection04"> <!-- ko if: courseRatingViewModel.courseRating.qualityIndicator.isRatedOverall() || courseRatingViewModel.courseRating.outcomeIndicator.isRatedOverall() --> <div class="container-xxl"> <div class="course-section-holder"> <div class="course-section-header"> <h4 id="RatingsSectionTarget">Trainees' Ratings</h4> <p>The Training Quality and Outcomes Measurement (TRAQOM) ratings are contributed by trainees who have attended SSG-funded courses. The quality rating measures trainees' perception of the overall learning experience and how inclined they are to recommend others to attend the course. The impact rating measures trainees' perception of how well this course has benefitted their work and career 6 months after course completion.</p> </div> <div class="course-section-body"> <div class="trainee-rating-card-holder"> <div class="row row-cols-1 row-cols-md-2 gx-3"> <!-- ko if: courseRatingViewModel.courseRating.qualityIndicator.isRatedOverall() --> <div class="col"> <div class="card"> <div class="card-header"> <h5> <span>Trainees' Feedback on the Course's Quality</span> <i class="fa-solid fa-circle-question" data-bind="click : courseRatingViewModel.showTraqomFAQ"></i> </h5> </div> <div class="card-body"> <div class="card-ratings-holder"> <div class="stars-holder"> <!-- ko foreach: new Array(5) --> <i class="fa-regular fa-star" data-bind="attr: {class: $root.courseRatingViewModel.populateStar_v3($root.courseRatingViewModel.courseRating.qualityIndicator.starsRatingForOverallQuality(), $index())}"></i> <!-- /ko --> </div> <span><span data-bind="text: courseRatingViewModel.courseRating.qualityIndicator.numberOfRespondents"></span> Ratings</span> </div> </div> </div> </div> <!-- /ko --> <!-- ko if: courseRatingViewModel.courseRating.outcomeIndicator.isRatedOverall() --> <div class="col"> <div class="card"> <div class="card-header"> <h5> <span>Trainees' Feedback on the Course's Impact on Work and Career</span> <i class="fa-solid fa-circle-question" data-bind="click : courseRatingViewModel.showTraqomFAQ"></i> </h5> </div> <div class="card-body"> <div class="card-ratings-holder"> <div class="stars-holder"> <!-- ko foreach: new Array(5) --> <i class="fa-regular fa-star" data-bind="attr: {class: $root.courseRatingViewModel.populateStar_v3($root.courseRatingViewModel.courseRating.outcomeIndicator.starsRatingForOverallOutcome(), $index())}"></i> <!-- /ko --> </div> <span><span data-bind="text: courseRatingViewModel.courseRating.outcomeIndicator.numberOfRespondents"></span> Ratings</span> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <br/> </div> <!-- /ko --> <!-- ko if: courseTraineeCommentViewModel.mainCommentList().length > 0 --> <div class="container-xxl"> <div class="course-section-holder"> <div class="course-section-header"> <h4 id="RatingsSectionTarget">Trainees' Comments</h4> </div> <div class="course-section-body"> <div class="schedule-cards-holder" data-bind="foreach: { data: courseTraineeCommentViewModel.mainCommentList, as: 'traineeComment'}"> <div class="card"> <div class="card-body"> <div class="card-ratings-holder"> <div class="stars-holder"> <!-- ko foreach: new Array(5) --> <i class="fa-regular fa-star" data-bind="attr: {class: $root.courseRatingViewModel.populateStar_v3(traineeComment.starRating(), $index())}"></i> <!-- /ko --> </div> <span data-bind="text: traineeComment.commentDate()"></span> </div> <div class="card-comments-holder"> <div class="comments-holder"> <span data-bind="text: traineeComment.comment()"></span> </div> </div> </div> </div> </div> <br/> <!-- ko if: courseTraineeCommentViewModel.totalCount() > 3 --> <div class="card-btn-holder text-center"> <button type="button" class="btn btn-outline-primary" data-bind="click : function() { $root.courseTraineeCommentViewModel.openCommentsPopUpv3($root.courseDetail.courseReferenceNumber(), $root.courseDetail.areaOfTrainingDescription(), $root.courseDetail.courseTitle()) }">View More</button> </div> <!-- /ko --> </div> </div> <br/> </div> <!-- /ko --> <div class="modal fade" id="modalShowComments" tabindex="-1" aria-hidden="true"> <div class="modal-dialog modal-xl modal-dialog-centered"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">Trainees' Comments</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <div style="max-width: 15rem; min-width: 8rem; width: auto; margin-left: auto;"> <!-- <select name="sortBy" class="comment-sort form-select" style="width:100%; border-radius: 0;" data-bind="value: courseTraineeCommentViewModel.sortBy, change: courseTraineeCommentViewModel.changeSortValue"> <option selected="" disabled="">Sort by</option> <option value="0">Recent</option> <option value="1">Rating High to Low</option> <option value="2">Rating Low to High</option> </select> --> <select name="sortBy" class="comment-sort form-select" style="width:100%; border-radius: 0;" data-bind="options: courseTraineeCommentViewModel.sortOptions, placeholder: 'Sort By', optionsText: 'description', value: courseTraineeCommentViewModel.sortBy, optionsBind: 'attr: { disabled: !enabled() }'"> </select> </div> <br/> <div class="schedule-cards-holder" data-bind="foreach: { data: courseTraineeCommentViewModel.paginationCommentList, as: 'traineeComment'}"> <div class="card"> <div class="card-body"> <div class="card-ratings-holder"> <div class="stars-holder"> <!-- ko foreach: new Array(5) --> <i class="fa-regular fa-star" data-bind="attr: {class: $root.courseRatingViewModel.populateStar_v3(traineeComment.starRating(), $index())}"></i> <!-- /ko --> </div> <span data-bind="text: traineeComment.commentDate()"></span> </div> <div class="card-comments-holder"> <div class="comments-holder"> <span data-bind="text: traineeComment.comment()"></span> </div> </div> </div> </div> </div> <br/> <div id="comment-pagination-holder" class="pagination-holder" data-bind="visible: courseTraineeCommentViewModel.paginationCommentList().length > 0"> <nav> <ul class="pagination justify-content-center"> <li class="page-item" data-bind="attr: { class: $root.courseTraineeCommentViewModel.paginationModel.hasPrevious() ? 'page-item' : 'page-item disabled', name: 'prev' }"> <a class="page-link" href="#" data-bind="click: function() { $root.courseTraineeCommentViewModel.paginationModel.loadPrevV3(); $root.courseTraineeCommentViewModel.loadPrevResult() } "> <i class="fa-solid fa-chevron-left"></i> </a> </li> <!-- ko foreach : $root.courseTraineeCommentViewModel.paginationModel.paginationList --> <li class="page-item" data-bind="visible: isPageNo, attr: { class: ($root.courseTraineeCommentViewModel.paginationModel.pageNumber() == number) ? 'page-item active' : 'page-item', value: number }"> <!-- <a class="page-link" href="#" data-bind="text: number, click: function() { $root.paginationModel.loadPageV3.bind($data, number); $root.loadPageResult(number) }"></a> --> <a class="page-link" href="#" data-bind="text: number, click: function() { $root.courseTraineeCommentViewModel.paginationModel.loadPageV3(number); $root.courseTraineeCommentViewModel.loadPageResult(number) }"></a> </li> <li class="page-item" data-bind="visible: !isPageNo"><span>…</span></li> <!-- /ko --> <li class="page-item" data-bind="attr: { class: $root.courseTraineeCommentViewModel.paginationModel.pageNumber() != $root.courseTraineeCommentViewModel.paginationModel.totalPages() ? 'page-item' : 'page-item disabled', name: 'next' }"> <a class="page-link" href="#" data-bind="click: function() { $root.courseTraineeCommentViewModel.paginationModel.loadMoreV3(); $root.courseTraineeCommentViewModel.loadNextResult() } "> <i class="fa-solid fa-chevron-right"></i> </a> </li> </ul> </nav> </div> </div> </div> </div> <script> $(document).ready(function() { $('.comment-sort').select2({ minimumResultsForSearch: Infinity }); }); </script> <script> $CB_RESOURCE_PATH = '/content/portal/en/training-exchange/course-directory/course-detail/jcr:content/par/course-details/course-rating'; $CB_RESOURCE_NAME = 'course-rating'; $CD_ROWS_PARAM = 10; </script> </section> <!-- /ko --> <!-- <sly data-sly-include="templates/job-opportunities.html" /> --> <!-- ko if: courseFAQViewModel.showHideFaq() --> <section class="course-section section" id="courseDetailsSection06"> <div class="container-xxl"> <div class="course-section-holder"> <div class="course-section-header"> <h4 id="FaqSectionTarget" data-bind="text : courseFAQViewModel.faqTitle"></h4> </div> <div class="course-section-body"> <div class="accordion"> <!-- ko foreach : courseFAQViewModel.faqItems --> <div class="accordion-item"> <div class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bind="attr : {'data-bs-target': '#' + faqItemName}" aria-expanded="false"> <span data-bind="html : parentFaq"></span> </button> </div> <div class="accordion-collapse collapse" data-bind="attr : {'id': faqItemName}"> <div class="accordion-body"> <span> <p data-bind="html : childFaq"></p> </span> </div> </div> </div> <!-- /ko --> </div> <br/> <div class="text-center mt-lg-3" data-bind="html : courseFAQViewModel.faqLink"> </div> <br/> </div> </div> </div> </section> <!-- /ko --> </div> </div> <script> $ID_COURSE_DETAILS_SERVER_NAME = 'www.myskillsfuture.gov.sg'; //Analytics Tracking $(document).on('click', 'a.collapsed', function(){ var accordionName = $(this).find('h2').text() || ''; if (accordionName && (typeof $TEX_ANALYTICS != 'undefined')) { $TEX_ANALYTICS.trackAccordionViewed(accordionName); } }); $( document ).ready(function() { var requestPath=location.href.split("courseReferenceNumber="); var courseUrl=requestPath[requestPath.length-1]; var courseList = new Array(); }); $(window).load(function () { var triggerTooltip = document.getElementsByClassName('bi-info-circle'); for (var i =0; i < triggerTooltip.length; i++) { bootstrap.Tooltip.getOrCreateInstance($('.bi-info-circle')[i]); } //populate div1 - div3 for ( var j = 0; j < $('.course-info-holder.course-info-grid-holder > div').length; j++) { var index = j + 1; var courseInfoClass = "div" + index; var courseInfoSelector = '.course-info-holder.course-info-grid-holder > div:eq(' + j + ')'; $(courseInfoSelector).addClass(courseInfoClass); } var headerHeight = $("header").outerHeight() + $("#courseDetails").outerHeight(); var rootMarginVal = "-" + headerHeight + "px"; $('#courseDetails').addClass('scrollspy-tabs'); var scrollSpy = new bootstrap.ScrollSpy(document.getElementById("courseDetailsContent"), { target: '#courseDetails', smoothScroll: true, rootMargin: rootMarginVal }) stickyHeader(); $(window).scroll(function() { var diff = $(document).height() - ($(window).scrollTop() + $(window).height()); if( diff <= 1) { $("#courseDetails").hide(); $("#courseDetails ul li:last-child a").addClass('active'); } else { $("#courseDetails").show(); } if($("#courseDetails").hasClass( "js-is-stuck" )) { $("#courseDetails ul li:last-child a").addClass('active'); } }); }); </script> </div> <div class="multiple-tp-overlay"><div class="modal fade" id="multipleTpModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> <div class="popuppanel tiffany" style="padding-right: 0px"> <div class="panelplate"> <div class="titlepanel"> <span id="popup-header">Multiple Training Partners</span> <span data-dismiss="modal" class="close"></span> </div> <div class="contentpanel"> <div class="contentblock"> <div class="updatedResume text-center" id="popup-content"> <!-- ko if : $root.multipleTpModel.renderList && $root.multipleTpModel.renderList().length > 0 --> <h4> There are <b data-bind="text : $Util.getTPListUniqueCount($root.multipleTpModel.renderList())"></b> training partners for <span data-bind="text : multipleTpModel.renderList()[0].courseTitle()"></span> </h4> <div>Choose from Training Partners (Course Code) listed below:</div> <!-- ko if : multipleTpModel.action() === 'bookmark' --> <!-- ko foreach : multipleTpModel.renderList() --> <div> <div class="checkbox_bookmark" data-bind="attr: { 'title': $Util.showLoginTooltip()}"> <input type="checkbox" data-bind="checked : $root.multipleTpModel.isBookmarked($data)"/> <label data-bind="click : $root.multipleTpModel.bookmarkShowLogin"></label> <span data-bind="html : trainingProviderAlias() + ' (' + extCourseRefNo() + ')' "></span> </div> </div> <!-- /ko --> <!-- /ko --> <!-- ko if : multipleTpModel.action() === 'redirect' --> <!-- ko foreach : multipleTpModel.renderList() --> <div> <a href="#" target="_blank" data-bind="html : trainingProviderAlias() + ' (' + extCourseRefNo() + ')' , attr : { href : $INDIVIDUAL_CONSTANT.PAGE_URL.COURSE_DETAIL + '?' + $INDIVIDUAL_CONSTANT.URL_PARAM_KEY.COURSE_REF_NUM + '=' + encodeURIComponent(courseReferenceNumber()) + '&' + $INDIVIDUAL_CONSTANT.URL_PARAM_KEY.COURSE_TITLE + '=' + encodeURIComponent(courseTitle()) + '&' + $INDIVIDUAL_CONSTANT.URL_PARAM_KEY.AREA_OF_TRAINING + '=' + encodeURIComponent(areaOfTraining()) }, click: $root.multipleTpModel.trackRelatedLink"></a> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <div class="ctablock bottomcta"> <a data-dismiss="modal" class="btn btn-primary" id="popup-btn-1" style="display: none"></a> <a data-dismiss="modal" class="btn btn-default" id="popup-btn-2" style="display: none"></a> </div> </div> </div> <div class="contentpanel closepanel hide"> <div class="contentblock"> <a href="#" data-dismiss="modal op-link" class="textlink closebtn">CLOSE</a> </div> </div> </div> </div> </div> </div> </div> <div id="hiddendiv" class="hidden" style="height:140px"></div> <!-- COMPARE COURSES POP UP PANEL --> <!-- **************************** --> <div id="course-compare-popup-overlay" style="display: none"> <!-- ko if: $root.compareViewModel.courses().length > 0 && !$root.compareViewModel.hideOverlay() --> <div class="CompareList_container container vm-container-course-compare-popup"> <div class="course-compare-arrow-section"> <span data-bind="if: $root.compareViewModel.courses().length > 0 , click: function(){$root.compareViewModel.isShowing(!$root.compareViewModel.isShowing())}, attr: { class: 'CompareList_title ' + ((!$root.compareViewModel.isShowing()) ? 'up' : '') } ">Compare Courses</span> </div> <div id="CompareList_sliderplate" data-bind="if: $root.compareViewModel.isShowing"> <!-- ko foreach: $root.compareViewModel.courses --> <div class="CompareList_box pull-left"> <!-- CompareList 1 --> <div class="applicantname course-title"><a data-bind="attr: {href: $INDIVIDUAL_CONSTANT.PAGE_URL.COURSE_DETAIL + '?' + $INDIVIDUAL_CONSTANT.URL_PARAM_KEY.COURSE_REF_NUM + '=' + encodeURIComponent(courseReferenceNumber()) + '&' + $INDIVIDUAL_CONSTANT.URL_PARAM_KEY.COURSE_TITLE + '=' + encodeURIComponent(courseTitle()) + '&' + $INDIVIDUAL_CONSTANT.URL_PARAM_KEY.AREA_OF_TRAINING + '=' + encodeURIComponent(areaOfTraining()), title: courseTitle() }, text: $Util.shortenText(courseTitle(), 40)" target="_blank"></a></div> <div class="itemrow"> <div class="subheading course-ext-ref" data-bind="html: extCourseRefNo()"></div> <div class="itemrow tp-alias hidden-xs text-transform-none"><a target="_blank" data-bind="html: trainingProviderAlias(), attr : { href : $INDIVIDUAL_CONSTANT.PAGE_URL.TP_PROFILE_PUBLIC + '?UEN=' + uen() }"></a> <!-- <a class="contenttext" target="_blank" data-bind="attr: { href: '' },html: trainingProviderAlias()"></a> --> </div> </div> <div class="top-right-x" data-bind="click: $root.compareViewModel.removeCourse"><a href="javascript:void(0); "><i class="fa fa-fw fa-close"></i></a></div> </div> <!-- /ko --> <div id="compareControls" class="CompareList_btns pull-right"> <div class="CompareList_comparebtn"><a href="#" target="_blank" class="btn btn-primary" data-bind="click: $root.compareViewModel.goToComparsionPage">Compare</a></div> <div class="CompareList_clearallbtn" data-bind="click: $root.compareViewModel.clearAll"><a href="javascript:void(0);" class="textlink">Clear All</a></div> </div> </div> </div> <!-- /ko --> </div> <script type="text/javascript"> $CCP_RESOURCE_PATH = '/content/portal/en/training-exchange/course-directory/course-detail/jcr:content/course-compare-popup'; $CCP_RESOURCE_NAME = 'course-compare-popup'; </script> <div class="modal fade" id="EligibleGrants_Modal_Popup" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" style="display: none;"> <div class="popuppanel tiffany" style="padding-right: 0px;margin-top:100px"> <div class="panelplate"> <div class="titlepanel"> <span id="popup-header">Available Funding</span> <span data-dismiss="modal" class="close"></span> </div> <div class="contentpanel"> <div class="contentblock" style="color:black;padding: 20px;"> <div>Note: All the information listed is provided by training partners. Please check with the training partner on your eligibility criteria.</div> </br> <div>You may be eligible for the following funding for this course: <span id="gcCourseName"></span></div> <div> <ul id="eligibleGrantsScheme"></ul> </div> <div class="ctablock bottomcta"> <a data-dismiss="modal" class="btn btn-primary" id="popup-btn-1" style="">OK</a> </div> </div> </div> </div> </div> </div> <div><div class="modal fade" id="enquiryFormApply" tabindex="-1" aria-hidden="true"> <div class="modal-dialog modal-lg modal-dialog-centered"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">Submit your interest</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <p>The training provider will respond to you directly</p> <form class="form-holder"> <div class="course-details-holder mb-3"> <div class="card"> <div class="card-img"> <img id="courseDetailEnquiryImg" src="" alt="" class="img-cover" data-object-fit="cover"/> </div> <div class="card-body"> <div class="course-details-header"> <h2 class="card-title" data-bind="text:$root.courseDetail.courseTitle()"></h2> <div class="course-provider-info-holder"> <div class="course-provider"> <a href="#"> <span class="course-icon d-none"><i class="fa-solid fa-building" style="margin-left: 1px;"></i></span> <span data-bind="text : $root.courseDetail.trainingProviderAlias() || $root.courseDetail.trainingOrganisation.organizationName()"></span> </a> </div> </div> </div> <div class="course-details-body"> <div class="course-info-holder"> <!-- ko if: courseRatingViewModel.courseRating.qualityIndicator.isRatedOverall() --> <div class="card-ratings-holder"> <div class="stars-holder"> <!-- ko foreach: new Array(5) --> <i class="fa-regular fa-star" data-bind="attr: {class: $root.courseRatingViewModel.populateStar_v3($root.courseRatingViewModel.courseRating.qualityIndicator.starsRatingForOverallQuality(), $index())}"></i> <!-- /ko --> </div> <span><span data-bind="text: courseRatingViewModel.courseRating.qualityIndicator.numberOfRespondents"></span> Ratings</span> </div> <!-- /ko --> </div> </div> </div> </div> </div> <div> <div class="row"> <div class="col-sm-12"> <div class="form-group"> <label class="form-label">Salutation</label> <div class="formbox"> <div id="salutationGroup" class="input-group"> <span class="input-group"> <button class="form-control" type="button" data-toggle="dropdown" id="salutationBtn"> <input readonly id="salutationInput" data-bind="value: $root.EnquiryViewModel.getSalutationDesc($root.EnquiryViewModel.enquiryForm.salutationId())" placeholder="Please Select"/></input> <i class="fa fa-fw fa-angle-down" id="saluicon"></i> </button> <ul id="salutationItems" class="dropdown-menu" role="menu" data-bind="foreach: $root.EnquiryViewModel.salutations"> <li><a href="#" data-bind="click: $root.EnquiryViewModel.setSalutationId, analyticsTracking: { fn: $TEX_ANALYTICS.trackFormField, isRequired: true, fieldName: 'Salutation'}"><span data-bind="text: description"></span></a></li> </ul> </span> </div> <div class="validationMessage pos-inherit" data-bind="validationMessage: $root.EnquiryViewModel.enquiryForm.salutationId"></div> </div> </div> </div> </div> <div class="row"> <div class="col-12"> <div class="form-group"> <label class="form-label">Name</label> <input type="text" class="form-control input" id="inputlg" data-bind="value: $root.EnquiryViewModel.enquiryForm.name, analyticsTracking: { fn: $TEX_ANALYTICS.trackFormField, isRequired: true, fieldName: 'Name'}" placeholder="Please enter" autocomplete="off"/> <span class="validationMessage pos-inherit" data-bind="validationMessage: $root.EnquiryViewModel.enquiryForm.name"></span> </div> </div> </div> <div class="row"> <div class="col-12"> <div class="form-group"> <label class="form-label">Contact Number</label> <input type="text" class="form-control input" id="" pattern="[0-9]" maxlength="8" placeholder="+65" data-bind="value: $root.EnquiryViewModel.enquiryForm.telephoneNumber, analyticsTracking: { fn: $TEX_ANALYTICS.trackFormField, isRequired: false, fieldName: 'Telephone Number'}"/> <span class="validationMessage pos-inherit" data-bind="validationMessage: $root.EnquiryViewModel.enquiryForm.telephoneNumber"></span> </div> </div> </div> <div class="row"> <div class="col-12"> <div class="form-group"> <label class="form-label">Email</label> <input type="text" class="form-control input" id="inputlg" placeholder="example@site.com" data-bind="value: $root.EnquiryViewModel.enquiryForm.emailAddress, analyticsTracking: { fn: $TEX_ANALYTICS.trackFormField, isRequired: true, fieldName: 'Email'}" autocomplete="off"/> <span class="validationMessage pos-inherit" data-bind="validationMessage: $root.EnquiryViewModel.enquiryForm.emailAddress"></span> </div> </div> </div> <div class="row"> <div class="col-12"> <div class="form-group"> <label class="form-label">Subject</label> <p class="form-text mt-n1">Please note that indication of interest for a course is to better facilitate the pre-registration process but not an official course application. Training provider will reach out to you with more details to register.</p> <div class="form-radio-check-holder" data-bind="foreach: $root.EnquiryViewModel.subjects"> <div class="form-check"> <input class="form-check-input" type="radio" name="enquirySubject" data-bind="value: code, checked: $root.EnquiryViewModel.enquiryForm.courseEnquirySubjectCode, analyticsTracking: { fn: $TEX_ANALYTICS.trackFormField, isRequired: true, fieldName: 'Subject'}"/> <label class="form-check-label" data-bind="text: description"></label> </div> </div> </div> </div> </div> <div class="row"> <div class="col-12"> <div class="form-group"> <label class="form-label">Message</label> <textarea class="form-control textareapanel" rows="10" id="enquiryMessage" data-bind="value: $root.EnquiryViewModel.enquiryForm.enquiry, analyticsTracking: { fn: $TEX_ANALYTICS.trackFormField, isRequired: true, fieldName: 'Enquiry'}"></textarea> <span class="validationMessage pos-inherit" data-bind="validationMessage: $root.EnquiryViewModel.enquiryForm.enquiry"></span> </div> </div> </div> <div class="row"> <div class="col-12"> <div class="form-group"> <label class="form-label">Preferred Mode of Contact</label> <div class="form-radio-check-holder"> <!-- ko foreach: $root.EnquiryViewModel.contacts --> <div class="form-check form-check-inline"> <label class="control control--radio"> <input class="form-check-input" type="radio" data-bind="value: code, checked: $root.EnquiryViewModel.enquiryForm.modeOfContactCode, attr: { id: 'chk-' + $index() }, analyticsTracking: { fn: $TEX_ANALYTICS.trackFormField, isRequired: true, fieldName: 'Preferred mode of contact'}"/> <span data-bind="html: '<span></span>' + description, attr: { for: 'chk-' + $index() }"> </span> <div class="control__indicator"></div> </label> </div> <!--/ko--> </div> </div> </div> </div> <div class="row"> <div class="col-12 col-lg-8"> <div class="form-group captchaDiv"> <label class="form-label">Type the characters you see below</label> <div class="input-group captcha-img-holder"> <div class="captchaImage form-control"> <img id="captchaImage"/> </div> <button data-bind="click: $root.EnquiryViewModel.displayCaptcha" class="btn btn-outline-light link-dark" type="button"> <i class="fa-solid fa-rotate"></i> </button> </div> <input type="text" class="form-control input" placeholder="Enter the characters in the image" name="Captcha" onblur="this.value=this.value.replace(/(^\s*)|(\s*$)/g, '')" id="captchaInput" data-bind="value: $root.EnquiryViewModel.enquiryForm.captchaValue, analyticsTracking: { fn: $TEX_ANALYTICS.trackFormField, isRequired: true, fieldName: 'Captcha'}"/> <span class="validationMessage pos-inherit" data-bind="validationMessage: $root.EnquiryViewModel.enquiryForm.captchaValue"></span> <span id="invalid-captcha" class="validationMessage pos-inherit hidden" data-bind="text: $root.EnquiryViewModel.invalidCaptchaMsg"></span> </div> </div> </div> <br/> <div class="form-radio-check-holder"> <div class="form-check"> <div class="checkbox_tertiary"> <input class="form-check-input" type="checkbox" data-bind="value: true, checked: $root.EnquiryViewModel.enquiryForm.isAgree, attr: { id: 'agreeCheck' }, analyticsTracking: { fn: $TEX_ANALYTICS.trackFormField, isRequired: true, fieldName: 'Personal Information Consent'}"/> <label data-bind="attr: { for: 'agreeCheck' }"> <span></span>By submitting this form, you hereby agree that your personal data will be sent to the training partner for the purpose of providing you with information regarding your enquiry. </label> <span class="validationMessage pos-inherit" data-bind="validationMessage: $root.EnquiryViewModel.enquiryForm.isAgree"></span> </div> </div> <br/> <div class="form-check"> <div class="checkbox_tertiary"> <input class="form-check-input" type="checkbox" data-bind="value: true, checked: $root.EnquiryViewModel.enquiryForm.isReceiveTPInfo, attr: { id: 'chktp'}, analyticsTracking: { fn: $TEX_ANALYTICS.trackFormField, isRequired: false, fieldName: 'Future Update'}"/> <label data-bind="attr: { for: 'chktp'}"> <span></span>I would like to be contacted for future updates and promotions from the training partner. </label> </div> </div> </div> </div> <br/> <div class="btn-holder"> <button type="button" class="btn btn-primary px-lg-4 w-100" data-bind="click: $root.EnquiryViewModel.addEnquiryForm">Submit</button> </div> </form> </div> <div class="modal-footer border-0"></div> </div> </div> </div> <script> $('#salutationItems').click(function() { $('#salutationItems').hide(); }); $(document).mouseup(function(e) { var container = $('#salutationItems'); var container2 = $('#salutationBtn'); var container3 = $('#salutationInput'); var container4 = $('#salutationGroup'); var top = container4.height() + 'px'; container.css({ top: top }); if (!container.is(e.target) && !container2.is(e.target) && !container3.is(e.target) && container.has(e.target).length === 0) { container.hide(); } if (container2.is(e.target) || container3.is(e.target)) { if ( container.css('display') == "block") { container.hide(); } else { container.show(); } } }); </script></div> </main> <footer class="sgds footer screen-v3 bootstrap-v3 footer-background custom-footer-style"> <section class="footer-top"> <div class="container-fluid"> <div class="footer-header"> <div class="row"> <div class="col-lg-9"> <br/> <div class="title">MySkillsFuture</div> <br/> <div>MySkillsFuture is a one-stop portal to support Singaporeans in their lifelong learning journey. Individuals can discover training opportunities, submit SkillsFuture Credit claims and more.</div> </div> </div> </div> <div class="flex-fill"> <div class="footer-mandatory-links"> <ul> <li><a href="/content/portal/en/about/about-myskillsfuture.html" style="font-weight: 700;">About Us</a></li> <li><a href="/content/portal/en/header/faqs/related-sites.html" style="font-weight: 700;">Related Sites</a></li> </ul> </div> </div> </div> </section> <section class="footer-logo-holder"> <div class="container-fluid"> <div class="footer-logo-row justify-content-start"> <div class="d-lg-flex flex-md-column flex-lg-row"> <label>In association with:</label> <div> <a href="http://www.moe.gov.sg/" x-cq-linkchecker="skip"> <img src="/etc/clientlibs/msf/core-base/V3-ui/images/footer_logo_moe.svg" alt="Logo of Ministry of Education, Singapore." title="Navigate to the https://www.moe.gov.sg/"/> </a> </div> <div> <a href="https://www.skillsfuture.gov.sg/" x-cq-linkchecker="skip" title="Navigate to the https://www.skillsfuture.gov.sg/"> <img src="/etc/clientlibs/msf/core-base/V3-ui/images/footer_logo_skillsfuturesg.svg" alt="Logo for SkillsFuture, Singapoe."/> </a> </div> </div> <span class="vr d-none d-lg-flex"></span> <div class="d-lg-flex skillsfuture-footer-logo-v3"> <label>An initiative of:</label> <div><a href="http://www.skillsfuture.gov.sg/" target="_blank" title="Navigate to the https://www.skillsfuture.gov.sg/"> <img src="/etc/clientlibs/msf/core-base/V3-ui/images/footer_logo_skillsfuture.svg" alt=""/> </a> </div> </div> </div> </div> </section> <section class="footer-bottom"> <div class="container-fluid"> <div class="d-grid d-lg-flex"> <div class="flex-fill"> <div class="footer-copyrights"> <div class="d-inline-flex justify-content-lg-end text-lg-end gap-4 footer-float-right"> <div class="footer-mandatory-links"> <ul> <li><a href="/content/portal/en/header/faqs/for-further-assistance.html">Contact Us</a></li> <li><a href="https://service-portal.skillsfuture.gov.sg/s/feedback">Feedback</a></li> <li><a href="/content/portal/en/header/faqs/portal.html">FAQ</a></li> <li><a href="https://www.reach.gov.sg/">REACH</a></li> </ul> </div> </div> </div> </div> </div> <div class="d-lg-none"><br/></div> <div class="d-grid d-lg-flex"> <div class="flex-fill"> <div class="footer-mandatory-links"> <ul> <li><a href="https://www.tech.gov.sg/report_vulnerability" target="_blank">Report Vulnerability</a></li> <li><a href="/content/portal/en/footer/privacy-policy.html" target="_self">Privacy Policy</a></li> <li><a href="/content/portal/en/footer/terms-of-use.html" target="_self">Terms of Use</a></li> <li><a href="/content/portal/en/header/faqs/supported_browsers0.html" target="_self">Supported Browsers</a></li> </ul> </div> </div> </div> <br/> <div class="flex-fill"> <div class="footer-copyrights"> <div class="d-inline-flex justify-content-lg-end text-lg-end gap-4 copyright-float-right"> <p class="m-0" id="footerLastUpdatedDate">Last Updated </p> <p class="mt-0">© 2024 Government of Singapore</p> </div> </div> </div> <br/> </div> </section> </footer> <script type="text/javascript" charset="utf-8"> $(document).ready(function (){ if(typeof moment !== "undefined"){ var lastUpdatedDate = moment(new Date()).format('DD MMM YYYY'); $('#footerLastUpdatedDate').append(lastUpdatedDate); }else{ var currentDateArr = (new Date).toDateString().split(" "); var lastUpdatedDate = currentDateArr[2]+" "+currentDateArr[1]+" "+currentDateArr[3]; $('#footerLastUpdatedDate').append(lastUpdatedDate); } }); </script> <script type="text/javascript" charset="utf-8"> $(document).ready(function (){ if(CommonUtils.checkUserIsLogin()){ $(document).idleTimeout({ idleTimeLimit: 14*60, idleCheckHeartbeat: 2, // Frequency to check for idle timeouts in seconds dialogDisplayLimit: 1*60, // Time to display the warning dialog before logout (and optional callback) in seconds. dialogTitle: 'Session Expiration Warning', // also displays on browser title bar dialogText: 'Because you have been inactive, your session is about to expire.', dialogTimeRemaining: 'Time remaining', dialogStayLoggedInButton: 'Stay Logged In', dialogLogOutNowButton: 'Log Out Now', logoutUrl:"/content/portal/en/index.html", redirectUrl:"/content/portal/en/index.html", }); setInterval(CommonUtils.extendFnScheduler, 4*60*1000); if (!(window.location.href.indexOf('/uam/') > -1) && (window.location.href.indexOf('/employer/jobs') > -1 || window.location.href.indexOf('/employer/feedback') > -1 || window.location.href.indexOf('/employer/settings') > -1 || window.location.href.indexOf('/employer/profile') > -1 || window.location.href.indexOf('/employer/candidates') > -1 || window.location.href.indexOf('/employer/tripartite-standards') > -1 || window.location.href.indexOf('/employer/overview') > -1 || window.location.href.indexOf('/employer/registration') > -1 || window.location.href.indexOf('/employer/create') > -1 || window.location.href.indexOf('/employer/interview') > -1)) { window.location.href=PortalConstants.URL.MCF_PAGE_URL.CAREERS_FUTURE; } }else{ //ILPPROD-6143,URL Redirection to MCF Employer Portal from MySF Portal if (window.location.href.indexOf('/employer') > -1) { window.location.href=$GLOBAL_CONSTANTS.PAGE_URL.ERROR_PAGE; } else { clearInterval(CommonUtils.extendFnScheduler); var isSessionTime=$.cookie("sessionTimeOut"); var message; if(isSessionTime=='true'){ $.removeCookie("sessionTimeOut"); // remove the cookie that was used to enter "If" sstatement to display popup if(store.get('sessionExpired')){ store.set('sessionExpired',false); message = "Your session has expired. Click 'CLOSE' to close the current window."; /* $("#Common_Bootstrap_Modal_Popup #popup-content").text("") .text("Your session has expired. Click 'CLOSE' to close the current window."); */ }else{ message = "You have been logged out because another login session was detected. Click ‘CLOSE’ to close the current window."; /* $("#Common_Bootstrap_Modal_Popup #popup-content").text("") .text("You have been logged out because another login session was detected. Click ‘CLOSE’ to close the current window."); */ } CommonUtils.showCommonPopup("warning",message,null,null,"CLOSE"); /* $("#Common_Bootstrap_Modal_Popup").modal({ backdrop: 'static', keyboard: false }); */ $.cookie.defaults = { path: '/content'}; $.removeCookie("sessionTimeOut"); // delete cookie from /content $.cookie.defaults = { path: '/'}; $.removeCookie("sessionTimeOut"); clearComparisonCache(); } } } if (!$("#myInfoRedirect").length) { localStorage.removeItem("myInfoRedirect") } if(typeof moment !== "undefined"){ $('#last-updated-date').text(moment(new Date()).format('DD MMM YYYY')); }else{ var currentDateArr = (new Date).toDateString().split(" "); $('#last-updated-date').text(currentDateArr[2]+" "+currentDateArr[1]+" "+currentDateArr[3]); } }); </script> <script> $(document).ready(function() { // Analytics scripts start // if (typeof WorkforceAnalytics != 'undefined') { try{ WorkforceAnalytics.Common.trackLoginUserType(); WorkforceAnalytics.HeaderMenu.trackMenuClickForInternalPages(); }catch(err){ console.log('Analytics Error!'); } } if (typeof digitalData != "undefined" && digitalData.page && digitalData.page.pillar && digitalData.page.audience) { _satellite.pageBottom(); } // Analytics scripts end // //Check duplicate session if(!window.location.href.indexOf("/content/admin") > -1) { $UserLoginUtil.checkDuplicateSession(); } // show preference popup at homepage if user have not edited if(window.location.href.indexOf("/content/portal/en/index") > -1) { if(CommonUtils.checkUserIsLogin() && (PortalConstants.ENCODED_INFO["log-type"] == "SP" || PortalConstants.ENCODED_INFO["isPortalLogin"] == "true")) { CommonUtils.showIndividualPreferenceSetting(); } } var individualLoginType = RequestUtil.getURLParameter("individualLoginType"); if (individualLoginType && (individualLoginType == 'SingPass') && !(CommonUtils.checkUserIsLogin() && $UserLoginUtil.userLoginType == 'SP')) { $(window).bind("load", function () { setTimeout(function () { var getIndividualLoginTypeUrl = window.location.href; var individualLoginTypeRedirectUrl = $Util.removeURLParameter(getIndividualLoginTypeUrl, "individualLoginType"); assignRoute(individualLoginTypeRedirectUrl); $UserLoginUtil.submitILPIndividualLogin('individual-sp-login-form'); }, 1000); }); } }); </script> <!-- Load Javascript here --> <!-- <sly data-sly-call="org.apache.sling.scripting.sightly.libs.granite.sightly.templates.clientlib__002e__html$3@4314203" data-sly-unwrap/> --> <script src="/etc/clientlibs/msf/core-modules/tex/individual.min.js"></script> <!-- Footer will be overrided by child --> <!-- Will override in child template --> <script src="/etc/clientlibs/msf/core-base/gcwidget.min.js"></script> <!-- Will override in child template --> <!-- ALERT BOX POP UP PANEL --> <!-- **************************** --> <div id="Alert_PopupPanel" style="display:none;" class="modal fade"> <div class="Closebtn_PopupPanel"></div> <div class="contentblock"> <div class="message">Place your text here</div> <div class="ActionPanel"> <button class="btn btn_bigorange confirmButton" type="button">OK</button> <a href="#" class="btn btn_bigorange confirmLink" style="display:none;" type="button">OK</a> <button class="btn btn_bigorange cancelButton" type="button">Cancel</button> </div> </div> </div> <!-- Yes No POP UP PANEL --> <!-- **************************** --> <div id="Common_PopupPanel" style="display:none;" class="modal fade"> <div class="Closebtn_PopupPanel"></div> <div class="contentblock"> <div class="message"></div> <div class="ctabox"> <button class="ctabtn small confirmButton" type="button"></button> <a href="#" class="btn btn_bigorange confirmLink nop-link" style="display:none;" type="button"></a> <button class="ctabtn small cancelButton" type="button"></button> </div> </div> </div> <!-- Common Modal Popup by Bootstrap --> <div class="modal fade" id="Common_Bootstrap_Modal_Popup" tabindex="-1" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> <div class="general-message-holder"> <div> <div class="card"> <div class="card-body"> <div id="popup-icon-holder" class="message-icon mb-4"> </div> <h3 id="popup-content" class="mb-4"></h3> <div class="btn-holder justify-content-center"> <button data-bs-dismiss="modal" id="popup-btn-2" type="button" class="btn btn-outline-dark"></button> <button data-bs-dismiss="modal" id="popup-btn-1" type="button" class="btn btn-primary"></button> <!-- <a data-dismiss="modal" class="btn btn-outline-dark" id="popup-btn-2"></a> <a data-dismiss="modal" class="btn btn-primary" id="popup-btn-1"></a> --> </div> </div> </div> </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary d-none" data-bs-dismiss="modal">Close</button> </div> </div> </div> </div> <div id="duplicate_session_popup_modal" data-keyboard="false" data-backdrop="static" aria-hidden="true" class="modal fade duplicateSessionPopupModal" tabindex="-1" role="dialog"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title" style="text-align: center;">Duplicate Sessions</h4> </div> <div class="modal-body"> <div id="duplicate_session_container" style="text-align: center;"> <span>Another login session has been detected. If you continue, the previous session will be removed.</span> <br/><br/> <span>Do you want to continue?</span> </div> <div class="duplicateSessionContainer" style="text-align: center;margin-top: 23px;"> <a href="#" id="duplicate_session_popup_modal_yes_buttton" class="ctabtn tiffany op-link">Yes</a> <a href="#" id="duplicate_session_popup_modal_logout_buttton" class="ctabtn tiffany op-link">Logout</a> </div> </div> </div> </div> </div> </body> </html>