1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 5 <!-- force IE browsers in compatibility mode to use their most aggressive rendering engine --> 6 7 <meta charset="utf-8"> 8 <title>Voipfone Status - Uptime History</title> 9 <meta name="description" content="Voipfone's Uptime History"> 10 11 <!-- Mobile viewport optimization --> 12 <meta name="HandheldFriendly" content="True"> 13 <meta name="MobileOptimized" content="320"> 14 <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0"> 15 16 <!-- Time this page was rendered - http://purl.org/dc/terms/issued --> 17 <meta name="issued" content="1791188166"> 18 19 <!-- Mobile IE allows us to activate ClearType technology for smoothing fonts for easy reading --> 20 <meta http-equiv="cleartype" content="on"> 21 22 <!-- Atlassian Sans & Mono Fonts --> 23<link 24 rel="preconnect" 25 href="https://ds-cdn.prod-east.frontend.public.atl-paas.net" /> 26<link 27 rel="preload" 28 href="https://ds-cdn.prod-east.frontend.public.atl-paas.net/assets/fonts/atlassian-sans/v3/AtlassianSans-latin.woff2" 29 as="font" type="font/woff2" crossorigin /> 30<link 31 rel="preload" 32 href="https://ds-cdn.prod-east.frontend.public.atl-paas.net/assets/font-rules/v5/atlassian-fonts.css" 33 as="style" crossorigin /> 34 35 <style> 36 /* Dynamic Font Stack based on Feature Flag */ 37 /* Using Atlassian Sans & Mono */ 38 :root { 39 --font-stack-a: "Atlassian Sans", "Helvetica Neue", Helvetica, Arial, Sans-Serif; 40 --font-stack-b: "Atlassian Mono", "SFMono-Medium", "SF Mono", "Segoe UI Mono", "Roboto Mono", "Ubuntu Mono", Menlo, Consolas, Courier, monospace; 41 } 42</style> 43 44 45 <link rel="icon" type="image/x-icon" href="//dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/16003/uFVlAwiSTaskFLgaj06A" /> 46 47 <link rel="shortcut icon" href='//dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/16003/uFVlAwiSTaskFLgaj06A'> 48 49 <link rel="alternate" type="application/atom+xml" href="https://www.voipfonestatus.co.uk/history.atom" title="Voipfone Status History - Atom Feed"> 50 <link rel="alternate" type="application/rss+xml" href="https://www.voipfonestatus.co.uk/history.rss" title="Voipfone Status History - RSS Feed"> 51 52 <!-- Canonical Link to ensure that only the custom domain is indexed when present --> 53 <link rel="canonical" href="https://www.voipfonestatus.co.uk/uptime"> 54 55 <meta name="_globalsign-domain-verification" content="y_VzfckMy4iePo5oDJNivyYIjh8LffYa4jzUndm_bZ"/> 56 57 58 <link rel="alternate" type="application/atom+xml" title="ATOM" href="https://www.voipfonestatus.co.uk/history.atom" /> 59 60 <!-- Le styles --> 61 <link rel="stylesheet" href="https://dka575ofm4ao0.cloudfront.net/packs/0.a7d86fc6a129fa9540bc.css" media="screen" /><link rel="stylesheet" href="https://dka575ofm4ao0.cloudfront.net/packs/191.a7d86fc6a129fa9540bc.css" media="screen" /><link rel="stylesheet" href="https://dka575ofm4ao0.cloudfront.net/packs/155.a7d86fc6a129fa9540bc.css" media="screen" /> 62 <link rel="stylesheet" href="https://dka575ofm4ao0.cloudfront.net/assets/status/status_manifest-e7416fcfeedbe261454d619d119599335f4c7b18c9e245c13722dbb0998dc023.css" media="all" /> 63 64
64<script src="https://dka575ofm4ao0.cloudfront.net/assets/jquery-3.5.1.min-729e416557a365062a8a20f0562f18aa171da57298005d392312670c706c68de.js"></script>
64 65 66
66<script> 67 window.pageColorData = {"blue":"#3498DB","border":"#E0E0E0","body_background":"#ffffff","font":"#333333","graph":"#3498db","green":"#2fcc66","light_font":"#AAAAAA","link":"#3498db","orange":"#e67e22","red":"#e74c3c","yellow":"#f1c40f","no_data":"#b3bac5"}; 68 </script>
68 69 <style> 70 /* BODY BACKGROUND */ /* BODY BACKGROUND */ /* BODY BACKGROUND */ /* BODY BACKGROUND */ /* BODY BACKGROUND */ 71 body, 72 .layout-content.status.status-api .section .example-container .example-opener .color-secondary, 73 .grouped-items-selector, 74 .layout-content.status.status-full-history .history-nav a.current, 75 div[id^="subscribe-modal"] .modal-footer, 76 div[id^="subscribe-modal"], 77 div[id^="updates-dropdown"] .updates-dropdown-section, 78 #uptime-tooltip .tooltip-box { 79 background-color:#ffffff; 80 } 81 82 #uptime-tooltip .pointer-container .pointer-smaller { 83 border-bottom-color:#ffffff; 84 } 85 86 87 88 89 /* PRIMARY FONT COLOR */ /* PRIMARY FONT COLOR */ /* PRIMARY FONT COLOR */ /* PRIMARY FONT COLOR */ 90 body.status, 91 .color-primary, 92 .color-primary:hover, 93 .layout-content.status-index .status-day .update-title.impact-none a, 94 .layout-content.status-index .status-day .update-title.impact-none a:hover, 95 .layout-content.status-index .timeframes-container .timeframe.active, 96 .layout-content.status-full-history .month .incident-container .impact-none, 97 .layout-content.status.status-index .incidents-list .incident-title.impact-none a, 98 .incident-history .impact-none, 99 .layout-content.status .grouped-items-selector.inline .grouped-item.active, 100 .layout-content.status.status-full-history .history-nav a.current, 101 .layout-content.status.status-full-history .history-nav a:not(.current):hover, 102 div[id^="subscribe-modal"] .modal-header .close, 103 .grouped-item-label, 104 #uptime-tooltip .tooltip-box .tooltip-content .related-events .related-event a.related-event-link { 105 color:#333333; 106 } 107 108 .layout-content.status.status-index .components-statuses .component-container .name { 109 color:#333333; 110 color:rgba(51,51,51,.8); 111 } 112 113 114 115 116 /* SECONDARY FONT COLOR */ /* SECONDARY FONT COLOR */ /* SECONDARY FONT COLOR */ /* SECONDARY FONT COLOR */ 117 small, 118 .layout-content.status .table-row .date, 119 .color-secondary, 120 .layout-content.status .grouped-items-selector.inline .grouped-item, 121 .layout-content.status.status-full-history .history-footer .pagination a.disabled, 122 .layout-content.status.status-full-history .history-nav a, 123 #uptime-tooltip .tooltip-box .tooltip-content .related-events #related-event-header { 124 color:#AAAAAA; 125 } 126 127 128 129 130 /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ /* BORDER COLOR */ 131 body.status .layout-content.status .border-color, 132 hr, 133 .tooltip-base, 134 .markdown-display table, 135 div[id^="subscribe-modal"], 136 #uptime-tooltip .tooltip-box { 137 border-color:#E0E0E0; 138 } 139 140 div[id^="subscribe-modal"] .modal-footer, 141 .markdown-display table td { 142 border-top-color:#E0E0E0; 143 } 144 145 .markdown-display table td + td, .markdown-display table th + th { 146 border-left-color:#E0E0E0; 147 } 148 149 div[id^="subscribe-modal"] .modal-header, 150 #uptime-tooltip .pointer-container .pointer-larger { 151 border-bottom-color:#E0E0E0; 152 } 153 154 #uptime-tooltip .tooltip-box .outage-field { 155 /* 156 Generate the background-color for the outage-field from the css_body_background_color and css_border_color. 157 158 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 159 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. 160 161 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). 162 */ 163 background-color: rgba(224,224,224,0.31); 164 165 /* 166 outage-field border-color alpha is inverse to the luminosity of css_body_background_color. 167 That is to say, with a default white background this border is transparent, but on a black background, it's opaque css_border_color. 168 */ 169 border-color: rgba(224,224,224,0.0); 170 } 171 172 173 174 175 /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ /* CSS REDS */ 176 .layout-content.status.status-index .status-day .update-title.impact-critical a, 177 .layout-content.status.status-index .status-day .update-title.impact-critical a:hover, 178 .layout-content.status.status-index .page-status.status-critical, 179 .layout-content.status.status-index .unresolved-incident.impact-critical .incident-title, 180 .flat-button.background-red {
181 background-color:#e74c3c; 182 } 183 184 .layout-content.status-index .components-statuses .component-container.status-red:after, 185 .layout-content.status-full-history .month .incident-container .impact-critical, 186 .layout-content.status-incident .incident-name.impact-critical, 187 .layout-content.status.status-index .incidents-list .incident-title.impact-critical a, 188 .status-red .icon-indicator, 189 .incident-history .impact-critical, 190 .components-container .component-inner-container.status-red .component-status, 191 .components-container .component-inner-container.status-red .icon-indicator { 192 color:#e74c3c; 193 } 194 195 .layout-content.status.status-index .unresolved-incident.impact-critical .updates { 196 border-color:#e74c3c; 197 } 198 199 200 201 202 /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ /* CSS ORANGES */ 203 .layout-content.status.status-index .status-day .update-title.impact-major a, 204 .layout-content.status.status-index .status-day .update-title.impact-major a:hover, 205 .layout-content.status.status-index .page-status.status-major, 206 .layout-content.status.status-index .unresolved-incident.impact-major .incident-title { 207 background-color:#e67e22; 208 } 209 210 .layout-content.status-index .components-statuses .component-container.status-orange:after, 211 .layout-content.status-full-history .month .incident-container .impact-major, 212 .layout-content.status-incident .incident-name.impact-major, 213 .layout-content.status.status-index .incidents-list .incident-title.impact-major a, 214 .status-orange .icon-indicator, 215 .incident-history .impact-major, 216 .components-container .component-inner-container.status-orange .component-status, 217 .components-container .component-inner-container.status-orange .icon-indicator { 218 color:#e67e22; 219 } 220 221 .layout-content.status.status-index .unresolved-incident.impact-major .updates { 222 border-color:#e67e22; 223 } 224 225 226 227 228 /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ /* CSS YELLOWS */ 229 .layout-content.status.status-index .status-day .update-title.impact-minor a, 230 .layout-content.status.status-index .status-day .update-title.impact-minor a:hover, 231 .layout-content.status.status-index .page-status.status-minor, 232 .layout-content.status.status-index .unresolved-incident.impact-minor .incident-title, 233 .layout-content.status.status-index .scheduled-incidents-container .tab { 234 background-color:#f1c40f; 235 } 236 237 .layout-content.status-index .components-statuses .component-container.status-yellow:after, 238 .layout-content.status-full-history .month .incident-container .impact-minor, 239 .layout-content.status-incident .incident-name.impact-minor, 240 .layout-content.status.status-index .incidents-list .incident-title.impact-minor a, 241 .status-yellow .icon-indicator, 242 .incident-history .impact-minor, 243 .components-container .component-inner-container.status-yellow .component-status, 244 .components-container .component-inner-container.status-yellow .icon-indicator, 245 .layout-content.status.manage-subscriptions .confirmation-infobox .fa { 246 color:#f1c40f; 247 } 248 249 .layout-content.status.status-index .unresolved-incident.impact-minor .updates, 250 .layout-content.status.status-index .scheduled-incidents-container { 251 border-color:#f1c40f; 252 } 253 254 255 256 257 /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ /* CSS BLUES */ 258 .layout-content.status.status-index .status-day .update-title.impact-maintenance a, 259 .layout-content.status.status-index .status-day .update-title.impact-maintenance a:hover, 260 .layout-content.status.status-index .page-status.status-maintenance, 261 .layout-content.status.status-index .unresolved-incident.impact-maintenance .incident-title, 262 .layout-content.status.status-index .scheduled-incidents-container .tab { 263 background-color:#3498DB; 264 } 265 266 .layout-content.status-index .components-statuses .component-container.status-blue:after, 267 .layout-content.status-full-history .month .incident-container .impact-maintenance, 268 .layout-content.status-incident .incident-name.impact-maintenance, 269 .layout-content.status.status-index .incidents-list .incident-title.impact-maintenance a, 270 .status-blue .icon-indicator, 271 .incident-history .impact-maintenance, 272 .components-container .component-inner-container.status-blue .component-status, 273 .components-container .component-inner-container.status-blue .icon-indicator { 274 color:#3498DB; 275 } 276 277 .layout-content.status.status-index .unresolved-incident.impact-maintenance .updates, 278 .layout-content.status.status-index .scheduled-incidents-container { 279 border-color:#3498DB; 280 } 281 282 283 284 285 /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ /* CSS GREENS */ 286 .layout-content.status.status-index .page-status.status-none { 287 background-color:#2fcc66; 288 } 289 .layout-content.status-index .components-statuses .component-container.status-green:after, 290 .status-green .icon-indicator, 291 .components-container .component-inner-container.status-green .component-status, 292 .components-container .component-inner-container.status-green .icon-indicator { 293 color:#2fcc66; 294 } 295 296 297 298 299 /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ /* CSS LINK COLOR */ 300 a, 301 a:hover, 302 .layout-content.status-index .page-footer span a:hover, 303 .layout-content.status-index .timeframes-container .timeframe:not(.active):hover, 304 .layout-content.status-incident .subheader a:hover { 305 color:#3498db; 306 } 307 308 .flat-button, 309 .masthead .updates-dropdown-container .show-updates-dropdown, 310 .layout-content.status-full-history .show-filter.open { 311 background-color:#3498db; 312 } 313 314 315 316 317 /* CUSTOM COLOR OVERRIDES FOR UPTIME SHOWCASE */ 318 .components-section .components-uptime-link { 319 color: #aaaaaa; 320 } 321 322 .layout-content.status .shared-partial.uptime-90-days-wrapper .legend .legend-item { 323 color: #aaaaaa; 324 opacity: 1; 325 } 326 .layout-content.status .shared-partial.uptime-90-days-wrapper .legend .legend-item.light { 327 color: #aaaaaa; 328 opacity: 1; 329 } 330 .layout-content.status .shared-partial.uptime-90-days-wrapper .legend .spacer { 331 background: #aaaaaa; 332 opacity: 1; 333 } 334</style> 335 336 337 <!-- custom css --> 338 <link rel="stylesheet" type="text/css" href="//dka575ofm4ao0.cloudfront.net/page_display_customizations-custom_css_externals/15953/external20151019-19655-1pkdy7p.css"> 339 340 <!-- polyfills --> 341
341<script crossorigin="anonymous" src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.js"></script>
341 342 343 <!-- Le HTML5 shim --> 344 <!--[if lt IE 9]> 345
345<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
345 346 <![endif]--> 347 348 <!-- injection for static --> 349 350 351 352 </head> 353 354 355 <body class="status uptime status-none sp-a11y-status-focus-visibility a11y-focus-indicators"> 356 357 358<div class="layout-content status status-full-history premium"> 359 360 <div class="masthead-container premium"> 361 <div class="masthead"> 362 <div class="images-container" id="cover-image-container" data-js-hook="images-container"></div> 363 <style> 364 #cover-image-container { 365 background-image:url("//dka575ofm4ao0.cloudfront.net/pages-hero_covers/normal/16003/G2c4voyqSRa37wPXSOry"); 366 } 367 368 @media only screen and (-webkit-min-device-pixel-ratio: 2), 369 only screen and (min-resolution: 192dpi) { 370 #cover-image-container { 371 background-image:url("//dka575ofm4ao0.cloudfront.net/pages-hero_covers/retina/16003/G2c4voyqSRa37wPXSOry") !important; 372 } 373 } 374 </style> 375 376 <div class="text-container"> 377 <span class="page-name font-largest"> 378 <a href="http://www.voipfone.co.uk">Voipfone</a> 379 </span> 380 381 <div class="updates-dropdown-container" data-js-hook="updates-dropdown-container"> 382 <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"> 383 <span class="subscribe-text-full">Subscribe to Updates</span><span class="subscribe-text-short">Subscribe</span> 384 </a> 385 386<!-- Accessibility guidelines for tabs: https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-1/tabs.html --> 387 <div class="updates-dropdown" data-js-hook="updates-dropdown" id="updates-dropdown" style="display:none" role="dialog" aria-modal="false" aria-label="Subscribe to updates"> 388 <div class="updates-dropdown-nav nav-items-5" role="tablist" aria-label="Subscribe to updates"> 389 <a href="#updates-dropdown-email" aria-controls="updates-dropdown-email" aria-label="Subscribe via email" role="tab" aria-selected="true" id="updates-dropdown-email-btn"> 390 <span class="icon-container email"> 391 </a> 392 <a href="#updates-dropdown-sms" aria-controls="updates-dropdown-sms" aria-label="Subscribe via SMS" role="tab" id="updates-dropdown-sms-btn"> 393 <span class="icon-container sms"> 394 </a> 395 <a href="#updates-dropdown-twitter" aria-controls="updates-dropdown-twitter" aria-label="Subscribe via twitter" role="tab" id="updates-dropdown-twitter-btn"> 396 <span class="icon-container twitter"> 397 </a> 398 <a href="#updates-dropdown-atom" aria-controls="updates-dropdown-atom" aria-label="Subscribe via RSS" role="tab" id="updates-dropdown-atom-btn"> 399 <span class="icon-container rss"> 400 </a> 401 <button data-js-hook="updates-dropdown-close" aria-label="Close subscribe form" id="updates-dropdown-close-btn"> 402 x 403 </button> 404 </div> 405 <div class="updates-dropdown-sections-container"> 406 <div class="updates-dropdown-section email" id="updates-dropdown-email" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-email-btn"> 407 <div class="directions"> 408 Get email notifications whenever Voipfone <strong>creates</strong>, <strong>updates</strong> or <strong>resolves</strong> an incident. 409 </div> 410 <form id="subscribe-form-email" action="/subscriptions/new-email" accept-charset="UTF-8" data-remote="true" method="post"><input type="hidden" name="authenticity_token" value="ij6YtG-cAemgIGit1rheoncmS1PXOvKrnJSJ3Ewfz7zcAOKxBJNBR3Eb4De9e66PnmAg768hYqVFiHrfGpayrQ" autocomplete="off" /> 411 <input type="hidden" name="email_otp_verify_flow" id="email_otp_verify_flow" value="false" autocomplete="off" /> 412 <!-- make sure not to put cookie values in here since this gets cached --> 413 <label for="email">Email address:</label> 414 <input name="email" id="email" type="text" class="full-width" data-js-hook="email-notification-field" autocomplete="email"> 415 <input name="email_otp_auth_token" type='hidden' id="email-
415otp-token-field"> 416 <div class="opt-container-section" id="email-otp-container", style="display:none" > 417 <label for="email-otp">Enter OTP:</label> 418 <input name="otp" id="email-otp" type="text" value="" class="prepend full-width"> 419 <p id="email-otp-timer">Resend OTP in: <span id="email-otp-countdown"></span> seconds </p> 420 <p id="resend-email-otp"> 421 Didn't receive the OTP? 422 <a href="#" id="resend-email-otp-btn" >Resend OTP </a> 423 </p> 424 </div> 425 <input type="hidden" name="captcha_error" id="captcha_error" value="false" autocomplete="off" /> 426 <input type="submit" value="Subscribe via Email" class="flat-button full-width g-recaptcha" id="subscribe-btn-email" data-disabled-text="Subscribing..." data-sitekey=6LdTS8AUAAAAAOIbCKoCAP4LQku1olYGrywPTaZz data-callback="submitNewEmailSubscriber" data-error-callback="emailSubscriberCaptchaError" > 427 <div class="terms_and_privacy_information bottom small"> This site is protected by reCAPTCHA and the Google <a target="_blank" rel="noopener" class="accessible-link" href="https://policies.google.com/privacy">Privacy Policy</a> and <a target="_blank" rel="noopener" class="accessible-link" data-js-hook="captcha-terms-of-service-link" href="https://policies.google.com/terms">Terms of Service</a> apply.</div> 428</form> </div> 429 430 <div class="updates-dropdown-section phone" id="updates-dropdown-sms" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-sms-btn"> 431 <div class="directions"> 432 Get text message notifications whenever Voipfone <strong>creates</strong> or <strong>resolves</strong> an incident. 433 </div> 434 <form id="subscribe-form-sms" action="/subscriptions/new-sms" accept-charset="UTF-8" data-remote="true" method="post"><input type="hidden" name="authenticity_token" value="G6_LTPOhIApD71MKCekUoAmiMVQgPEFfst_hsmg_Hf1NkbFJmK5gpJLU25BiKuSN4ORa6Fgn0VFrwxKxPrZg7A" autocomplete="off" /> 435 <input type="hidden" name="otp_verify_flow" id="otp_verify_flow" value="false" autocomplete="off" /> 436 <input type="hidden" name="subscriber_code" id="subscriber_code" value="" autocomplete="off" /> 437 <div class="control-group"> 438 <div class="controls externalities-sms-container"> 439 <!-- make sure not to put cookie values in here since this gets cached --> 440 <label for="phone-country">Country code:</label> 441 <div id="phone-number-country-code" class="phone-country-wrapper" 442 data-otp-enabled="false"> 443 <select name="phone_country" id="phone-country" data-js-hook="phone-country" class="phone-country"><option value="af" data-otp-enabled="false" >Afghanistan (+93)</option> 444<option value="al" data-otp-enabled="false" >Albania (+355)</option> 445<option value="dz" data-otp-enabled="false" >Algeria (+213)</option> 446<option value="as" data-otp-enabled="false" >American Samoa (+1)</option> 447<option value="ad" data-otp-enabled="false" >Andorra (+376)</option> 448<option value="ao" data-otp-enabled="false" >Angola (+244)</option> 449<option value="ai" data-otp-enabled="false" >Anguilla (+1)</option> 450<option value="ag" data-otp-enabled="false" >Antigua and Barbuda (+1)</option> 451<option value="ar" data-otp-enabled="false" >Argentina (+54)</option> 452<option value="am" data-otp-enabled="false" >Armenia (+374)</option> 453<option value="aw" data-otp-enabled="false" >Aruba (+297)</option> 454<option value="au" data-otp-enabled="false" >Australia/Cocos/Christmas Island (+61)</option> 455<option value="at" data-otp-enabled="false" >Austria (+43)</option> 456<option value="az" data-otp-enabled="false" >Azerbaijan (+994)</option> 457<option value="bs" data-otp-enabled="false" >Bahamas (+1)</option> 458<option value="bh" data-otp-enabled="false" >Bahrain (+973)</option> 459<option value="bd" data-otp-enabled="false" >Bangladesh (+880)</option> 460<option value="bb" data-otp-enabled="false" >Barbados (+1)</option> 461<option value="by" data-otp-enabled="false" >Belarus (+375)</option> 462<option value="be" data-otp-enabled="false" >Belgium (+32)</option> 463<option value="bz" data-otp-enabled="false" >Belize (+501)</option> 464<option value="bj" data-otp-enabled="false" >Benin (+229)</option> 465<option value="bm" data-otp-enabled="false" >Bermuda (+1)</option> 466<option value="bo" data-otp-enabled="false" >Bolivia (+591)</option> 467<option value="ba" data-otp-enabled="false" >Bosnia and Herzegovina (+387)</option> 468<option value="bw" data-otp-enabled="false" >Botswana (+267)</option> 469<option value="br" data-otp-enabled="false" >Brazil (+55)</option> 470<option value="bn" data-otp-enabled="false" >Brunei (+673)</option> 471<option value="bg" data-otp-enabled="false" >Bulgaria (+359)</option> 472<option value="bf" data-otp-enabled="false" >Burkina Faso (+226)</option> 473<option value="bi" data-otp-enabled="false" >Burundi (+257)</option> 474<option value="kh" data-otp-enabled="false" >Cambodia (+855)</option> 475<option value="cm" data-otp-enabled="false" >Cameroon (+237)</option> 476<option value="ca" data-otp-enabled="false" >Canada (+1)</option> 477<option value="cv" data-otp-enabled="false" >Cape Verde (+238)</option> 478<option value="ky" data-otp-enabled="false" >Cayman Islands (+1)</option> 479<option value="cf" data-otp-enabled="false" >Central Africa (+236)</option> 480<option value="td" data-otp-enabled="false" >Chad (+235)</option> 481<option value="cl" data-otp-enabled="false" >Chile (+56)</option> 482<option value="cn" data-otp-enabled="false" >China (+86)</option> 483<option value="co" data-otp-enabled="false" >Colombia (+57)</option> 484<option value="km" data-otp-enabled="false" >Comoros (+269)</option> 485<option value="cg" data-otp-enabled="false" >Congo (+242)</option> 486<option value="cd" data-otp-enabled="false" >Congo, Dem Rep (+243)</option> 487<option value="cr" data-otp-enabled="false" >Costa Rica (+506)</option> 488<option value="hr" data-otp-enabled="false" >Croatia (+385)</option> 489<option value="cy" data-otp-enabled="false" >Cyprus (+357)</option> 490<option value="cz" data-otp-enabled="false" >Czech Republic (+420)</option> 491<option value="dk" data-otp-enabled="false" >Denmark (+45)</option> 492<option value="dj" data-otp-enabled="false" >Djibouti (+253)</option> 493<option value="dm" data-otp-enabled="false" >Dominica (+1)</option> 494<option value="do" data-otp-enabled="false" >Dominican Republic (+1)</option> 495<option value="eg" data-otp-enabled="false" >Egypt (+20)</option> 496<option value="sv" data-otp-enabled="false" >El Salvador (+503)</option> 497<option value="gq" data-otp-enabled="false" >Equatorial Guinea (+240)</option> 498<option value="ee" data-otp-enabled="false" >Estonia (+372)</option> 499<option value="et" data-otp-enabled="false" >Ethiopia (+251)</option> 500<option value="fo" data-otp-enabled="false" >Faroe Islands (+298)</option> 501<option value="fj" data-otp-enabled="false" >Fiji (+679)</option> 502<option value="fi" data-otp-enabled="false" >Finland/Aland Islands (+358)</option> 503<option value="fr" data-otp-enabled="false" >France (+33)</option> 504<option value="gf" data-otp-enabled="false" >French Guiana (+594)</option> 505<option value="pf" data-otp-enabled="false" >French Polynesia (+689)</option> 506<option value="ga" data-otp-enabled="false" >Gabon (+241)</option> 507<option value="gm" data-otp-enabled="false" >Gambia (+220)</option> 508<option value="ge" data-otp-enabled="false" >Georgia (+995)</option> 509<option value="de" data-otp-enabled="false" >Germany (+49)</option> 510<option value="gh" data-otp-enabled="false" >Ghana (+233)</option> 511<option value="gi" data-otp-enabled="false" >Gibraltar (+350)</option> 512<option value="gr" data-otp-enabled="false" >Greece (+30)</option> 513<option value="gl" data-otp-enabled="false" >Greenland (+299)</option> 514<option value="gd" data-otp-enabled="false" >Grenada (+1)</option> 515<option value="gp" data-otp-enabled="false" >Guadeloupe (+590)</option> 516<option value="gu" data-otp-enabled="false" >
516Guam (+1)</option> 517<option value="gt" data-otp-enabled="false" >Guatemala (+502)</option> 518<option value="gn" data-otp-enabled="false" >Guinea (+224)</option> 519<option value="gy" data-otp-enabled="false" >Guyana (+592)</option> 520<option value="ht" data-otp-enabled="false" >Haiti (+509)</option> 521<option value="hn" data-otp-enabled="false" >Honduras (+504)</option> 522<option value="hk" data-otp-enabled="false" >Hong Kong (+852)</option> 523<option value="hu" data-otp-enabled="false" >Hungary (+36)</option> 524<option value="is" data-otp-enabled="false" >Iceland (+354)</option> 525<option value="in" data-otp-enabled="false" >India (+91)</option> 526<option value="id" data-otp-enabled="false" >Indonesia (+62)</option> 527<option value="iq" data-otp-enabled="false" >Iraq (+964)</option> 528<option value="ie" data-otp-enabled="false" >Ireland (+353)</option> 529<option value="il" data-otp-enabled="false" >Israel (+972)</option> 530<option value="it" data-otp-enabled="false" >Italy (+39)</option> 531<option value="jm" data-otp-enabled="false" >Jamaica (+1)</option> 532<option value="jp" data-otp-enabled="false" >Japan (+81)</option> 533<option value="jo" data-otp-enabled="false" >Jordan (+962)</option> 534<option value="ke" data-otp-enabled="false" >Kenya (+254)</option> 535<option value="kr" data-otp-enabled="false" >Korea, Republic of (+82)</option> 536<option value="xk" data-otp-enabled="false" >Kosovo (+383)</option> 537<option value="kw" data-otp-enabled="false" >Kuwait (+965)</option> 538<option value="kg" data-otp-enabled="false" >Kyrgyzstan (+996)</option> 539<option value="la" data-otp-enabled="false" >Laos (+856)</option> 540<option value="lv" data-otp-enabled="false" >Latvia (+371)</option> 541<option value="lb" data-otp-enabled="false" >Lebanon (+961)</option> 542<option value="ls" data-otp-enabled="false" >Lesotho (+266)</option> 543<option value="lr" data-otp-enabled="false" >Liberia (+231)</option> 544<option value="ly" data-otp-enabled="false" >Libya (+218)</option> 545<option value="li" data-otp-enabled="false" >Liechtenstein (+423)</option> 546<option value="lt" data-otp-enabled="false" >Lithuania (+370)</option> 547<option value="lu" data-otp-enabled="false" >Luxembourg (+352)</option> 548<option value="mo" data-otp-enabled="false" >Macao (+853)</option> 549<option value="mk" data-otp-enabled="false" >Macedonia (+389)</option> 550<option value="mg" data-otp-enabled="false" >Madagascar (+261)</option> 551<option value="mw" data-otp-enabled="false" >Malawi (+265)</option> 552<option value="my" data-otp-enabled="false" >Malaysia (+60)</option> 553<option value="mv" data-otp-enabled="false" >Maldives (+960)</option> 554<option value="ml" data-otp-enabled="false" >Mali (+223)</option> 555<option value="mt" data-otp-enabled="false" >Malta (+356)</option> 556<option value="mq" data-otp-enabled="false" >Martinique (+596)</option> 557<option value="mr" data-otp-enabled="false" >Mauritania (+222)</option> 558<option value="mu" data-otp-enabled="false" >Mauritius (+230)</option> 559<option value="mx" data-otp-enabled="false" >Mexico (+52)</option> 560<option value="mc" data-otp-enabled="false" >Monaco (+377)</option> 561<option value="mn" data-otp-enabled="false" >Mongolia (+976)</option> 562<option value="me" data-otp-enabled="false" >Montenegro (+382)</option> 563<option value="ms" data-otp-enabled="false" >Montserrat (+1)</option> 564<option value="ma" data-otp-enabled="false" >Morocco/Western Sahara (+212)</option> 565<option value="mz" data-otp-enabled="false" >Mozambique (+258)</option> 566<option value="na" data-otp-enabled="false" >Namibia (+264)</option> 567<option value="np" data-otp-enabled="false" >Nepal (+977)</option> 568<option value="nl" data-otp-enabled="false" >Netherlands (+31)</option> 569<option value="nz" data-otp-enabled="false" >New Zealand (+64)</option> 570<option value="ni" data-otp-enabled="false" >Nicaragua (+505)</option> 571<option value="ne" data-otp-enabled="false" >Niger (+227)</option> 572<option value="ng" data-otp-enabled="false" >Nigeria (+234)</option> 573<option value="no" data-otp-enabled="false" >Norway (+47)</option> 574<option value="om" data-otp-enabled="false" >Oman (+968)</option> 575<option value="pk" data-otp-enabled="false" >Pakistan (+92)</option> 576<option value="ps" data-otp-enabled="false" >Palestinian Territory (+970)</option> 577<option value="pa" data-otp-enabled="false" >Panama (+507)</option> 578<option value="py" data-otp-enabled="false" >Paraguay (+595)</option> 579<option value="pe" data-otp-enabled="false" >Peru (+51)</option> 580<option value="ph" data-otp-enabled="false" >Philippines (+63)</option> 581<option value="pl" data-otp-enabled="false" >Poland (+48)</option> 582<option value="pt" data-otp-enabled="false" >Portugal (+351)</option> 583<option value="pr" data-otp-enabled="false" >Puerto Rico (+1)</option> 584<option value="qa" data-otp-enabled="false" >Qatar (+974)</option> 585<option value="re" data-otp-enabled="false" >Reunion/Mayotte (+262)</option> 586<option value="ro" data-otp-enabled="false" >Romania (+40)</option> 587<option value="ru" data-otp-enabled="false" >Russia/Kazakhstan (+7)</option> 588<option value="rw" data-otp-enabled="false" >Rwanda (+250)</option> 589<option value="ws" data-otp-enabled="false" >Samoa (+685)</option> 590<option value="sm" data-otp-enabled="false" >San Marino (+378)</option> 591<option value="sa" data-otp-enabled="false" >Saudi Arabia (+966)</option> 592<option value="sn" data-otp-enabled="false" >Senegal (+221)</option> 593<option value="rs" data-otp-enabled="false" >Serbia (+381)</option> 594<option value="sc" data-otp-enabled="false" >Seychelles (+248)</option> 595<option value="sl" data-otp-enabled="false" >Sierra Leone (+232)</option> 596<option value="sg" data-otp-enabled="false" >Singapore (+65)</option> 597<option value="sk" data-otp-enabled="false" >Slovakia (+421)</option> 598<option value="si" data-otp-enabled="false" >Slovenia (+386)</option> 599<option value="za" data-otp-enabled="false" >South Africa (+27)</option> 600<option value="es" data-otp-enabled="false" >Spain (+34)</option> 601<option value="lk" data-otp-enabled="false" >Sri Lanka (+94)</option> 602<option value="kn" data-otp-enabled="false" >St Kitts and Nevis (+1)</option> 603<option value="lc" data-otp-enabled="false" >St Lucia (+1)</option> 604<option value="vc" data-otp-enabled="false" >St Vincent Grenadines (+1)</option> 605<option value="sd" data-otp-enabled="false" >Sudan (+249)</option> 606<option value="sr" data-otp-enabled="false" >Suriname (+597)</option> 607<option value="sz" data-otp-enabled="false" >Swaziland (+268)</option> 608<option value="se" data-otp-enabled="false" >Sweden (+46)</option> 609<option value="ch" data-otp-enabled="false" >Switzerland (+41)</option> 610<option value="tw" data-otp-enabled="false" >Taiwan (+886)</option> 611<option value="tj" data-otp-enabled="false" >Tajikistan (+992)</option> 612<option value="tz" data-otp-enabled="false" >Tanzania (+255)</option> 613<option value="th" data-otp-enabled="false" >Thailand (+66)</option> 614<option value="tg" data-otp-enabled="false" >Togo (+228)</option> 615<option value="to" data-otp-enabled="false" >Tonga (+676)</option> 616<option value="tt" data-otp-enabled="false" >Trinidad and Tobago (+1)</option> 617<option value="tn" data-otp-enabled="false" >Tunisia (+216)</option> 618<option value="tr" data-otp-enabled="false" >Turkey (+90)</option> 619<option value="tc" data-otp-enabled="false" >Turks and Caicos Islands (+1)</option> 620<option value="ug" data-otp-enabled="false" >Uganda (+256)</option> 621<option value="ua" data-otp-enabled="false" >Ukraine (+380)</option> 622<option value="ae" data-otp-enabled="false" >United Arab Emirates (+971)</option> 623<option value="gb" data-otp-enabled="false" selected>United Kingdom (+44)</option> 624<option value="us" data-otp-enabled="false" >United States (+1)</option> 625<option value="uy" data-otp-enabled="false" >Uruguay (+598)</option> 626<option value="uz" data-otp-enabled="false" >Uzbekistan (+998)</option> 627<option value="ve" data-otp-enabled="false" >Venezuela (+58)</option> 628<option value="vn" data-otp-enabled="false" >Vietnam (+84)</option> 629<option value="vg" data-otp-enabled="false" >Virgin Islands, British (+1)</option> 630<option value="vi" data-otp-enabled="false" >Virgin Islands, U.S. (+1)</option> 631<option value="ye" data-otp-enabled="false" >Yemen (+967)</option> 632<option value="zm" data-otp-enabled="false" >Zambia (+260)</option> 633<option value="zw" data-otp-enabled="false" >Zimbabwe (+263)</option></select> 634 </div> 635 <label for="phone-number">Phone number:</label> 636 <input name="phone_number" id="phone-number" type="text" class="prepend full-width" data-js-hook="sms-notification-field"> 637 <div class="sms-atl-error" id="sms-atl-error"></div> 638 <div class="clearfix"></div> 639 <div class="opt-container-section" id="otp-container" style="display:none">
640 <a href="#" id="btn-subcriber-change-number">Change number</a> 641 <label for="otp">Enter OTP:</label> 642 <input name="otp" id="otp" type="text" class="prepend full-width"> 643 <p id="timer">Resend OTP in: <span id="countdown">30</span> seconds </p> 644 <p id="resend"> 645 Didn't receive the OTP? 646 <a href="#" id="resend-otp-btn" >Resend OTP </a> 647 </p> 648 </div> 649 </div> 650 </div> 651 652 <input type="hidden" name="captcha_error" id="captcha_error" value="false" autocomplete="off" /> 653 <input type="submit" value="Subscribe via Text Message" class="flat-button full-width g-recaptcha" id="subscribe-btn-sms" data-disabled-text="Subscribing..." data-sitekey=6LcH-b0UAAAAACVQtMb14LBhflMA9y0Nmu7l_W6d data-callback="submitNewSmsSubscriber" data-error-callback="smsSubscriberCaptchaError"> 654 <div class="terms_and_privacy_information bottom small">Message and data rates may apply. By subscribing you agree to the Atlassian <a target="_blank" rel="noopener" class="accessible-link" href="https://www.atlassian.com/legal/product-specific-terms#statuspage-specific-terms">Terms of Service</a>, and the Atlassian <a target="_blank" rel="noopener" class="accessible-link" href="https://www.atlassian.com/legal/privacy-policy">Privacy Policy</a>. This site is protected by reCAPTCHA and the Google <a target="_blank" rel="noopener" class="accessible-link" href="https://policies.google.com/privacy">Privacy Policy</a> and <a target="_blank" rel="noopener" class="accessible-link" data-js-hook="captcha-terms-of-service-link" href="https://policies.google.com/terms">Terms of Service</a> apply.</div> 655</form> </div> 656 657 658 659 660 <div class="updates-dropdown-section twitter" id="updates-dropdown-twitter" style="display:none" role="tabpanel" aria-labelledby="updates-dropdown-twitter-btn"> 661 <a href="https://twitter.com/Voipfonestatus" class="twitter-follow-button" data-show-count="false" data-show-screen-name="true" data-width="59px">Follow @Voipfonestatus</a> 662 or 663 <a href="https://twitter.com/Voipfonestatus" target="_blank">view our profile</a>. 664 <style> 665 .twitter-follow-button { 666 margin-bottom: -6px; 667 } 668 </style> 669 670
670<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
670 671 </div> 672 673 674 <div class="updates-dropdown-section atom" id="updates-dropdown-atom" role="tabpanel" aria-labelledby="updates-dropdown-atom-btn"> 675 Get the <a href="https://www.voipfonestatus.co.uk/history.atom" target="_blank">Atom Feed</a> or <a href="https://www.voipfonestatus.co.uk/history.rss" target="_blank">RSS Feed</a>. 676 </div> 677 </div> 678 </div> 679 </div> 680
681<script> 682 $(function () { 683 const phoneNumberInput = $('#phone-number'); 684 const errorDiv = $('#sms-atl-error') 685 if(errorDiv.length){ 686 function checkSelectedCountry() { 687 const selectedCountry = $('#phone-country').val(); 688 const isOtpEnabled = $('#phone-number-country-code').attr('data-otp-enabled') === 'true'; 689 const form = document.getElementById('subscribe-form-sms'); 690 form.action = '/subscriptions/new-sms'; 691 const isOtpFlow = document.getElementById('otp_verify_flow'); 692 document.getElementById('otp-container').style.display = "none"; 693 if(false && selectedCountry === 'sg') { // Replace 'SG' with the actual value representing Singapore in your select tag 694 phoneNumberInput.prop('disabled', true); 695 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.`); 696 } else { 697 phoneNumberInput.prop('readonly', false); 698 errorDiv.html(''); 699 if(false){ 700 if(isOtpEnabled){ 701 document.getElementById('subscribe-btn-sms').value = "Send OTP"; 702 } 703 else { 704 isOtpFlow.value = false; 705 document.getElementById('subscribe-btn-sms').value = "Subscribe via Text Message"; 706 } 707 } 708 } 709 } 710 711 $('#phone-country').on('change', checkSelectedCountry); 712 checkSelectedCountry(); 713 } 714 }); 715 716 document.addEventListener('DOMContentLoaded', function() { 717 const dropdown = document.querySelector('#phone-number-country-code .phone-country'); 718 if (dropdown){ 719 const wrapperDiv = document.getElementById('phone-number-country-code'); 720 const selectedOption = dropdown.options[dropdown.selectedIndex]; 721 const otpEnabled = selectedOption.getAttribute('data-otp-enabled'); 722 723 wrapperDiv.setAttribute('data-otp-enabled', otpEnabled); 724 725 dropdown.addEventListener('change', function() { 726 const selectedOption = dropdown.options[dropdown.selectedIndex]; 727 const otpEnabled = selectedOption.getAttribute('data-otp-enabled'); 728 729 wrapperDiv.setAttribute('data-otp-enabled', otpEnabled); 730 }); 731 } 732 }); 733 734 var countdownTimer; 735 var resendBtn = document.getElementById('resend'); 736 var timer = document.getElementById('timer'); 737 var form = document.getElementById('subscribe-form-sms'); 738 var RESEND_TIMER = 30; 739 $(function() { 740 $('#subscribe-form-sms').on('ajax:success', function(e, data, status, xhr){ 741 const form = this; 742 const action = form.getAttribute('action'); 743 if (data.type === 'success' && data.otp_flow === true) { 744 document.getElementById('subscriber_code').value = data.subscriber_code 745 document.getElementById('otp-container').style.display = "block"; 746 $('#phone-number').prop('readonly', true); 747 var display = document.getElementById('countdown'); 748 disableResend(); 749 startTimer(RESEND_TIMER, display) 750 document.getElementById('subscribe-btn-sms').value = "Verify OTP and Subscribe"; 751 document.getElementById('otp_verify_flow').value = true; 752 form.action = '/subscriptions/verify-otp'; 753 } else if (data.type === 'success' && action.includes('verify')){ 754 document.getElementById('otp-container').style.display = "none"; 755 $('#phone-number').val('').prop('readonly', false); 756 $('#otp').val(''); 757 document.getElementById('subscribe-btn-sms').value = "Send OTP"; 758 document.getElementById('otp_verify_flow').value = false; 759 form.action = '/subscriptions/new-sms'; 760 SP.currentPage.updatesDropdown.hide(); 761 } 762 }); 763 $("#btn-subcriber-change-number").on('click', () => { 764 document.getElementById('otp-container').style.display = "none"; 765 $('#phone-number').prop('readonly', false); 766 document.getElementById('subscribe-btn-sms').value = "Send OTP"; 767 form.action = '/subscriptions/new-sms'; 768 return false 769 }) 770 $('#resend-otp-btn').on('click', function(e) { 771 e.preventDefault(); 772 let phoneNumber = $('#phone-number').val(); 773 let countryCode = $('.phone-country').val(); 774 $.ajax({ 775 type: 'POST', 776 url: "/subscriptions/new-sms", 777 data: { 778 phone_number: phoneNumber, 779 phone_country: countryCode, 780 type: 'resend' 781 }, 782 }).done(function(data) { 783 var messageOptions = (data.type !== undefined && data.type !== null) ? { cssClass: data.type } : {}; 784 HRB.utils.notify(data.text, messageOptions); 785 var display = document.getElementById('countdown'); 786 disableResend(); 787 timer.style.display = "none" 788 if (data.type === 'success') { 789 startTimer(RESEND_TIMER, display); 790 } 791 }) 792 }); 793 }) 794 795 function startTimer(duration, display){ 796 var timer = duration, seconds; 797 clearInterval(countdownTimer); 798 countdownTimer = setInterval(function () { 799 seconds = parseInt(timer % 60, 10); 800 display.textContent = seconds; 801 if(--timer < 0){ 802 enableResend(); 803 clearInterval(countdownTimer); 804 } 805 }, 1000); 806 disableResend(); 807 } 808 function enableResend(){ 809 resendBtn.style.display = "block"; 810 timer.style.display = "none" 811 } 812 function disableResend(){ 813 resendBtn.style.display = "none"; 814 timer.style.display = "block" 815 } 816 817 $(function() { 818 $('#subscribe-form-email').on('submit', function() {
819 var tokenField = document.getElementById('email-otp-token-field'); 820 if (!tokenField) { 821 return; 822 } 823 let page_code = "g1j7mrrz279t" 824 let key = keyForEmailOtpToken($('#email').val(), page_code); 825 tokenField.value = localStorage.getItem(key); 826 }); 827 }); 828 829 var emailOtpCountdownTimer; 830 var emailOtpResendBtn = document.getElementById('resend-email-otp'); 831 var emailOtpTimer = document.getElementById('email-otp-timer'); 832 var emailOtpForm = document.getElementById('subscribe-form-email'); 833 var EMAIL_OTP_RESEND_TIMER = 600; 834 $(function() { 835 $('#subscribe-form-email').on('ajax:success', function(e, data, status, xhr){ 836 const form = this; 837 const action = form.getAttribute('action'); 838 if (data.type === 'success' && data.email_otp_verify_flow === true) { 839 document.getElementById('email-otp-container').style.display = "block"; 840 var display = document.getElementById('email-otp-countdown'); 841 display.textContent = EMAIL_OTP_RESEND_TIMER; 842 disableEmailOtpResend(); 843 startEmailOtpTimer(EMAIL_OTP_RESEND_TIMER, display) 844 document.getElementById('subscribe-btn-email').value = "Verify OTP and Subscribe"; 845 document.getElementById('email_otp_verify_flow').value = true; 846 form.action = '/subscriptions/verify-email-otp'; 847 } else if (data.type === 'success' && action.includes('verify')){ 848 let email = $('#email') 849 let page_code = "g1j7mrrz279t" 850 let key = keyForEmailOtpToken(email.val(), page_code); 851 localStorage.setItem(key, data.email_otp_auth_token); 852 853 document.getElementById('email-otp-container').style.display = "none"; 854 email.val('').prop('readonly', false); 855 $('#email-otp').val(''); 856 document.getElementById('subscribe-btn-email').value = "Send OTP"; 857 document.getElementById('email_otp_verify_flow').value = false; 858 form.action = '/subscriptions/new-email'; 859 SP.currentPage.updatesDropdown.hide(); 860 } 861 }); 862 $('#resend-email-otp-btn').on('click', function(e) { 863 e.preventDefault(); 864 let email = $('#email').val(); 865 $.ajax({ 866 type: 'POST', 867 url: "/subscriptions/new-email", 868 data: { 869 email: email 870 }, 871 }).done(function(data) { 872 var messageOptions = (data.type !== undefined && data.type !== null) ? { cssClass: data.type } : {}; 873 HRB.utils.notify(data.text, messageOptions); 874 if (data.type === 'success') { 875 var display = document.getElementById('email-otp-countdown'); 876 display.textContent = EMAIL_OTP_RESEND_TIMER; 877 disableEmailOtpResend(); 878 emailOtpTimer.style.display = "none" 879 startEmailOtpTimer(EMAIL_OTP_RESEND_TIMER, display); 880 } 881 }) 882 }); 883 }) 884 885 function startEmailOtpTimer(duration, display){ 886 var timer = duration, seconds; 887 clearInterval(emailOtpCountdownTimer); 888 emailOtpCountdownTimer = setInterval(function () { 889 seconds = parseInt(timer, 10); 890 display.textContent = seconds; 891 if(--timer < 0){ 892 enableEmailOtpResend(); 893 clearInterval(emailOtpCountdownTimer); 894 } 895 }, 1000); 896 disableEmailOtpResend(); 897 } 898 899 function enableEmailOtpResend(){ 900 emailOtpResendBtn.style.display = "block"; 901 emailOtpTimer.style.display = "none" 902 } 903 function disableEmailOtpResend(){ 904 emailOtpResendBtn.style.display = "none"; 905 emailOtpTimer.style.display = "block" 906 } 907 function keyForEmailOtpToken(email, pageCode) { 908 return email + '|' + pageCode+ '|SUBSCRIBE_VIA_EMAIL'; 909 } 910</script>
910 911 912 </div> 913 </div> 914 915</div> 916 <!-- this is outside of the .container so that the cover photo can go full width on mobile --> 917 918 919 <div class="container history-container"> 920 <div class="history-nav border-color"> 921 <ul> 922 <li> 923 <a class="button border-color" href="https://www.voipfonestatus.co.uk/history" aria-label="Incidents" >Incidents</a> 924 </li> 925 <li> 926 <a class="button current border-color" href="https://www.voipfonestatus.co.uk/uptime" aria-label="Uptime" aria-current=page>Uptime</a> 927 </li> 928 </ul> 929</div> 930 931 932 <div data-react-class="UptimeCalendar" data-react-props="{"component":{"status":"operational","name":"Voice Services","created_at":"2015-09-25T16:24:48.849+01:00","updated_at":"2016-09-29T10:23:09.656+01:00","position":1,"description":null,"showcase":false,"start_date":null,"id":"qkvw844ykqgj","group_id":null,"page_id":"g1j7mrrz279t","components":["czxfbk7fwcv5","ppmwxspps50q","rx2tvhdt861z","fy3g9w17y2rm","3rhs3t75tfrw","hgkjp5zymh33","3rtvhclm17qf","8cpdrlz3ln4y","mk3s9jmmw263","vx9f49ltyhw8","9xfgc7lq662h"]},"component_select_list":[{"name":"Virtual PA","value":"562qvych6ft8"},{"name":"Voice Services","value":"qkvw844ykqgj"},{"name":"Voice Services - Voipfone Softphone","value":"mk3s9jmmw263"},{"name":"Voice Services - Voicemail","value":"vx9f49ltyhw8"},{"name":"Voice Services - Conference Call","value":"9xfgc7lq662h"}],"is_group":true,"months":[{"name":"August","year":2026,"start_offset":6,"uptime_percentage":1.0,"days":[{"color":"#2fcc66","date":"2026-08-01T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-02T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-03T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-04T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-05T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-06T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-07T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-08T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-09T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-10T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-11T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-12T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-13T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-14T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-15T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-16T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-17T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-18T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-19T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-20T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-21T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-22T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-23T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-24T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-25T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-26T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-27T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-28T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-29T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-30T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-08-31T00:00:00.000+01:00","mc":0,"pc":0}]},{"name":"September","year":2026,"start_offset":2,"uptime_percentage":1.0,"days":[{"color":"#2fcc66","date":"2026-09-01T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-02T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-03T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-04T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-05T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-06T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-07T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-08T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-09T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-10T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-11T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-12T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-13T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-14T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-15T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-16T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-17T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"
9322026-09-18T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-19T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-20T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-21T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-22T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-23T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-24T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-25T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-26T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-27T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-28T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-29T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-09-30T00:00:00.000+01:00","mc":0,"pc":0}]},{"name":"October","year":2026,"start_offset":4,"uptime_percentage":1.0,"days":[{"color":"#2fcc66","date":"2026-10-01T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-10-02T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-10-03T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-10-04T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#2fcc66","date":"2026-10-05T00:00:00.000+01:00","mc":0,"pc":0},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"},{"color":"#EAEAEA"}]}],"group_component_data":[{"code":"czxfbk7fwcv5","start_date":null,"is_showcased":false},{"code":"ppmwxspps50q","start_date":null,"is_showcased":false},{"code":"rx2tvhdt861z","start_date":null,"is_showcased":false},{"code":"fy3g9w17y2rm","start_date":null,"is_showcased":false},{"code":"3rhs3t75tfrw","start_date":null,"is_showcased":false},{"code":"hgkjp5zymh33","start_date":null,"is_showcased":false},{"code":"3rtvhclm17qf","start_date":null,"is_showcased":false},{"code":"8cpdrlz3ln4y","start_date":null,"is_showcased":false},{"code":"mk3s9jmmw263","start_date":null,"is_showcased":true},{"code":"vx9f49ltyhw8","start_date":null,"is_showcased":true},{"code":"9xfgc7lq662h","start_date":"2023-12-29T00:00:00.000+00:00","is_showcased":true}],"renderUptimePatternFF":false,"a11ySeptHeadings":true}"></div> 933 934 <div class="page-footer border-color font-small"> 935 <a href="/" aria-label="Back to current status"> 936 <span class="current-status-arrow">←</span> Current Status 937 </a> 938 <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=www.voipfonestatus.co.uk&utm_content=SP-notifications&utm_medium=powered-by&utm_source=inapp">Powered by Atlassian Statuspage</a></span> 939</div> 940 941 </div> 942 943 944 945</div> 946 947 948
948<script src="https://dka575ofm4ao0.cloudfront.net/assets/status_manifest-b790849ccb41192b3f7d9c14d5a4a6d5142add81fc8522649ca5c82f6a1fbb0e.js"></script>
948 949 <div id="cpt-notification-container" role="status" aria-live="polite" aria-atomic="true"></div> 950 951 952 953 954 955 <!-- all of the content_for stuff --> 956
956<script src="https://dka575ofm4ao0.cloudfront.net/assets/register_subscription_form-589b657fec607087fc5c740c568270907310bc4f6aaa20256e70f01b103025ca.js"></script>
956 957 958
958<script type="text/javascript"> 959 $(function() { 960 SP.currentPage.registerSubscriptionForm('email'); 961 962 SP.currentPage.registerSubscriptionForm('sms'); 963 964 965 }); 966 967 968 969 970 971 </script>
971 972
972<script src="https://dka575ofm4ao0.cloudfront.net/assets/status_common-a7b1e9f22a2c94a83d347ec517cabf21494ca11867ebf891f46f89c9b4101811.js"></script>
972 973 974 975 976
976<script> 977 /** INITIALIZATION **/ 978 var recaptchaIds = {} 979 980 // Unfortunately there's no unique selectors on the parent divs that recaptcha adds. The first unique selector 981 // is the iframe rendered 2 levels deep. So this waits until the iframes are added to the page, then finds 982 // the parent div and sets the z index so that it'll render above our modals & dropdowns from the start. 983 function setZIndex(captchaCount, startTime) { 984 // bail after 10s just in case so we don't do this forever if something whaky happens 985 if (new Date() - startTime > 10000) { 986 return; 987 } 988 989 var iframes = document.querySelectorAll('iframe[title="recaptcha challenge"]'); 990 if (iframes.length != captchaCount) { 991 setTimeout(function() { 992 setZIndex(captchaCount, startTime); 993 }, 500); 994 } 995 996 for (var i = 0; i < iframes.length; i++) { 997 // incident subscribe modal is 1050, so this has to be above that 998 iframes[i].parentElement.parentElement.style.zIndex = "1100"; 999 } 1000 } 1001 1002 function updateCaptchaIframeTitle(captchaCount, startTime, updates=0) { 1003 1004 if (new Date() - startTime > 10000 || captchaCount === updates) { 1005 return; 1006 } 1007 var iframesWithTitle = document.querySelectorAll('iframe[title="recaptcha challenge expires in two minutes"]'); 1008 1009 if (iframesWithTitle.length != captchaCount) { 1010 setTimeout(function() { 1011 updateCaptchaIframeTitle(captchaCount, startTime, iframesWithTitle.length + updates); 1012 }, 500); 1013 } 1014 1015 for (var i = 0; i < iframesWithTitle.length; i++) { 1016 iframesWithTitle[i].title = "recaptcha"; 1017 } 1018 } 1019 1020 function addIncidentCaptcha() { 1021 var incidentCaptcha = document.createElement('div'); 1022 incidentCaptcha.setAttribute('id', 'subscribe-incident-recaptcha'); 1023 incidentCaptcha.setAttribute('class', 'g-recaptcha'); 1024 incidentCaptcha.setAttribute('data-sitekey', '6LcZ-b0UAAAAAENi956aWzynTT2ZJ80dGU3F80Op'); 1025 incidentCaptcha.setAttribute('data-callback', 'submitIncidentSubscriberSuccess'); 1026 incidentCaptcha.setAttribute('data-error-callback', 'submitIncidentSubscriberError'); 1027 incidentCaptcha.setAttribute('data-size', 'invisible'); 1028 document.body.appendChild(incidentCaptcha); 1029 var incidentCode = document.createElement('input'); 1030 incidentCode.setAttribute('type', 'hidden'); 1031 incidentCode.setAttribute('id', 'submit_incident_code'); 1032 document.body.appendChild(incidentCode); 1033 } 1034 1035 var onloadCallback = function() { 1036 // if there is an incident, then add incident captcha element 1037 if (document.getElementsByClassName('modal-open-incident-subscribe').length > 0) { 1038 addIncidentCaptcha(); 1039 } 1040 1041 var captchas = document.getElementsByClassName("g-recaptcha"); 1042 1043 for(var i = 0; i < captchas.length; i++) { 1044 var elId = captchas[i].id; 1045 recaptchaIds[elId] = grecaptcha.enterprise.render(elId); 1046 } 1047 1048 setZIndex(captchas.length, new Date()); 1049 updateCaptchaIframeTitle(captchas.length, new Date()); 1050 } 1051 1052 1053 /** SUBSCRIBE DROPDOWN */ 1054 1055 // callbacks for captcha success 1056 function submitNewSubscriber(type, error) { 1057 if (error) document.querySelector('#subscribe-form-' + type + ' #captcha_error').value = 'true'; 1058 1059 document.getElementById('subscribe-form-' + type).dispatchEvent(new Event('submit', {bubbles: true, cancelable: true})); 1060 grecaptcha.enterprise.reset(recaptchaIds['subscribe-btn-' + type]); 1061 } 1062 function submitNewEmailSubscriber(token) { 1063 submitNewSubscriber('email'); 1064 } 1065 function submitNewSmsSubscriber(token) { 1066 submitNewSubscriber('sms'); 1067 } 1068 function submitNewWebhookSubscriber(token) { 1069 submitNewSubscriber('webhook'); 1070 } 1071 function submitIncidentSubscriber(token, error, incidentCodeOverride) { 1072 var incidentCode = incidentCodeOverride; 1073 if (!incidentCode) { 1074 var incidentCodeEl = document.getElementById('submit_incident_code'); 1075 incidentCode = incidentCodeEl && incidentCodeEl.value; 1076 } 1077 var incidentForm = incidentCode && document.getElementById('subscribe-form-' + incidentCode); 1078 if (!incidentForm) { 1079 return; 1080 } 1081 1082 var captchaError = incidentForm.querySelector('input[name="captcha_error"]'); 1083 var recaptchaResponse = incidentForm.querySelector('input[name="g-recaptcha-response"]'); 1084 if (captchaError) { 1085 captchaError.value = error; 1086 } 1087 if (recaptchaResponse) { 1088 recaptchaResponse.value = token; 1089 } 1090 incidentForm.dispatchEvent(new Event('submit', {bubbles: true, cancelable: true})); 1091 if (window.grecaptcha && grecaptcha.enterprise && recaptchaIds['subscribe-incident-recaptcha'] != null) { 1092 grecaptcha.enterprise.reset(recaptchaIds['subscribe-incident-recaptcha']); 1093 } 1094 } 1095 function submitIncidentSubscriberSuccess(token) { 1096 submitIncidentSubscriber(token, 'false'); 1097 } 1098 1099 // callbacks if we get captcha network errors 1100 function emailSubscriberCaptchaError(token) { 1101 submitNewSubscriber('email', true); 1102 } 1103 function smsSubscriberCaptchaError(token) { 1104 submitNewSubscriber('sms', true); 1105 } 1106 function webhookSubscriberCaptchaError(token) { 1107 submitNewSubscriber('webhook', true); 1108 } 1109 function submitIncidentSubscriberError(token) { 1110 submitIncidentSubscriber(token, 'true'); 1111 } 1112 1113 // tracking clicks 1114 ['email', 'sms', 'webhook'].forEach(function(type) { 1115 var el = document.getElementById('subscribe-btn-' + type); 1116 el && el.addEventListener("click", function() { 1117 $.ajax({ 1118 type: "POST", 1119 url: "/subscriptions/track_attempt", 1120 data: { 1121 type: type 1122 } 1123 }) 1124 }) 1125 }) 1126 1127 // form submission success callbacks 1128 $('#subscribe-form-email').on('ajax:success', function(e, data, status, xhr){ 1129 if (data.type === 'success') { 1130 SP.currentPage.updatesDropdown.hide(); 1131 var emailField = document.getElementById('email'); 1132 if (emailField) { 1133 emailField.value = ''; 1134 } 1135 } 1136 }); 1137 $('#subscribe-form-sms').on('ajax:success', function(e, data, status, xhr){ 1138 if (data.type === 'success' && data.otp_flow !== true) { 1139 SP.currentPage.updatesDropdown.hide(); 1140 var phoneField = document.getElementById('phone-number'); 1141 if (phoneField) { 1142 phoneField.value = ''; 1143 } 1144 } 1145 }); 1146 $('#subscribe-form-webhook').on('ajax:success', function(e, data, status, xhr){ 1147 if (data.type === 'success') { 1148 SP.currentPage.updatesDropdown.hide(); 1149 document.getElementById('endpoint-webhooks').value = ''; 1150 document.getElementById('email-webhooks').value = ''; 1151 } 1152 }); 1153 1154 $('a.subscribe').on('click', function() { 1155 document.body.style.overflow = "hidden"; 1156 document.body.style.height = "100vh"; 1157 }); 1158 1159 $('div.modal-open-incident-subscribe').on('hidden', function(){ 1160 document.body.style.overflow = ""; 1161 document.body.style.height = ""; 1162 }); 1163 1164 function submitCaptchaIncidentSubscribe(event) { 1165 var incidentCode = event.target.id.split('-')[2]; 1166 event.preventDefault(); 1167 1168 $.ajax({ 1169 type: "POST", 1170 url: "/subscriptions/track_attempt", 1171 data: { 1172 type: 'incident' 1173 } 1174 }) 1175 1176 var incidentCodeField = document.getElementById('submit_incident_code'); 1177 if (incidentCodeField) { 1178 incidentCodeField.value = incidentCode; 1179 } 1180 1181 // Recaptcha's onloadCallback is what creates #submit_incident_code and the 1182 // widget id. If the enterprise.js script is blocked (ad blockers, CI url 1183 // blacklist), execute() and .value on a null node throw and the subscribe 1184 // click never reaches the server. 1185 var recaptchaId = recaptchaIds['subscribe-incident-recaptcha']; 1186 if (window.grecaptcha && grecaptcha.enterprise && typeof grecaptcha.enterprise.execute === 'function' && recaptchaId != null) { 1187 grecaptcha.enterprise.execute(recaptchaId); 1188 } else { 1189 submitIncidentSubscriber('', 'true', incidentCode); 1190 } 1191 } 1192</script>
vendor: 135 bytes, lines 1192-1198
1192 1193 1194<script src='https://www.recaptcha.net/recaptcha/enterprise.js?onload=onloadCallback&render=explicit' async defer></script> 1195 1196 1197 1198
1198<script src="https://dka575ofm4ao0.cloudfront.net/packs/common-b57e85f6a60348cdd566.chunk.js"></script>
1198 1199
1199<script src="https://dka575ofm4ao0.cloudfront.net/packs/globals-79d49f8cfe179f020629.chunk.js"></script>
1199 1200 1201
1201<script src="https://dka575ofm4ao0.cloudfront.net/packs/runtime-e9fe27ac357824763c7d.js"></script>
1201 1202 1203 1204
1204<script src="https://dka575ofm4ao0.cloudfront.net/packs/status-46c9a85ee33b4106a045.chunk.js"></script>
1204 1205
1205<script src="https://dka575ofm4ao0.cloudfront.net/packs/components-95f0cadd8954a909f19d.chunk.js"></script>
1205 1206 1207 1208
1208<script> 1209 window.addEventListener('load', function () { 1210 const urlParams = new URLSearchParams(window.location.search); 1211 const messageToken = urlParams.get('slack_message_token'); 1212 const channelName = escape(urlParams.get('channel_name')); 1213 1214 if(!!messageToken) { 1215 switch(messageToken) { 1216 case 'slack_auth_error': 1217 HRB.utils.notify('The Slack authorization attempt was unsuccessful. Try again.', {cssClass:'error'}); 1218 break; 1219 case 'subscribers_disabled_error': 1220 HRB.utils.notify('Slack subscriptions are not enabled on this page.', {cssClass:'error'}); 1221 break; 1222 case 'direct_message_channel_error': 1223 HRB.utils.notify('Subscriptions arenât supported in direct messages. Try subscribing again and choose a channel instead.', {cssClass:'error'}); 1224 break 1225 case 'duplicate_error': 1226 HRB.utils.notify("You're already subscribed to get Slack notifications in that channel.", {cssClass:'error'}); 1227 break; 1228 case 'duplicate_private_channel_error': 1229 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'}); 1230 break; 1231 case 'default_success': 1232 HRB.utils.notify("You're now subscribed to get Statuspage updates in Slack!", {cssClass:'success'}); 1233 break; 1234 case 'private_channel_success': 1235 HRB.utils.notify(`IMPORTANT: Invite the @Statuspage app to your Slack channel #${channelName} to start getting status updates.`, {cssClass:'success'}); 1236 break; 1237 } 1238 } 1239 }); 1240</script>
1240 1241 1242 1243<!-- FOR FLASH NOTICES --> 1244 1245<!-- FOR ERROR --> 1246 1247 1248
1248<script> 1249 $(function() { 1250 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=www.voipfonestatus.co.uk&utm_content=SP-notifications&utm_medium=powered-by&utm_source=inapp">Powered by Atlassian Statuspage</a></span>'); 1251 1252 var setPoweredByStyles = function() { 1253 if (!$('.powered-by').length) { 1254 $link.appendTo($('.page-footer')) 1255 } 1256 $('.powered-by').attr('style', 'display: inline !important; visibility:visible !important; opacity: 1 !important; position:static !important; text-indent:0px !important; transform:scale(1) !important'); 1257 } 1258 1259 setInterval(setPoweredByStyles, 1000); 1260 }); 1261</script>
1261 1262 1263 1264 1265 1266 1267 </body> 1268</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.