{{terminalErrorHeading}}

An error has occurred

{{terminalError}}

Thank you for registering
Get news in your inbox
Enjoy faster load time & fewer ads
Read Today's Paper
Unlimited puzzle access
Follow us on social media
Thanks for registering!
Welcome!
An email confirmation has been sent to
{{user.email}}

You can now enjoy:
No advertising, ever!
An additional free account
Puzzles access
Today's Paper Access
Access to The Canberra Times
Access to our app!
Next
"use strict"; var $onboardingScope = angular.element(document.getElementById("onboarding")).scope(); pipelineRequest('gtm_set_commercial_checkout', { step: '1', option: $onboardingScope.flags.selectedPaymentMethod.identifier }); sendCommercialPurchase($onboardingScope);

Download our app for a better reading experience. The convenience of faster news right at your fingertips!

Next
Close
Your {{custom.registration_only ? 'membership' : 'subscription'}} includes access to the digital version of the printed newspaper. Look for Today's Paper on our website or have it delivered straight to your inbox.
Open Today's Paper
Next
Close
Choose from daily crosswords, Sudoku and ultimate trivia. You will find them via the puzzles icon on the website.
Open puzzles
Next
Close
Stay informed: follow us on Facebook and Twitter.
Get 3 free articles a month
Continue
Want more than 3 articles?
You can have it all for a special price.
Only available now.
$1
/ per week
for the first 4 weeks (min cost $4.00)
Then ${{ selectedTerm.billingPlanTable[selectedTerm.billingPlanTable.length - 1].priceValue.toFixed(2) }} a {{ selectedTerm.billingPlanTable[selectedTerm.billingPlanTable.length - 1].billingPeriod.split(' ')[1] }} thereafter
Get special offer
Paid Subscriber Benefits
Faster, easier access with our app
30 day FREE trial
Unlimited access to all articles anytime, anywhere
Breaking news alerts direct to your inbox
The digital version of Today's Paper
Interactive Crosswords, Sudoku and Trivia
Exclusive subscriber offers & competitions
Environmentally friendly
"use strict"; function sendGtmSelectItem(term) { setDataLayerForGTM({ ecommerce: null }); setDataLayerForGTM({ ecommerce: { currencyCode: "AUD", click: { products: [{ name: "Special Offer", id: term.termId, price: term.billingPlanTable[1].priceValue, brand: $scope.params.offerId, category: "Subscription", variant: "Monthly", list: "Subscribe page", position: 1 }] } } }); sendToGTM({ action: "select_item", label: "product_selected", trigger: "select_item" }); } var specialOfferScope = angular.element(document.getElementById('specialoffer__button')).scope().sendGtmSelectItem = sendGtmSelectItem;
Welcome to {{app.name.startsWith("The") ? app.name : "the " + app.name}}.
Next
"use strict"; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } sendToGTM({ label: "xStep3", pipelineEvent: "gtm_set_template" }); pipelineRequest("set_abandoned_term", { id: null }); var PAGES = { THANK_YOU: 0, NEWSLETTERS: 1, APP: 2, DPE: 3, PUZZLES: 4, SOCIAL_MEDIA: 5, SPECIAL_OFFER: 6, WELCOME: 7 }; var appImages = { 'thecanberratimes': { "src": "https://transform.newsnow.io/transform/v1/resize/frm/151263300/74fbd4cd-b126-4cae-9a56-361b26bb8d3e.png/w177_h321_fmax.jpg", "2x": "https://transform.newsnow.io/transform/v1/resize/frm/151263300/74fbd4cd-b126-4cae-9a56-361b26bb8d3e.png/w350_h636_fmax.jpg", "3x": "https://transform.newsnow.io/transform/v1/resize/frm/151263300/74fbd4cd-b126-4cae-9a56-361b26bb8d3e.png/w525_h953_fmax.jpg" }, 'newcastleherald': { "src": "https://transform.newsnow.io/transform/v1/resize/frm/151263300/71b3f87c-baf3-42a4-a7f7-f2821faa0f15.png/w177_h321_fmax.jpg", "2x": "https://transform.newsnow.io/transform/v1/resize/frm/151263300/71b3f87c-baf3-42a4-a7f7-f2821faa0f15.png/w350_h636_fmax.jpg", "3x": "https://transform.newsnow.io/transform/v1/resize/frm/151263300/71b3f87c-baf3-42a4-a7f7-f2821faa0f15.png/w525_h953_fmax.jpg" }, 'thecourier': { "src": "https://transform.newsnow.io/transform/v1/resize/frm/151263300/ffad370a-c70b-4cf9-b365-ddbb04809f41.png/w177_h321_fmax.jpg", "2x": "https://transform.newsnow.io/transform/v1/resize/frm/151263300/ffad370a-c70b-4cf9-b365-ddbb04809f41.png/w350_h636_fmax.jpg", "3x": "https://transform.newsnow.io/transform/v1/resize/frm/151263300/ffad370a-c70b-4cf9-b365-ddbb04809f41.png/w525_h953_fmax.jpg" }, 'illawarramercury': { "src": "https://transform.newsnow.io/transform/v1/resize/frm/151263300/a5664f0c-8831-4fd7-856e-1d338d3e89d8.png/w177_h321_fmax.jpg", "2x": "https://transform.newsnow.io/transform/v1/resize/frm/151263300/a5664f0c-8831-4fd7-856e-1d338d3e89d8.png/w350_h636_fmax.jpg", "3x": "https://transform.newsnow.io/transform/v1/resize/frm/151263300/a5664f0c-8831-4fd7-856e-1d338d3e89d8.png/w525_h953_fmax.jpg" }, 'bordermail': { "src": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/f474416e-f904-4343-8120-015983963d57.png/w177_h321_fmax.jpg", "2x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/a596b3ad-ca3a-402e-ac48-bd2624d8bca2.png/w350_h636_fmax.jpg", "3x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/fa602192-d9ca-4f7d-9864-ce10a9d77869.png/w525_h953_fmax.jpg" }, 'theexaminer': { "src": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/f1c22219-89e4-49cc-a36b-51ef22bf82ab.png/w177_h321_fmax.jpg", "2x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/0ea505f4-10a7-436b-b39a-c04e507b2d34.png/w350_h636_fmax.jpg", "3x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/5bd4706b-9b5a-4f55-9ab4-b257aafe3feb.png/w525_h953_fmax.jpg" }, 'bendigoadvertiser': { "src": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/47c0349e-448b-4f0a-b9ba-cecda041a250.png/w177_h321_fmax.jpg", "2x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/cd6b4abb-6431-44f6-9715-9ee4a20a9ab1.png/w350_h636_fmax.jpg", "3x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/c1f92eb7-1c0b-494a-9171-e007c0b001bc.png/w525_h953_fmax.jpg" }, 'theadvocateburnie': { "src": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/a3b05264-70b8-4c93-a13d-74078b6b37f9.png/w177_h321_fmax.jpg", "2x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/a76441dc-f95f-4c45-92df-88c12971d599.png/w350_h636_fmax.jpg", "3x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/0e73e465-1bad-4edd-9f40-8e912fe1f2bb.png/w525_h953_fmax.jpg" }, 'thedailyadvertiser': { "src": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/a84e219e-9642-40c9-87f4-6402786d849b.png/w177_h321_fmax.jpg", "2x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/872998c6-51c1-418b-beee-30f36a6cf54b.png/w350_h636_fmax.jpg", "3x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/141d177d-9a31-4afc-9bd5-599d74e08af8.png/w525_h953_fmax.jpg" }, 'warrnamboolstandard': { "src": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/caad0ae6-976b-4189-8ce8-cc11846e581d.png/w177_h321_fmax.jpg", "2x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/97224a8f-4e08-4e16-b518-2650bd166480.png/w350_h636_fmax.jpg", "3x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/46f2e868-c125-4d3c-af45-32a2cc5a7c06.png/w525_h953_fmax.jpg" }, 'northerndailyleader': { "src": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/c62a6f17-3907-4d15-b587-c4ae879942cd.png/w177_h321_fmax.jpg", "2x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/2a2c359a-6cb3-415a-aa15-ee160b608740.png/w350_h636_fmax.jpg", "3x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/a3954bdc-9a8e-4e90-bfcc-f557c543acf5.png/w525_h953_fmax.jpg" }, 'westernadvocate': { "src": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/2823c973-4f52-4f43-8fbf-380e759d5647.png/w177_h321_fmax.jpg", "2x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/71cea57d-b335-4d77-abff-c58b7c0a9a64.png/w350_h636_fmax.jpg", "3x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/faded43c-e162-460e-bf26-32715e60a968.png/w525_h953_fmax.jpg" }, 'centralwesterndaily': { "src": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/14b76711-8b4b-4f63-b605-198a44f33caa.png/w177_h321_fmax.jpg", "2x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/b185a48f-9868-4dd8-a61a-377a9ab1544f.png/w350_h636_fmax.jpg", "3x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/169eb279-329a-487c-9b9a-6fe28dbb7537.png/w525_h953_fmax.jpg" }, 'dailyliberal': { "src": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/af373e40-ae20-4a89-99c6-fb07abe6123b.png/w177_h321_fmax.jpg", "2x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/1ab26870-bbe4-45c0-8210-34aff39ef6fc.png/w350_h636_fmax.jpg", "3x": "https://transform.newsnow.io/transform/v1/resize/frm/209997574/bf1fc3de-6a01-4438-b3a2-c554c4d03975.png/w525_h953_fmax.jpg" } }; var $onboardingScope = angular.element(document.getElementById("onboarding")).scope(); $onboardingScope.originUrl = function () { var findOrigin = document.createElement("a"); findOrigin.href = $onboardingScope.params.url; return findOrigin.origin; }(); $onboardingScope.appImages = $onboardingScope.custom.has_app ? appImages[$onboardingScope.custom.publication] : {}; $onboardingScope.applePlayStoreLink = $onboardingScope.custom.has_app ? "https://apps.apple.com/us/app/".concat($onboardingScope.custom.app_store_id) : ''; $onboardingScope.googlePlayStoreLink = $onboardingScope.custom.has_app ? "https://play.google.com/store/apps/details?id=".concat($onboardingScope.custom.google_play_id) : ''; $onboardingScope.lastScreen = false; $onboardingScope.$$phase || $onboardingScope.$apply(); var $scope = angular.element(document.getElementById("view-state2")).scope(); var uid = $scope.user.uid; var aid = $scope.params.aid; var pageManager = new function () { var _this = this; this.giftRedemption = $scope.giftRedemption; this.register = $scope.registrationOnboarding; this.basic = this.giftRedemption || !$onboardingScope.selectedTerm.name ? false : $onboardingScope.selectedTerm.name.toLowerCase().indexOf('basic') !== -1; $onboardingScope.isBasic = this.basic; this.sharedSubscription = $scope.input.sharedAccountCount; this.pages = [PAGES.NEWSLETTERS]; this.current = -1; var spliceIdx = 1; if ($onboardingScope.custom.has_social_screen) { this.pages.push(PAGES.SOCIAL_MEDIA); } if (this.register && !$onboardingScope.custom.registration_only) { this.pages.unshift(PAGES.SPECIAL_OFFER); } else if (this.giftRedemption) { this.pages.unshift(PAGES.WELCOME); } else { if (!this.sharedSubscription) { // In premium "Thank you" screen is showed // inside "Shared subscription components.html" this.pages.unshift(PAGES.THANK_YOU); spliceIdx += 1; } } if (!this.register || $onboardingScope.custom.registration_only) { if (!this.basic && !this.sharedSubscription) { // Don't show in basic: CT Basic subscription // Don't show when new onboarding for premium (dailies). // The way to identify Premium dailies is check if // if user has access to share subscription if (!this.register && $onboardingScope.custom.has_puzzles) { this.pages.splice(spliceIdx, 0, PAGES.PUZZLES); } if ($onboardingScope.custom.has_dpe) { this.pages.splice(spliceIdx, 0, PAGES.DPE); } } if ($onboardingScope.custom.has_app) { this.pages.splice(spliceIdx, 0, PAGES.APP); } } this.nextPage = function () { _this.current++; $onboardingScope.selectedPage = _this.pages[_this.current]; if (_this.current === _this.pages.length - 1) { $onboardingScope.lastScreen = true; } $onboardingScope.$$phase || $onboardingScope.$apply(); sendToGTM({ label: "onboardingPage" + $onboardingScope.selectedPage }); setTimeout(function () { var height = document.querySelector(".page--".concat($onboardingScope.selectedPage)).offsetHeight; document.querySelector(".onboarding__content").style.height = "".concat(height, "px"); }, 50); requestAnimationFrame(function () { var returnUrlLink = document.querySelector("#returnUrlLink"); if (returnUrlLink) { returnUrlLink.setAttribute('target', '_top'); } }); $(".progress__over").css('width', 66.6 + _this.current / _this.pages.length * 33.4 + "%"); }; this.nextPage(); }(); $onboardingScope.updateHeight = function () { // Delay slightly to account for height after merge fields are // hidden/shown setTimeout(function () { var height = document.querySelector(".page--".concat($onboardingScope.selectedPage)).offsetHeight; document.querySelector(".onboarding__content").style.height = "".concat(height, "px"); }, 50); }; getHostName(function (HOSTNAME) { request("".concat(HOSTNAME, "api/mail/groups/"), 'GET', { uid: uid, aid: aid }, undefined, function (data) { if (data == null || !data.success) { $onboardingScope.error = true; $scope.loaded = true; $onboardingScope.$$phase || $onboardingScope.$apply(); } else { $onboardingScope.newsletters = _objectSpread({}, data); Object.keys($onboardingScope.newsletters.groups).forEach(function (key) { var name = $onboardingScope.newsletters.groups[key]; if (name.toLowerCase().indexOf('breaking') !== -1) { // Check breaking by default $onboardingScope.newsletters.subscribedGroups[key] = true; } else if (name === "Today's Paper Alert") { $onboardingScope.newsletters.dpe = key; delete $onboardingScope.newsletters.groups[key]; delete $onboardingScope.newsletters.subscribedGroups[key]; } else if (name === 'Daily Puzzles Alert') { $onboardingScope.newsletters.puzzles = key; delete $onboardingScope.newsletters.groups[key]; delete $onboardingScope.newsletters.subscribedGroups[key]; } }); $scope.loaded = true; $onboardingScope.$$phase || $onboardingScope.$apply(); } if ($onboardingScope.selectedPage === 1 || $onboardingScope.selectedPage === 2) { var height = document.querySelector(".page--".concat($onboardingScope.selectedPage)).offsetHeight; document.querySelector('.onboarding__content').style.height = "".concat(height, "px"); } requestAnimationFrame(function () { $scope.showNewsletters = true; $scope.$$phase || $scope.$apply(); }); }); }); function addNewsletters(subscribedGroups, subscribedNational) { $onboardingScope.processing = true; $onboardingScope.$$phase || $onboardingScope.$apply(); getHostName(function (HOSTNAME) { var postData = { isSubscribed: true, setGroups: JSON.stringify(subscribedGroups) }; if (subscribedNational) { postData.setNational = JSON.stringify(subscribedNational); } request("".concat(HOSTNAME, "api/mail/groups/"), 'POST', { aid: aid, uid: uid }, postData, function (data) { if (!data || !data.success) { $onboardingScope.error = true; $onboardingScope.$$phase || $onboardingScope.$apply(); } $onboardingScope.processing = false; if (pageManager.current === pageManager.pages.length - 1) { $onboardingScope.close(); } else { pageManager.nextPage(); } }); }); } function submitSpecialOffer() { sendToGTM({ label: 'specialOfferButton' }); pageManager.nextPage(); } function submitThankYou() { sendToGTM({ label: 'paymentNextButton' }); pageManager.nextPage(); } function submitWelcome() { sendToGTM({ label: 'paymentNextButton' }); pageManager.nextPage(); } function submitNewsletters() { sendToGTM({ label: "newslettersNextButton" }); if ($onboardingScope.error) { if (pageManager.current === pageManager.pages.length - 1) { $onboardingScope.close(); } else { pageManager.nextPage(); } } else { var _$onboardingScope$new = $onboardingScope.newsletters, subscribedGroups = _$onboardingScope$new.subscribedGroups, subscribedNational = _$onboardingScope$new.subscribedNational; addNewsletters(subscribedGroups, subscribedNational); } } function submitApp() { sendToGTM({ label: "appNextButton" }); pageManager.nextPage(); } function submitDPE() { sendToGTM({ label: "dpeNextButton" }); if ($onboardingScope.error || !$onboardingScope.newsletters.dpe) { pageManager.nextPage(); } else { var selected = {}; var checkbox = $(".dpe__inputs #interest-dpe"); selected[$onboardingScope.newsletters.dpe] = checkbox.length > 0 && checkbox.prop("checked"); addNewsletters(selected); } } function submitPuzzles() { sendToGTM({ label: "puzzlesNextButton" }); if ($onboardingScope.error || !$onboardingScope.newsletters.puzzles) { pageManager.nextPage(); } else { var selected = {}; var checkbox = $(".puzzles__inputs #interest-puzzles"); selected[$onboardingScope.newsletters.puzzles] = checkbox.length > 0 && checkbox.prop("checked"); addNewsletters(selected); } } function onReady() { var $scope = angular.element(document.getElementById("onboarding")).scope(); if ($scope.registrationOnboarding) { setModalDetails('registrationOnboarding', { state: 'registered' }); } $scope.$watch("params", function () { try { var queryParams = function (pairs) { if (!pairs) return {}; var params = {}; for (var i = 0; i < pairs.length; ++i) { var pair = pairs[i].split("=", 2); if (pair.length == 1) { params[pair[0]] = ""; } else { params[pair[0]] = decodeURIComponent(pair[1].replace(/\+/g, " ")); } } return params; }($scope.params.url.split("?").slice(1).join("?").split("&")); sendToGTM({ label: queryParams["referrer"], trigger: "piano_last_touch" }); } catch (e) { console.log(e); } }); } if (document.readyState === "complete") { onReady(); } else { document.addEventListener("readystatechange", function () { if (document.readyState === "complete") { onReady(); } }); }
Payment
Show Offer Summary: ${{selectedTerm.price.startsWith("AUD") ? selectedTerm.price.slice(3) : selectedTerm.price.slice(1)}}
Show Offer Summary:
${{selectedTerm.price.startsWith("AUD") ? selectedTerm.price.slice(3) : selectedTerm.price.slice(1)}} {{selectedTerm.billingPeriodText}} for first {{selectedTerm.billingPlanTable[0].duration}}
Then, ${{selectedTerm.billingPlanTable[1].priceValue}} {{selectedTerm.billingPeriodTextAfterTrial}}
"use strict"; var offerSummary = document.getElementById("offer-summary"); var $scope = angular.element(offerSummary).scope(); var selectedTerm = $scope.selectedTerm; function trimBillingText(text) { return text.startsWith('every 1') ? 'per ' + text.split(' ')[2].replace(/[()s]/g, '') : text.replace(/[()]/g, ''); } $scope.selectedTerm.billingPeriodText = trimBillingText(selectedTerm.billingPlanTable[0].billingPeriod); $scope.selectedTerm.billingPeriodTextAfterTrial = trimBillingText(selectedTerm.billingPlanTable[1].billingPeriod); var termDuration = $scope.selectedTerm.billingPlanTable[0].duration; $scope.selectedTerm.billingPlanTable[0].duration = termDuration.split(' ')[0] === '1' ? termDuration.split(' ')[1].replace(/[()s]/g, '') : termDuration.replace(/[()]/g, '');

Create your account

Enter your details Login

Step 2 of 2 PAYMENT
Step 1 of 2 SIGNUP
3 MONTHS
${{terms[0].chargeAmount | number:2}}
BONUS OFFER
6 MONTHS
+ 6 Bonus Months
${{terms[1].chargeAmount | number:2}}
Dad gets 12 months
1 YEAR
${{terms[2].chargeAmount | number:2}}
Faster, easier access with our app
Unlimited articles on any device
Daily crosswords & Sudoku
Digital version of Today's Paper
Environmentally
friendly
*6-month Digital Subscription offer costs ${{terms[1].chargeAmount | number:2}} upfront (min. cost) for the first 6 months. 6-month Digital Subscription will receive 6 additional months on top of the standard 6 months for the first term only - Bonus weeks will not be applied to renewals. Not in conjunction with any other offer. New customers only. Offer ends Sep 3, 2023. See Terms & Conditions for full subscription terms.
"use strict"; function productImpressionsConfig($scope) { return { category: "Gift", products: [{ term: 0, variant: "3 Months" }, { term: 1, variant: "6 Months" }, { term: 2, variant: "Annual" }] }; }
"use strict"; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } if (!window.$scope) { var el = document.getElementById(typeof getScopeElementId === 'function' ? getScopeElementId() : 'sub-container'); if (el) { window.$scope = angular.element(el).scope(); } else { console.error('Product Impressions needs $scope defined.'); } } function getProductImpressionsConfig($scope) { var defaultConfig = { watch: [], // Needs to remain constant category: 'Subscription', selectItem: { trigger: 'productClick' }, viewItemList: { trigger: 'impressions' }, products: [] }; if (typeof productImpressionsConfig === 'function') { return _objectSpread(_objectSpread({}, defaultConfig), productImpressionsConfig($scope)); } return defaultConfig; } function getActiveProducts($scope) { return getProductImpressionsConfig($scope).products.filter(function (product) { return product.active ? product.active() : true; }); } function priceFromImpression(it, term) { var _it$divisor, _price; var priceDivisor = (_it$divisor = it.divisor) !== null && _it$divisor !== void 0 ? _it$divisor : 1; var price = it.price; if (typeof price === 'undefined') { price = term.chargeAmount; } else if (typeof price === 'function') { price = it.price(term); } return (((_price = price) !== null && _price !== void 0 ? _price : 0) / priceDivisor).toFixed(2); } function trialFromImpression(it, term) { if (term.billingPlanTable.length <= 1) { return undefined; } var plan = term.billingPlanTable[0]; var price = Number(plan.priceValue || 0).toFixed(2); return "".concat(plan.billingPeriod, " for $").concat(price); } function makeProductImpression($scope, it, idx) { var _it$name, _it$variant; // `it` object keys: // - name: Term name. Optional: Default is term.name // - term: Term index // - price: Numeric price or fn(term) returning numeric price. Optional: default is term.chargeAmount // - divisor: For dividing price matching. Optional: default is 1. // - variant: Differentiator for same names. Optional: default is '' var _getProductImpression = getProductImpressionsConfig($scope), category = _getProductImpression.category; var term = $scope.terms[it.term]; return { name: (_it$name = it.name) !== null && _it$name !== void 0 ? _it$name : term.name, id: term.termId, price: priceFromImpression(it, term), brand: $scope.app.name, category: category, variant: (_it$variant = it.variant) !== null && _it$variant !== void 0 ? _it$variant : '', list: $scope.params.offerId, position: idx + 1, trial: trialFromImpression(it, term) }; } function getImpressions($scope) { function _makeImpression(it, idx) { return makeProductImpression($scope, it, idx); } return getActiveProducts($scope).map(_makeImpression); } $scope.startCheckoutGtm = function (term) { sendBeginCheckout(term.termId); sendGtmSelectItem(term); var termId = term.termId; var offerId = $scope.params.offerId; var isGift = term.type === "gift"; var returnUrl = $scope.params.url ? getReturnUrl($scope.params.url) : ''; pipelineRequest('redirect_to_register', { offerId: offerId, termId: termId, isGift: isGift, returnUrl: returnUrl }); }; function sendGtmSelectItem(term) { var products = getImpressions($scope).filter(function (it) { return it.id === term.termId; }).map(function (it) { var clone = _objectSpread({}, it); delete clone.list; return clone; }); setDataLayerForGTM({ ecommerce: null }); setDataLayerForGTM({ ecommerce: { currencyCode: 'AUD', click: { actionField: { list: $scope.params.offerId }, products: products } } }); var _getProductImpression2 = getProductImpressionsConfig($scope), trigger = _getProductImpression2.selectItem.trigger; sendToGTM({ action: trigger, label: 'product_selected', trigger: trigger }); // send the commercial detail setDataLayerForGTM({ ecommerce: null }); setDataLayerForGTM({ ecommerce: { detail: { actionField: { list: term.name }, products: products } } }); sendToGTM({ action: 'detail', label: 'detail', trigger: 'detail' }); } function impressionsEqual(oldList, newList) { if (oldList.length !== newList.length) { return false; } return oldList.every(function (oldVal, idx) { var newVal = newList[idx]; return Object.keys(oldVal).every(function (key) { return oldVal[key] === newVal[key]; }); }); } var oldImpressions = []; function sendGtmViewItemList() { var impressions = getImpressions($scope); if (impressionsEqual(oldImpressions, impressions)) { return; } setDataLayerForGTM({ ecommerce: null }); setDataLayerForGTM({ ecommerce: { currencyCode: 'AUD', impressions: impressions } }); var _getProductImpression3 = getProductImpressionsConfig($scope), trigger = _getProductImpression3.viewItemList.trigger; sendToGTM({ action: trigger, label: 'product_impressions', trigger: trigger }); sendGtmImpressions(impressions); oldImpressions = impressions; } function watchForItemListUpdates() { sendGtmViewItemList(); var _getProductImpression4 = getProductImpressionsConfig($scope), watch = _getProductImpression4.watch; if ((watch === null || watch === void 0 ? void 0 : watch.length) > 0) { watch.forEach(function (v) { $scope.$watch(v, function (newVal, oldVal) { if (newVal !== undefined && oldVal !== newVal) { sendGtmViewItemList(); } }); }); } } ; setTimeout(function () { watchForItemListUpdates(); }, 300); function sendToRegister(termIndex, label) { var termId = $scope.terms[termIndex].termId; var offerId = $scope.params.offerId; sendToGTM({ label: label }); var returnUrl = $scope.params.url ? getReturnUrl($scope.params.url) : ''; pipelineRequest('redirect_to_register', { offerId: offerId, termId: termId, returnUrl: returnUrl }); } function getReturnUrl(urlString) { try { var url = new URL(urlString); var returnUrl = url.searchParams.get("referrer") || ''; return returnUrl; } catch (error) { return ''; } }
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } addStyle({ '#checkout-container': { 'background-color': 'transparent !important' } }); var showing = false; function showOffer() { if (!showing) { showing = true; document.querySelector(".container").style.opacity = 1; } } $scope.$watch("custom", function (_new, _old) { if (_typeof(_new) === "object") { showOffer(); } }); setTimeout(function () { showOffer(); }, 1000); sendToGTM({ label: "gift_page_impressions", action: "view" }); setTimeout(function () { document.querySelector(".container").style.opacity = 1; }, 100);