CINXE.COM

Ghost Status - Incident History

<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- force IE browsers in compatibility mode to use their most aggressive rendering engine --> <meta charset="utf-8"> <title>Ghost Status - Incident History</title> <meta name="description" content="Ghost&#39;s Incident and Scheduled Maintenance History"> <!-- Mobile viewport optimization --> <meta name="HandheldFriendly" content="True"> <meta name="MobileOptimized" content="320"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"> <!-- Time this page was rendered - http://purl.org/dc/terms/issued --> <meta name="issued" content="1732423246"> <!-- Mobile IE allows us to activate ClearType technology for smoothing fonts for easy reading --> <meta http-equiv="cleartype" content="on"> <!-- Le fonts --> <style> @font-face { font-family: 'proxima-nova'; src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaLight-f0b2f7c12b6b87c65c02d3c1738047ea67a7607fd767056d8a2964cc6a2393f7.eot?host=status.ghost.org'); src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaLight-f0b2f7c12b6b87c65c02d3c1738047ea67a7607fd767056d8a2964cc6a2393f7.eot?host=status.ghost.org#iefix') format('embedded-opentype'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaLight-e642ffe82005c6208632538a557e7f5dccb835c0303b06f17f55ccf567907241.woff?host=status.ghost.org') format('woff'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaLight-0f094da9b301d03292f97db5544142a16f9f2ddf50af91d44753d9310c194c5f.ttf?host=status.ghost.org') format('truetype'); font-weight:300; font-style:normal; } @font-face { font-family: 'proxima-nova'; src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegular-366d17769d864aa72f27defaddf591e460a1de4984bb24dacea57a9fc1d14878.eot?host=status.ghost.org'); src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegular-366d17769d864aa72f27defaddf591e460a1de4984bb24dacea57a9fc1d14878.eot?host=status.ghost.org#iefix') format('embedded-opentype'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegular-2ee4c449a9ed716f1d88207bd1094e21b69e2818b5cd36b28ad809dc1924ec54.woff?host=status.ghost.org') format('woff'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegular-a40a469edbd27b65b845b8000d47445a17def8ba677f4eb836ad1808f7495173.ttf?host=status.ghost.org') format('truetype'); font-weight:400; font-style:normal; } @font-face { font-family: 'proxima-nova'; src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegularIt-0bf83a850b45e4ccda15bd04691e3c47ae84fec3588363b53618bd275a98cbb7.eot?host=status.ghost.org'); src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegularIt-0bf83a850b45e4ccda15bd04691e3c47ae84fec3588363b53618bd275a98cbb7.eot?host=status.ghost.org#iefix') format('embedded-opentype'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegularIt-0c394ec7a111aa7928ea470ec0a67c44ebdaa0f93d1c3341abb69656cc26cbdd.woff?host=status.ghost.org') format('woff'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaRegularIt-9e43859f8015a4d47d9eaf7bafe8d1e26e3298795ce1f4cdb0be0479b8a4605e.ttf?host=status.ghost.org') format('truetype'); font-weight:400; font-style:italic; } @font-face { font-family: 'proxima-nova'; src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaSemibold-09566917307251d22021a3f91fc646f3e45f8d095209bcd2cded8a1979f06e54.eot?host=status.ghost.org'); src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaSemibold-09566917307251d22021a3f91fc646f3e45f8d095209bcd2cded8a1979f06e54.eot?host=status.ghost.org#iefix') format('embedded-opentype'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaSemibold-86724fb2152613d735ba47c3f47a9ad2424b898bea4bece213dacee40344f966.woff?host=status.ghost.org') format('woff'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaSemibold-cf3e4eb7fbdf6fb83e526cc2a0141e55b01097e6e1abfd4cbdc3eda75d183f74.ttf?host=status.ghost.org') format('truetype'); font-weight:500; font-style:normal; } @font-face { font-family: 'proxima-nova'; src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaBold-622ea489d20e12e691663f83217105e957e2d3d09703707d40155a29c06cc9d9.eot?host=status.ghost.org'); src: url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaBold-622ea489d20e12e691663f83217105e957e2d3d09703707d40155a29c06cc9d9.eot?host=status.ghost.org#iefix') format('embedded-opentype'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaBold-c8dc577ff7f76d2fc199843e38c04bb2e9fd15889421358d966a9f846c2ed1cd.woff?host=status.ghost.org') format('woff'), url('https://dka575ofm4ao0.cloudfront.net/assets/ProximaNovaBold-27177fe9242acbe089276ee587feef781446667ffe9b6fdc5b7fe21ad73e12f3.ttf?host=status.ghost.org') format('truetype'); font-weight:700; font-style:normal; } </style> <link rel="shortcut icon" type="image/x-icon" href="//dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/2629/ghost-orb-black-transparent-04.png" /> <link rel="shortcut icon" href='//dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/2629/ghost-orb-black-transparent-04.png'> <link rel="alternate" type="application/atom+xml" href="https://status.ghost.org/history.atom" title="Ghost Status History - Atom Feed"> <link rel="alternate" type="application/rss+xml" href="https://status.ghost.org/history.rss" title="Ghost Status History - RSS Feed"> <!-- Canonical Link to ensure that only the custom domain is indexed when present --> <link rel="canonical" href="https://status.ghost.org/history"> <meta name="_globalsign-domain-verification" content="y_VzfckMy4iePo5oDJNivyYIjh8LffYa4jzUndm_bZ"/> <link rel="alternate" type="application/atom+xml" title="ATOM" href="https://status.ghost.org/history.atom" /> <!-- Le styles --> <link rel="stylesheet" media="screen" href="https://dka575ofm4ao0.cloudfront.net/packs/0.8826066e0f95dc57bbe6.css" /><link rel="stylesheet" media="screen" href="https://dka575ofm4ao0.cloudfront.net/packs/155.8826066e0f95dc57bbe6.css" /> <link rel="stylesheet" media="all" href="https://dka575ofm4ao0.cloudfront.net/assets/status/status_manifest-260e48dd9b8c9b04e8d6c6286f76aecb8ac22f273beea6dba3eee902141bcbfe.css" /> <script src="https://dka575ofm4ao0.cloudfront.net/assets/jquery-3.5.1.min-729e416557a365062a8a20f0562f18aa171da57298005d392312670c706c68de.js"></script> <script> window.pageColorData = {"blue":"#14B8FF","border":"#EBEEF0","body_background":"#FFFFFF","font":"#15171A","graph":"#8E42FF","green":"#30CF43","light_font":"#7C8B9A","link":"#8E42FF","orange":"#FF8214","red":"#F50B23","yellow":"#FFB41F","no_data":"#CED4D9"}; </script> <style> /* BODY BACKGROUND */ /* BODY BACKGROUND */ /* BODY BACKGROUND */ /* BODY BACKGROUND */ /* BODY BACKGROUND */ body, .layout-content.status.status-api .section .example-container .example-opener .color-secondary, .grouped-items-selector, .layout-content.status.status-full-history .history-nav a.current, div[id^="subscribe-modal"] .modal-footer, div[id^="subscribe-modal"], div[id^="updates-dropdown"] .updates-dropdown-section, #uptime-tooltip .tooltip-box { background-color:#FFFFFF; } #uptime-tooltip .pointer-container .pointer-smaller { border-bottom-color:#FFFFFF; } /* PRIMARY FONT COLOR */ /* PRIMARY FONT COLOR */ /* PRIMARY FONT COLOR */ /* PRIMARY FONT COLOR */ body.status, .color-primary, .color-primary:hover, .layout-content.status-index .status-day .update-title.impact-none a, .layout-content.status-index .status-day .update-title.impact-none a:hover, .layout-content.status-index .timeframes-container .timeframe.active, .layout-content.status-full-history .month .incident-container .impact-none, .layout-content.status.status-index .incidents-list .incident-title.impact-none a, .incident-history .impact-none, .layout-content.status .grouped-items-selector.inline .grouped-item.active, .layout-content.status.status-full-history .history-nav a.current, .layout-content.status.status-full-history .history-nav a:not(.current):hover, div[id^="subscribe-modal"] .modal-header .close, .grouped-item-label, #uptime-tooltip .tooltip-box .tooltip-content .related-events .related-event a.related-event-link { color:#15171A; } .layout-content.status.status-index .components-statuses .component-container .name { color:#15171A; color:rgba(21,23,26,.8); } /* SECONDARY FONT COLOR */ /* SECONDARY FONT COLOR */ /* SECONDARY FONT COLOR */ /* SECONDARY FONT COLOR */ small, .layout-content.status .table-row .date, .color-secondary, .layout-content.status .grouped-items-selector.inline .grouped-item, .layout-content.status.status-full-history .history-footer .pagination a.disabled, .layout-content.status.status-full-history .history-nav a, #uptime-tooltip .tooltip-box .tooltip-content .related-events #related-event-header { color:#7C8B9A; } /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ body.status .layout-content.status .border-color, hr, .tooltip-base, .markdown-display table, div[id^="subscribe-modal"], #uptime-tooltip .tooltip-box { border-color:#EBEEF0; } div[id^="subscribe-modal"] .modal-footer, .markdown-display table td { border-top-color:#EBEEF0; } .markdown-display table td + td, .markdown-display table th + th { border-left-color:#EBEEF0; } div[id^="subscribe-modal"] .modal-header, #uptime-tooltip .pointer-container .pointer-larger { border-bottom-color:#EBEEF0; } #uptime-tooltip .tooltip-box .outage-field { /* Generate the background-color for the outage-field from the css_body_background_color and css_border_color. For the default background (#ffffff) and default css_border_color (#e0e0e0), use the luminosity of the default background with a magic number to arrive at the original outage-field background color (#f4f5f7). I used the formula Target Color = Color * alpha + Background * (1 - alpha) to find the magic number of ~0.08. For darker css_body_background_color, luminosity values are lower so alpha trends toward becoming transparent (thus outage-field background becomes same as css_body_background_color). */ background-color: rgba(235,238,240,0.31); /* outage-field border-color alpha is inverse to the luminosity of css_body_background_color. That is to say, with a default white background this border is transparent, but on a black background, it's opaque css_border_color. */ border-color: rgba(235,238,240,0.0); } /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ .layout-content.status.status-index .status-day .update-title.impact-critical a, .layout-content.status.status-index .status-day .update-title.impact-critical a:hover, .layout-content.status.status-index .page-status.status-critical, .layout-content.status.status-index .unresolved-incident.impact-critical .incident-title, .flat-button.background-red { background-color:#F50B23; } .layout-content.status-index .components-statuses .component-container.status-red:after, .layout-content.status-full-history .month .incident-container .impact-critical, .layout-content.status-incident .incident-name.impact-critical, .layout-content.status.status-index .incidents-list .incident-title.impact-critical a, .status-red .icon-indicator, .incident-history .impact-critical, .components-container .component-inner-container.status-red .component-status, .components-container .component-inner-container.status-red .icon-indicator { color:#F50B23; } .layout-content.status.status-index .unresolved-incident.impact-critical .updates { border-color:#F50B23; } /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ .layout-content.status.status-index .status-day .update-title.impact-major a, .layout-content.status.status-index .status-day .update-title.impact-major a:hover, .layout-content.status.status-index .page-status.status-major, .layout-content.status.status-index .unresolved-incident.impact-major .incident-title { background-color:#FF8214; } .layout-content.status-index .components-statuses .component-container.status-orange:after, .layout-content.status-full-history .month .incident-container .impact-major, .layout-content.status-incident .incident-name.impact-major, .layout-content.status.status-index .incidents-list .incident-title.impact-major a, .status-orange .icon-indicator, .incident-history .impact-major, .components-container .component-inner-container.status-orange .component-status, .components-container .component-inner-container.status-orange .icon-indicator { color:#FF8214; } .layout-content.status.status-index .unresolved-incident.impact-major .updates { border-color:#FF8214; } /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ .layout-content.status.status-index .status-day .update-title.impact-minor a, .layout-content.status.status-index .status-day .update-title.impact-minor a:hover, .layout-content.status.status-index .page-status.status-minor, .layout-content.status.status-index .unresolved-incident.impact-minor .incident-title, .layout-content.status.status-index .scheduled-incidents-container .tab { background-color:#FFB41F; } .layout-content.status-index .components-statuses .component-container.status-yellow:after, .layout-content.status-full-history .month .incident-container .impact-minor, .layout-content.status-incident .incident-name.impact-minor, .layout-content.status.status-index .incidents-list .incident-title.impact-minor a, .status-yellow .icon-indicator, .incident-history .impact-minor, .components-container .component-inner-container.status-yellow .component-status, .components-container .component-inner-container.status-yellow .icon-indicator, .layout-content.status.manage-subscriptions .confirmation-infobox .fa { color:#FFB41F; } .layout-content.status.status-index .unresolved-incident.impact-minor .updates, .layout-content.status.status-index .scheduled-incidents-container { border-color:#FFB41F; } /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ .layout-content.status.status-index .status-day .update-title.impact-maintenance a, .layout-content.status.status-index .status-day .update-title.impact-maintenance a:hover, .layout-content.status.status-index .page-status.status-maintenance, .layout-content.status.status-index .unresolved-incident.impact-maintenance .incident-title, .layout-content.status.status-index .scheduled-incidents-container .tab { background-color:#14B8FF; } .layout-content.status-index .components-statuses .component-container.status-blue:after, .layout-content.status-full-history .month .incident-container .impact-maintenance, .layout-content.status-incident .incident-name.impact-maintenance, .layout-content.status.status-index .incidents-list .incident-title.impact-maintenance a, .status-blue .icon-indicator, .incident-history .impact-maintenance, .components-container .component-inner-container.status-blue .component-status, .components-container .component-inner-container.status-blue .icon-indicator { color:#14B8FF; } .layout-content.status.status-index .unresolved-incident.impact-maintenance .updates, .layout-content.status.status-index .scheduled-incidents-container { border-color:#14B8FF; } /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ .layout-content.status.status-index .page-status.status-none { background-color:#30CF43; } .layout-content.status-index .components-statuses .component-container.status-green:after, .status-green .icon-indicator, .components-container .component-inner-container.status-green .component-status, .components-container .component-inner-container.status-green .icon-indicator { color:#30CF43; } /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ a, a:hover, .layout-content.status-index .page-footer span a:hover, .layout-content.status-index .timeframes-container .timeframe:not(.active):hover, .layout-content.status-incident .subheader a:hover { color:#8E42FF; } .flat-button, .masthead .updates-dropdown-container .show-updates-dropdown, .layout-content.status-full-history .show-filter.open { background-color:#8E42FF; } /* CUSTOM COLOR OVERRIDES FOR UPTIME SHOWCASE */ .components-section .components-uptime-link { color: #7c8b9a; } .layout-content.status .shared-partial.uptime-90-days-wrapper .legend .legend-item { color: #7c8b9a; opacity: 1; } .layout-content.status .shared-partial.uptime-90-days-wrapper .legend .legend-item.light { color: #7c8b9a; opacity: 1; } .layout-content.status .shared-partial.uptime-90-days-wrapper .legend .spacer { background: #7c8b9a; opacity: 1; } </style> <!-- custom css --> <link rel="stylesheet" type="text/css" href="//dka575ofm4ao0.cloudfront.net/page_display_customizations-custom_css_externals/2579/external20230206-55-267dvg.css"> <!-- polyfills --> <script crossorigin="anonymous" src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.js"></script> <!-- Le HTML5 shim --> <!--[if lt IE 9]> <script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <!-- injection for static --> </head> <body class="status history status-none"> <div class="layout-content status status-full-history starter"> <div class="custom-header-container"> <link rel="stylesheet" type="text/css" href="https://cloud.typography.com/6076934/6684552/css/fonts.css"/> <header class="gh-head"> <nav class="gh-navbar inner"> <div class="gh-navbar-left"> <a class="gh-nav-logo gh-navbar-item" href="https://status.ghost.org"> <img src="https://ghost.org/images/logos/logo-black-1.png" alt="Ghost" width="90" height="33" /> <div class="gh-nav-logo-suffix">Status</div></a> </div> <div class="gh-navbar-right"> <a class="gh-navbar-btn gh-btn" href="mailto:support@ghost.org" id="signin-button"><span>Contact Support</span></a> </div> </nav> </header> <header class="gh-mobilehead"> <nav class="gh-mobilenavbar"> <a class="gh-nav-burger" href="#"> <div class="hamburger hamburger--collapse" aria-label="Menu" role="button" aria-controls="navigation"> <div class="hamburger-box"><div class="hamburger-inner"></div></div> </div> </a> <a class="gh-nav-logo" href="/"> <img src="https://ghost.org/images/logos/logo-black-1.png" alt="Ghost" width="90" height="33" /> </a> <a class="gh-login-link" href="/">Back to Ghost</a> </nav> <div class="gh-mobilemenu"> <a href="https://status.ghost.org">Network status</a> <a href="/history">Incident history</a> <a href="mailto:support@ghost.org">Contact Support</a> <a href="https://help.ghost.org">Help center</a> <a href="https://ghost.org">Back to Ghost</a> </div> </header> <div class="updates-dropdown-container" data-js-hook="updates-dropdown-container"> <a href="#" data-js-hook="show-updates-dropdown" id="show-updates-dropdown" class="show-updates-dropdown" aria-label="Subscribe to updates" aria-expanded="false" aria-haspopup="dialog" role="button"> </a> <!-- Accessibility guidelines for tabs: https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html --> <div class="updates-dropdown" data-js-hook="updates-dropdown" id="updates-dropdown" style="display:none"> <div class="updates-dropdown-nav nav-items-3" role="tablist" aria-label="Subscribe to updates"> <a href="#updates-dropdown-support" aria-controls="updates-dropdown-support" aria-label="Contact support" role="tab" id="updates-dropdown-support-btn"> <span class="icon-container support"> </a> <a href="#updates-dropdown-atom" aria-controls="updates-dropdown-atom" aria-label="Subscribe via RSS" role="tab" id="updates-dropdown-atom-btn"> <span class="icon-container rss"> </a> <button data-js-hook="updates-dropdown-close" aria-label="Close subscribe form" id="updates-dropdown-close-btn"> x </button> </div> <div class="updates-dropdown-sections-container"> <div class="updates-dropdown-section support" id="updates-dropdown-support" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-support-btn"> Visit our <a target="_blank" href="https://ghost.org/help">support site</a>. </div> <div class="updates-dropdown-section atom" id="updates-dropdown-atom" role="tabpanel" aria-labelledby="updates-dropdown-atom-btn"> Get the <a href="https://status.ghost.org/history.atom" target="_blank">Atom Feed</a> or <a href="https://status.ghost.org/history.rss" target="_blank">RSS Feed</a>. </div> </div> </div> </div> <script> $(function () { const phoneNumberInput = $('#phone-number'); const errorDiv = $('#sms-atl-error') if(errorDiv.length){ function checkSelectedCountry() { const selectedCountry = $('#phone-country').val(); const isOtpEnabled = $('#phone-number-country-code').attr('data-otp-enabled') === 'true'; const form = document.getElementById('subscribe-form-sms'); form.action = '/subscriptions/new-sms'; const isOtpFlow = document.getElementById('otp_verify_flow'); document.getElementById('otp-container').style.display = "none"; if(false && selectedCountry === 'sg') { // Replace 'SG' with the actual value representing Singapore in your select tag phoneNumberInput.prop('disabled', true); errorDiv.html(`Due to new Singapore government regulations, we're currently not supporting text subscriptions in Singapore.<a href="https://community.atlassian.com/t5/Statuspage-articles/Attention-SMS-notifications-will-be-disabled-on-August-1st-2023/ba-p/2424398" target="_blank"> Learn more.</a> <br> Select another method to subscribe.`); } else { phoneNumberInput.prop('readonly', false); errorDiv.html(''); if(false){ if(isOtpEnabled){ document.getElementById('subscribe-btn-sms').value = "Send OTP"; } else { isOtpFlow.value = false; document.getElementById('subscribe-btn-sms').value = "Subscribe via Text Message"; } } } } $('#phone-country').on('change', checkSelectedCountry); checkSelectedCountry(); } }); document.addEventListener('DOMContentLoaded', function() { const dropdown = document.querySelector('#phone-number-country-code .phone-country'); if (dropdown){ const wrapperDiv = document.getElementById('phone-number-country-code'); const selectedOption = dropdown.options[dropdown.selectedIndex]; const otpEnabled = selectedOption.getAttribute('data-otp-enabled'); wrapperDiv.setAttribute('data-otp-enabled', otpEnabled); dropdown.addEventListener('change', function() { const selectedOption = dropdown.options[dropdown.selectedIndex]; const otpEnabled = selectedOption.getAttribute('data-otp-enabled'); wrapperDiv.setAttribute('data-otp-enabled', otpEnabled); }); } }); var countdownTimer; var resendBtn = document.getElementById('resend'); var timer = document.getElementById('timer'); var form = document.getElementById('subscribe-form-sms'); var RESEND_TIMER = 30; $(function() { $('#subscribe-form-sms').on('ajax:success', function(e, data, status, xhr){ const form = this; const action = form.getAttribute('action'); if (data.type === 'success' && data.otp_flow === true) { document.getElementById('subscriber_code').value = data.subscriber_code document.getElementById('otp-container').style.display = "block"; $('#phone-number').prop('readonly', true); var display = document.getElementById('countdown'); disableResend(); startTimer(RESEND_TIMER, display) document.getElementById('subscribe-btn-sms').value = "Verify OTP and Subscribe"; document.getElementById('otp_verify_flow').value = true; form.action = '/subscriptions/verify-otp'; } else if (data.type === 'success' && action.includes('verify')){ document.getElementById('otp-container').style.display = "none"; $('#phone-number').val('').prop('readonly', false); $('#otp').val(''); document.getElementById('subscribe-btn-sms').value = "Send OTP"; document.getElementById('otp_verify_flow').value = false; form.action = '/subscriptions/new-sms'; SP.currentPage.updatesDropdown.hide(); } }); $("#btn-subcriber-change-number").on('click', () => { document.getElementById('otp-container').style.display = "none"; $('#phone-number').prop('readonly', false); document.getElementById('subscribe-btn-sms').value = "Send OTP"; form.action = '/subscriptions/new-sms'; return false }) $('#resend-otp-btn').on('click', function(e) { e.preventDefault(); let phoneNumber = $('#phone-number').val(); let countryCode = $('.phone-country').val(); $.ajax({ type: 'POST', url: "/subscriptions/new-sms", data: { phone_number: phoneNumber, phone_country: countryCode, type: 'resend' }, }).done(function(data) { var messageOptions = (data.type !== undefined && data.type !== null) ? { cssClass: data.type } : {}; HRB.utils.notify(data.text, messageOptions); var display = document.getElementById('countdown'); disableResend(); timer.style.display = "none" if (data.type === 'success') { startTimer(RESEND_TIMER, display); } }) }); }) function startTimer(duration, display){ var timer = duration, seconds; clearInterval(countdownTimer); countdownTimer = setInterval(function () { seconds = parseInt(timer % 60, 10); display.textContent = seconds; if(--timer < 0){ enableResend(); clearInterval(countdownTimer); } }, 1000); disableResend(); } function enableResend(){ resendBtn.style.display = "block"; timer.style.display = "none" } function disableResend(){ resendBtn.style.display = "none"; timer.style.display = "block" } $(function() { $('#subscribe-form-email').on('submit', function() { var tokenField = document.getElementById('email-otp-token-field'); let page_code = "r10zygrn4kl3" let key = keyForEmailOtpToken($('#email').val(), page_code); tokenField.value = localStorage.getItem(key); }); }); var emailOtpCountdownTimer; var emailOtpResendBtn = document.getElementById('resend-email-otp'); var emailOtpTimer = document.getElementById('email-otp-timer'); var emailOtpForm = document.getElementById('subscribe-form-email'); var EMAIL_OTP_RESEND_TIMER = 600; $(function() { $('#subscribe-form-email').on('ajax:success', function(e, data, status, xhr){ const form = this; const action = form.getAttribute('action'); if (data.type === 'success' && data.email_otp_verify_flow === true) { document.getElementById('email-otp-container').style.display = "block"; var display = document.getElementById('email-otp-countdown'); display.textContent = EMAIL_OTP_RESEND_TIMER; disableEmailOtpResend(); startEmailOtpTimer(EMAIL_OTP_RESEND_TIMER, display) document.getElementById('subscribe-btn-email').value = "Verify OTP and Subscribe"; document.getElementById('email_otp_verify_flow').value = true; form.action = '/subscriptions/verify-email-otp'; } else if (data.type === 'success' && action.includes('verify')){ let email = $('#email') let page_code = "r10zygrn4kl3" let key = keyForEmailOtpToken(email.val(), page_code); localStorage.setItem(key, data.email_otp_auth_token); document.getElementById('email-otp-container').style.display = "none"; email.val('').prop('readonly', false); $('#email-otp').val(''); document.getElementById('subscribe-btn-email').value = "Send OTP"; document.getElementById('email_otp_verify_flow').value = false; form.action = '/subscriptions/new-email'; SP.currentPage.updatesDropdown.hide(); } }); $('#resend-email-otp-btn').on('click', function(e) { e.preventDefault(); let email = $('#email').val(); $.ajax({ type: 'POST', url: "/subscriptions/new-email", data: { email: email }, }).done(function(data) { var messageOptions = (data.type !== undefined && data.type !== null) ? { cssClass: data.type } : {}; HRB.utils.notify(data.text, messageOptions); if (data.type === 'success') { var display = document.getElementById('email-otp-countdown'); display.textContent = EMAIL_OTP_RESEND_TIMER; disableEmailOtpResend(); emailOtpTimer.style.display = "none" startEmailOtpTimer(EMAIL_OTP_RESEND_TIMER, display); } }) }); }) function startEmailOtpTimer(duration, display){ var timer = duration, seconds; clearInterval(emailOtpCountdownTimer); emailOtpCountdownTimer = setInterval(function () { seconds = parseInt(timer, 10); display.textContent = seconds; if(--timer < 0){ enableEmailOtpResend(); clearInterval(emailOtpCountdownTimer); } }, 1000); disableEmailOtpResend(); } function enableEmailOtpResend(){ emailOtpResendBtn.style.display = "block"; emailOtpTimer.style.display = "none" } function disableEmailOtpResend(){ emailOtpResendBtn.style.display = "none"; emailOtpTimer.style.display = "block" } function keyForEmailOtpToken(email, pageCode) { return email + '|' + pageCode+ '|SUBSCRIBE_VIA_EMAIL'; } </script> </div> <div class="container"> <div class="history-nav border-color"> <ul> <li> <a class="button current border-color" href="https://status.ghost.org/history" aria-label="Incidents" aria-current=page>Incidents</a> </li> <li> <a class="button border-color" href="https://status.ghost.org/uptime" aria-label="Uptime" >Uptime</a> </li> </ul> </div> <div data-react-class="HistoryIndex" data-react-props="{&quot;page_status&quot;:{&quot;page&quot;:{&quot;name&quot;:&quot;Ghost&quot;,&quot;subdomain&quot;:&quot;ghost&quot;,&quot;domain&quot;:&quot;status.ghost.org&quot;,&quot;created_at&quot;:&quot;2013-12-11T07:40:52.766Z&quot;,&quot;updated_at&quot;:&quot;2024-11-24T02:50:06.176Z&quot;,&quot;url&quot;:&quot;https://ghost.org&quot;,&quot;hidden_from_search&quot;:false,&quot;css_body_background_color&quot;:&quot;FFFFFF&quot;,&quot;css_font_color&quot;:&quot;15171A&quot;,&quot;css_light_font_color&quot;:&quot;7C8B9A&quot;,&quot;css_greens&quot;:&quot;30CF43&quot;,&quot;css_yellows&quot;:&quot;FFB41F&quot;,&quot;css_oranges&quot;:&quot;FF8214&quot;,&quot;css_reds&quot;:&quot;F50B23&quot;,&quot;allow_page_subscribers&quot;:false,&quot;allow_incident_subscribers&quot;:false,&quot;notifications_from_email&quot;:&quot;support@ghost.org&quot;,&quot;allow_email_subscribers&quot;:false,&quot;allow_sms_subscribers&quot;:false,&quot;twitter_username&quot;:null,&quot;branding&quot;:&quot;basic&quot;,&quot;support_url&quot;:&quot;https://ghost.org/help&quot;,&quot;allow_webhook_subscribers&quot;:false,&quot;css_border_color&quot;:&quot;EBEEF0&quot;,&quot;css_graph_color&quot;:&quot;8E42FF&quot;,&quot;css_link_color&quot;:&quot;8E42FF&quot;,&quot;page_description&quot;:null,&quot;activity_score&quot;:577,&quot;headline&quot;:&quot;Ghost Status&quot;,&quot;viewers_must_be_team_members&quot;:false,&quot;ip_filters&quot;:null,&quot;css_blues&quot;:&quot;14B8FF&quot;,&quot;time_zone&quot;:&quot;UTC&quot;,&quot;notifications_reply_to_email&quot;:null,&quot;notifications_email_footer&quot;:&quot;You received this email because you are subscribed to Ghost&#39;s service status notifications.&quot;,&quot;allow_rss_atom_feeds&quot;:true,&quot;black_hole&quot;:null,&quot;over_allocations_cohort&quot;:null,&quot;over_allocations_resolved_at&quot;:null,&quot;custom_components_limit&quot;:null,&quot;allow_slack_subscribers&quot;:false,&quot;css_no_data&quot;:&quot;CED4D9&quot;,&quot;deleted_at&quot;:null,&quot;allow_teams_subscription&quot;:false,&quot;max_maintenance_automation_allowed&quot;:null,&quot;hero_cover&quot;:{&quot;updated_at&quot;:&quot;2013-12-11T07:53:12.000+00:00&quot;,&quot;original_url&quot;:&quot;//dka575ofm4ao0.cloudfront.net/pages-hero_covers/original/2629/open-uri20131211-28772-1krtmdg&quot;,&quot;size&quot;:252934,&quot;normal_url&quot;:&quot;//dka575ofm4ao0.cloudfront.net/pages-hero_covers/normal/2629/open-uri20131211-28772-1krtmdg&quot;,&quot;retina_url&quot;:&quot;//dka575ofm4ao0.cloudfront.net/pages-hero_covers/retina/2629/open-uri20131211-28772-1krtmdg&quot;},&quot;transactional_logo&quot;:{&quot;updated_at&quot;:&quot;2016-08-04T17:08:21.000+00:00&quot;,&quot;original_url&quot;:&quot;//dka575ofm4ao0.cloudfront.net/pages-transactional_logos/original/2629/btqJzUe6SdqWf5wudAmw&quot;,&quot;size&quot;:11710,&quot;normal_url&quot;:&quot;//dka575ofm4ao0.cloudfront.net/pages-transactional_logos/normal/2629/btqJzUe6SdqWf5wudAmw&quot;,&quot;retina_url&quot;:&quot;//dka575ofm4ao0.cloudfront.net/pages-transactional_logos/retina/2629/btqJzUe6SdqWf5wudAmw&quot;},&quot;favicon_logo&quot;:{&quot;updated_at&quot;:&quot;2021-11-03T15:09:29.000+00:00&quot;,&quot;size&quot;:176137,&quot;url&quot;:&quot;//dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/2629/ghost-orb-black-transparent-04.png&quot;},&quot;email_logo&quot;:{&quot;updated_at&quot;:null,&quot;original_url&quot;:&quot;&quot;,&quot;size&quot;:null,&quot;normal_url&quot;:&quot;&quot;,&quot;retina_url&quot;:&quot;&quot;},&quot;twitter_logo&quot;:{&quot;updated_at&quot;:null,&quot;size&quot;:null,&quot;url&quot;:&quot;&quot;},&quot;id&quot;:&quot;r10zygrn4kl3&quot;,&quot;organization_id&quot;:&quot;vvyvvt0yn5z4&quot;}},&quot;components&quot;:[{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;Ghost.org&quot;,&quot;created_at&quot;:&quot;2013-12-11T07:40:52.777Z&quot;,&quot;updated_at&quot;:&quot;2024-05-02T08:01:40.989Z&quot;,&quot;position&quot;:1,&quot;description&quot;:null,&quot;showcase&quot;:true,&quot;start_date&quot;:null,&quot;id&quot;:&quot;kqc9mql5pstp&quot;,&quot;group_id&quot;:null,&quot;page_id&quot;:&quot;r10zygrn4kl3&quot;,&quot;group&quot;:false,&quot;only_show_if_degraded&quot;:false},{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;Ghost(Pro)&quot;,&quot;created_at&quot;:&quot;2013-12-11T07:44:36.180Z&quot;,&quot;updated_at&quot;:&quot;2024-11-04T00:51:32.352Z&quot;,&quot;position&quot;:2,&quot;description&quot;:null,&quot;showcase&quot;:true,&quot;start_date&quot;:null,&quot;id&quot;:&quot;tq1s8nd65jvb&quot;,&quot;group_id&quot;:null,&quot;page_id&quot;:&quot;r10zygrn4kl3&quot;,&quot;group&quot;:false,&quot;only_show_if_degraded&quot;:false},{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;Email Delivery&quot;,&quot;created_at&quot;:&quot;2023-02-06T15:36:21.712Z&quot;,&quot;updated_at&quot;:&quot;2023-02-06T21:53:25.238Z&quot;,&quot;position&quot;:3,&quot;description&quot;:null,&quot;showcase&quot;:false,&quot;start_date&quot;:null,&quot;id&quot;:&quot;ytkccnm35sw9&quot;,&quot;group_id&quot;:null,&quot;page_id&quot;:&quot;r10zygrn4kl3&quot;,&quot;group&quot;:true,&quot;only_show_if_degraded&quot;:false,&quot;components&quot;:[&quot;3k0lsfjh4t70&quot;,&quot;h5tvmr0smrsh&quot;]},{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;Delivery&quot;,&quot;created_at&quot;:&quot;2023-02-06T15:36:21.742Z&quot;,&quot;updated_at&quot;:&quot;2024-05-27T16:21:03.390Z&quot;,&quot;position&quot;:1,&quot;description&quot;:null,&quot;showcase&quot;:false,&quot;start_date&quot;:&quot;2023-02-06T00:00:00.000Z&quot;,&quot;id&quot;:&quot;3k0lsfjh4t70&quot;,&quot;group_id&quot;:&quot;ytkccnm35sw9&quot;,&quot;page_id&quot;:&quot;r10zygrn4kl3&quot;,&quot;group&quot;:false,&quot;only_show_if_degraded&quot;:false},{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;Analytics&quot;,&quot;created_at&quot;:&quot;2023-02-06T15:36:41.038Z&quot;,&quot;updated_at&quot;:&quot;2024-05-27T16:21:03.413Z&quot;,&quot;position&quot;:2,&quot;description&quot;:null,&quot;showcase&quot;:false,&quot;start_date&quot;:&quot;2023-02-06T00:00:00.000Z&quot;,&quot;id&quot;:&quot;h5tvmr0smrsh&quot;,&quot;group_id&quot;:&quot;ytkccnm35sw9&quot;,&quot;page_id&quot;:&quot;r10zygrn4kl3&quot;,&quot;group&quot;:false,&quot;only_show_if_degraded&quot;:false},{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;Firewall&quot;,&quot;created_at&quot;:&quot;2022-05-02T16:48:12.237Z&quot;,&quot;updated_at&quot;:&quot;2024-08-13T06:00:02.357Z&quot;,&quot;position&quot;:4,&quot;description&quot;:null,&quot;showcase&quot;:false,&quot;start_date&quot;:null,&quot;id&quot;:&quot;r29x94hxzdwb&quot;,&quot;group_id&quot;:null,&quot;page_id&quot;:&quot;r10zygrn4kl3&quot;,&quot;group&quot;:false,&quot;only_show_if_degraded&quot;:false},{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;CDN&quot;,&quot;created_at&quot;:&quot;2022-05-02T16:48:11.047Z&quot;,&quot;updated_at&quot;:&quot;2024-08-13T06:00:02.396Z&quot;,&quot;position&quot;:5,&quot;description&quot;:null,&quot;showcase&quot;:false,&quot;start_date&quot;:null,&quot;id&quot;:&quot;48fnm02kv2bt&quot;,&quot;group_id&quot;:null,&quot;page_id&quot;:&quot;r10zygrn4kl3&quot;,&quot;group&quot;:false,&quot;only_show_if_degraded&quot;:false},{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;Stripe API&quot;,&quot;created_at&quot;:&quot;2022-05-02T16:45:57.396Z&quot;,&quot;updated_at&quot;:&quot;2023-06-17T18:04:23.495Z&quot;,&quot;position&quot;:6,&quot;description&quot;:null,&quot;showcase&quot;:false,&quot;start_date&quot;:null,&quot;id&quot;:&quot;rzbtydy9pc7l&quot;,&quot;group_id&quot;:null,&quot;page_id&quot;:&quot;r10zygrn4kl3&quot;,&quot;group&quot;:false,&quot;only_show_if_degraded&quot;:false},{&quot;status&quot;:&quot;operational&quot;,&quot;name&quot;:&quot;Stripe Checkout.js&quot;,&quot;created_at&quot;:&quot;2022-05-02T16:46:00.357Z&quot;,&quot;updated_at&quot;:&quot;2023-02-06T21:53:31.530Z&quot;,&quot;position&quot;:7,&quot;description&quot;:null,&quot;showcase&quot;:false,&quot;start_date&quot;:null,&quot;id&quot;:&quot;pfcq1x5ndpys&quot;,&quot;group_id&quot;:null,&quot;page_id&quot;:&quot;r10zygrn4kl3&quot;,&quot;group&quot;:false,&quot;only_show_if_degraded&quot;:false}],&quot;months&quot;:[{&quot;name&quot;:&quot;November&quot;,&quot;year&quot;:2024,&quot;starts_on&quot;:5,&quot;days&quot;:30,&quot;incidents&quot;:[{&quot;code&quot;:&quot;rh82qzjbnxyz&quot;,&quot;name&quot;:&quot;Outage on Ghost(Pro)&quot;,&quot;message&quot;:&quot;This incident has been resolved.&quot;,&quot;impact&quot;:&quot;minor&quot;,&quot;timestamp&quot;:&quot;Nov \u003cvar data-var=&#39;date&#39;\u003e3\u003c/var\u003e, \u003cvar data-var=&#39;time&#39;\u003e21:01\u003c/var\u003e - Nov \u003cvar data-var=&#39;date&#39;\u003e4\u003c/var\u003e, \u003cvar data-var=&#39;time&#39;\u003e00:51\u003c/var\u003e UTC&quot;}]},{&quot;name&quot;:&quot;October&quot;,&quot;year&quot;:2024,&quot;starts_on&quot;:2,&quot;days&quot;:31,&quot;incidents&quot;:[{&quot;code&quot;:&quot;ys6jfr92625d&quot;,&quot;name&quot;:&quot;Reduced Performance on Ghost(Pro)&quot;,&quot;message&quot;:&quot;This incident has been resolved.&quot;,&quot;impact&quot;:&quot;minor&quot;,&quot;timestamp&quot;:&quot;Oct \u003cvar data-var=&#39;date&#39;\u003e10\u003c/var\u003e, \u003cvar data-var=&#39;time&#39;\u003e20:08\u003c/var\u003e - \u003cvar data-var=&#39;time&#39;\u003e21:20\u003c/var\u003e UTC&quot;}]},{&quot;name&quot;:&quot;September&quot;,&quot;year&quot;:2024,&quot;starts_on&quot;:0,&quot;days&quot;:30,&quot;incidents&quot;:[{&quot;code&quot;:&quot;sbqghr0p9f04&quot;,&quot;name&quot;:&quot;Outage on Ghost(Pro)&quot;,&quot;message&quot;:&quot;This incident has been resolved.&quot;,&quot;impact&quot;:&quot;none&quot;,&quot;timestamp&quot;:&quot;Sep \u003cvar data-var=&#39;date&#39;\u003e21\u003c/var\u003e, \u003cvar data-var=&#39;time&#39;\u003e19:16\u003c/var\u003e - \u003cvar data-var=&#39;time&#39;\u003e19:17\u003c/var\u003e UTC&quot;},{&quot;code&quot;:&quot;wcn9zqxqhtxg&quot;,&quot;name&quot;:&quot;[Scheduled] Database infrastructure&quot;,&quot;message&quot;:&quot;The scheduled maintenance has been completed.&quot;,&quot;impact&quot;:&quot;maintenance&quot;,&quot;timestamp&quot;:&quot;Sep \u003cvar data-var=&#39;date&#39;\u003e4\u003c/var\u003e, \u003cvar data-var=&#39;time&#39;\u003e05:00\u003c/var\u003e - \u003cvar data-var=&#39;time&#39;\u003e06:40\u003c/var\u003e UTC&quot;}]}],&quot;show_component_filter&quot;:false,&quot;show_uptime_calendar&quot;:true,&quot;component_filter&quot;:null,&quot;start_time&quot;:&quot;2024-09-01T00:00:00Z&quot;,&quot;end_time&quot;:&quot;2024-11-30T23:59:59Z&quot;}"></div> <div class="page-footer border-color font-small"> <a href="/" aria-label="Back to current status"> <span class="current-status-arrow">&larr;</span> Current Status </a> <span class="color-secondary powered-by"><a class="color-secondary" target="_blank" rel="noopener noreferrer nofollow" href="https://www.atlassian.com/software/statuspage?utm_campaign=status.ghost.org&amp;utm_content=SP-notifications&amp;utm_medium=powered-by&amp;utm_source=inapp">Powered by Atlassian Statuspage</a></span> </div> </div> </div> <script src="https://dka575ofm4ao0.cloudfront.net/assets/status_manifest-6a7ae3a8e2e1b1e1d9466495faa0851c3f5fff938743f6501c900aa2a8792e8c.js"></script> <div id="cpt-notification-container"></div> <!-- all of the content_for stuff --> <script src="https://dka575ofm4ao0.cloudfront.net/assets/register_subscription_form-589b657fec607087fc5c740c568270907310bc4f6aaa20256e70f01b103025ca.js"></script> <script type="text/javascript"> </script> <script src="https://dka575ofm4ao0.cloudfront.net/assets/status_common-c1b99d73ee7ab0fea796bd170723c1daac1381095a7dd7501a38ce6f333d86b3.js"></script> <div class="custom-footer-container"> <footer class="gh-foot gh-foot-min"> <div class="gh-foot-content inner"> <nav class="gh-foot-min-nav"> <a class="gh-foot-min-item" href="https://ghost.org/help/">Help Center</a> <a class="gh-foot-min-item" href="mailto:support@ghost.org">Support</a> <a class="gh-foot-min-item" href="https://twitter.com/Ghost">@Ghost</a> </nav> <div class="gh-foot-min-back"> <a class="gh-foot-min-item" href="https://ghost.org/">Back to Ghost.org</a> </div> </div> </footer> <script> 'use strict'; // Dropdown Menus function initDropdowns(allDropdowns) { allDropdowns.children('.gh-drop-trigger').on('click', function (e) { e.stopPropagation(); var thisTrigger = $(this), thisDropdown = thisTrigger.parent(); if (thisDropdown.hasClass('active')) { thisDropdown.removeClass('active'); $(document).off('click'); } else { allDropdowns.removeClass('active'); thisDropdown.addClass('active'); $(document).on('click', function () { allDropdowns.removeClass('active'); }); } }); } (function () { if ($('.updates-dropdown-container').length) { $('.updates-dropdown-container').remove(); } // Mobile Menu Trigger $('.gh-nav-burger').click(function () { $('.gh-mobilehead').toggleClass('gh-mobilehead-open'); }); })(); </script> </div> <script> /** INITIALIZATION **/ var recaptchaIds = {} // Unfortunately there's no unique selectors on the parent divs that recaptcha adds. The first unique selector // is the iframe rendered 2 levels deep. So this waits until the iframes are added to the page, then finds // the parent div and sets the z index so that it'll render above our modals & dropdowns from the start. function setZIndex(captchaCount, startTime) { // bail after 10s just in case so we don't do this forever if something whaky happens if (new Date() - startTime > 10000) { return; } var iframes = document.querySelectorAll('iframe[title="recaptcha challenge"]'); if (iframes.length != captchaCount) { setTimeout(function() { setZIndex(captchaCount, startTime); }, 500); } for (var i = 0; i < iframes.length; i++) { // incident subscribe modal is 1050, so this has to be above that iframes[i].parentElement.parentElement.style.zIndex = "1100"; } } function updateCaptchaIframeTitle(captchaCount, startTime, updates=0) { if (new Date() - startTime > 10000 || captchaCount === updates) { return; } var iframesWithTitle = document.querySelectorAll('iframe[title="recaptcha challenge expires in two minutes"]'); if (iframesWithTitle.length != captchaCount) { setTimeout(function() { updateCaptchaIframeTitle(captchaCount, startTime, iframesWithTitle.length + updates); }, 500); } for (var i = 0; i < iframesWithTitle.length; i++) { iframesWithTitle[i].title = "recaptcha"; } } function addIncidentCaptcha() { var incidentCaptcha = document.createElement('div'); incidentCaptcha.setAttribute('id', 'subscribe-incident-recaptcha'); incidentCaptcha.setAttribute('class', 'g-recaptcha'); incidentCaptcha.setAttribute('data-sitekey', '6LcZ-b0UAAAAAENi956aWzynTT2ZJ80dGU3F80Op'); incidentCaptcha.setAttribute('data-callback', 'submitIncidentSubscriberSuccess'); incidentCaptcha.setAttribute('data-error-callback', 'submitIncidentSubscriberError'); incidentCaptcha.setAttribute('data-size', 'invisible'); document.body.appendChild(incidentCaptcha); var incidentCode = document.createElement('input'); incidentCode.setAttribute('type', 'hidden'); incidentCode.setAttribute('id', 'submit_incident_code'); document.body.appendChild(incidentCode); } var onloadCallback = function() { // if there is an incident, then add incident captcha element if (document.getElementsByClassName('modal-open-incident-subscribe').length > 0) { addIncidentCaptcha(); } var captchas = document.getElementsByClassName("g-recaptcha"); for(var i = 0; i < captchas.length; i++) { var elId = captchas[i].id; recaptchaIds[elId] = grecaptcha.enterprise.render(elId); } setZIndex(captchas.length, new Date()); updateCaptchaIframeTitle(captchas.length, new Date()); } /** SUBSCRIBE DROPDOWN */ // callbacks for captcha success function submitNewSubscriber(type, error) { if (error) document.querySelector('#subscribe-form-' + type + ' #captcha_error').value = 'true'; document.getElementById('subscribe-form-' + type).dispatchEvent(new Event('submit', {bubbles: true, cancelable: true})); grecaptcha.enterprise.reset(recaptchaIds['subscribe-btn-' + type]); } function submitNewEmailSubscriber(token) { submitNewSubscriber('email'); } function submitNewSmsSubscriber(token) { submitNewSubscriber('sms'); } function submitNewWebhookSubscriber(token) { submitNewSubscriber('webhook'); } function submitIncidentSubscriber(token, error) { var incidentCode = document.getElementById('submit_incident_code').value; var incidentForm = document.getElementById('subscribe-form-' + incidentCode); incidentForm.querySelector('input[name="captcha_error"]').value = error; incidentForm.querySelector('input[name="g-recaptcha-response"]').value = token; incidentForm.dispatchEvent(new Event('submit', {bubbles: true, cancelable: true})); grecaptcha.enterprise.reset(recaptchaIds['subscribe-incident-recaptcha']); } function submitIncidentSubscriberSuccess(token) { submitIncidentSubscriber(token, 'false'); } // callbacks if we get captcha network errors function emailSubscriberCaptchaError(token) { submitNewSubscriber('email', true); } function smsSubscriberCaptchaError(token) { submitNewSubscriber('sms', true); } function webhookSubscriberCaptchaError(token) { submitNewSubscriber('webhook', true); } function submitIncidentSubscriberError(token) { submitIncidentSubscriber(token, 'true'); } // tracking clicks ['email', 'sms', 'webhook'].forEach(function(type) { var el = document.getElementById('subscribe-btn-' + type); el && el.addEventListener("click", function() { $.ajax({ type: "POST", url: "/subscriptions/track_attempt", data: { type: type } }) }) }) // form submission success callbacks $('#subscribe-form-email').on('ajax:success', function(e, data, status, xhr){ if (data.type === 'success') { SP.currentPage.updatesDropdown.hide(); document.getElementById('email').value = ''; } }); $('#subscribe-form-sms').on('ajax:success', function(e, data, status, xhr){ if (data.type === 'success' && data.otp_flow !== true) { SP.currentPage.updatesDropdown.hide(); document.getElementById('phone-number').value = ''; } }); $('#subscribe-form-webhook').on('ajax:success', function(e, data, status, xhr){ if (data.type === 'success') { SP.currentPage.updatesDropdown.hide(); document.getElementById('endpoint-webhooks').value = ''; document.getElementById('email-webhooks').value = ''; } }); $('a.subscribe').on('click', function() { document.body.style.overflow = "hidden"; document.body.style.height = "100vh"; }); $('div.modal-open-incident-subscribe').on('hidden', function(){ document.body.style.overflow = ""; document.body.style.height = ""; }); function submitCaptchaIncidentSubscribe(event) { var incidentCode = event.target.id.split('-')[2]; event.preventDefault(); $.ajax({ type: "POST", url: "/subscriptions/track_attempt", data: { type: 'incident' } }) document.getElementById('submit_incident_code').value = incidentCode; grecaptcha.enterprise.execute(recaptchaIds['subscribe-incident-recaptcha']); } </script> <script src='https://www.recaptcha.net/recaptcha/enterprise.js?onload=onloadCallback&render=explicit' async defer></script> <script src="https://dka575ofm4ao0.cloudfront.net/packs/common-814024cd42fea12d6fe1.chunk.js"></script> <script src="https://dka575ofm4ao0.cloudfront.net/packs/globals-0c851e8c6754c4375f64.chunk.js"></script> <script src="https://dka575ofm4ao0.cloudfront.net/packs/runtime-8a1984f6547cb712c8d9.js"></script> <script src="https://dka575ofm4ao0.cloudfront.net/packs/status-6fcc08fa59a823d72c59.chunk.js"></script> <script src="https://dka575ofm4ao0.cloudfront.net/packs/components-6b480067676a2c2a7180.chunk.js"></script> <script> window.addEventListener('load', function () { const urlParams = new URLSearchParams(window.location.search); const messageToken = urlParams.get('slack_message_token'); const channelName = escape(urlParams.get('channel_name')); if(!!messageToken) { switch(messageToken) { case 'slack_auth_error': HRB.utils.notify('The Slack authorization attempt was unsuccessful. Try again.', {cssClass:'error'}); break; case 'subscribers_disabled_error': HRB.utils.notify('Slack subscriptions are not enabled on this page.', {cssClass:'error'}); break; case 'direct_message_channel_error': HRB.utils.notify('Subscriptions aren鈥檛 supported in direct messages. Try subscribing again and choose a channel instead.', {cssClass:'error'}); break case 'duplicate_error': HRB.utils.notify("You're already subscribed to get Slack notifications in that channel.", {cssClass:'error'}); break; case 'duplicate_private_channel_error': HRB.utils.notify(`You're already subscribed to get Slack notifications in #${channelName}. Invite the @Statuspage app to that channel to start getting status updates.`, {cssClass: 'error'}); break; case 'default_success': HRB.utils.notify("You're now subscribed to get Statuspage updates in Slack!", {cssClass:'success'}); break; case 'private_channel_success': HRB.utils.notify(`IMPORTANT: Invite the @Statuspage app to your Slack channel #${channelName} to start getting status updates.`, {cssClass:'success'}); break; } } }); </script> <!-- FOR FLASH NOTICES --> <!-- FOR ERROR --> <script> $(function() { var $link = $('<span class="color-secondary powered-by"><a class="color-secondary" target="_blank" rel="noopener noreferrer nofollow" href="https://www.atlassian.com/software/statuspage?utm_campaign=status.ghost.org&amp;utm_content=SP-notifications&amp;utm_medium=powered-by&amp;utm_source=inapp">Powered by Atlassian Statuspage</a></span>'); var setPoweredByStyles = function() { if (!$('.powered-by').length) { $link.appendTo($('.page-footer')) } $('.powered-by').attr('style', 'display: inline !important; visibility:visible !important; opacity: 1 !important; position:static !important; text-indent:0px !important; transform:scale(1) !important'); } setInterval(setPoweredByStyles, 1000); }); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10