diff --git a/website/assets/js/pages/account/edit-password.page.js b/website/assets/js/pages/account/edit-password.page.js index c6a614e058..b745d92a13 100644 --- a/website/assets/js/pages/account/edit-password.page.js +++ b/website/assets/js/pages/account/edit-password.page.js @@ -43,7 +43,7 @@ parasails.registerPage('edit-password', { // > (Note that we re-enable the syncing state here. This is on purpose-- // > to make sure the spinner stays there until the page navigation finishes.) this.syncing = true; - window.location = '/account'; + this.goto('/account'); }, } diff --git a/website/assets/js/pages/account/edit-profile.page.js b/website/assets/js/pages/account/edit-profile.page.js index 4a9ce71221..6a13dc6a4b 100644 --- a/website/assets/js/pages/account/edit-profile.page.js +++ b/website/assets/js/pages/account/edit-profile.page.js @@ -45,7 +45,7 @@ parasails.registerPage('edit-profile', { // > (Note that we re-enable the syncing state here. This is on purpose-- // > to make sure the spinner stays there until the page navigation finishes.) this.syncing = true; - window.location = '/account'; + this.goto('/account'); }, } diff --git a/website/assets/js/pages/connect-vanta.page.js b/website/assets/js/pages/connect-vanta.page.js index 2733f5f687..be024d0125 100644 --- a/website/assets/js/pages/connect-vanta.page.js +++ b/website/assets/js/pages/connect-vanta.page.js @@ -39,7 +39,7 @@ parasails.registerPage('connect-vanta', { submittedAuthorizationForm: async function() { this.syncing = true; - window.location = this.vantaAuthorizationRequestURL; + this.goto(this.vantaAuthorizationRequestURL); }, clickClearErrors: async function() { diff --git a/website/assets/js/pages/contact.page.js b/website/assets/js/pages/contact.page.js index d5f36f1d0c..3a4314bf01 100644 --- a/website/assets/js/pages/contact.page.js +++ b/website/assets/js/pages/contact.page.js @@ -88,9 +88,9 @@ parasails.registerPage('contact', { submittedTalkToUsForm: async function() { this.syncing = true; if(this.formData.numberOfHosts > 700){ - window.location = `https://calendly.com/fleetdm/talk-to-us?email=${encodeURIComponent(this.formData.emailAddress)}&name=${encodeURIComponent(this.formData.firstName+' '+this.formData.lastName)}`; + this.goto(`https://calendly.com/fleetdm/talk-to-us?email=${encodeURIComponent(this.formData.emailAddress)}&name=${encodeURIComponent(this.formData.firstName+' '+this.formData.lastName)}`); } else { - window.location = `https://calendly.com/fleetdm/chat?email=${encodeURIComponent(this.formData.emailAddress)}&name=${encodeURIComponent(this.formData.firstName+' '+this.formData.lastName)}`; + this.goto(`https://calendly.com/fleetdm/chat?email=${encodeURIComponent(this.formData.emailAddress)}&name=${encodeURIComponent(this.formData.firstName+' '+this.formData.lastName)}`); } }, diff --git a/website/assets/js/pages/customers/new-license.page.js b/website/assets/js/pages/customers/new-license.page.js index f49312ffff..6917592f51 100644 --- a/website/assets/js/pages/customers/new-license.page.js +++ b/website/assets/js/pages/customers/new-license.page.js @@ -67,7 +67,7 @@ parasails.registerPage('new-license', { clickGoToDashboard: async function() { this.syncing = true; - window.location = '/customers/dashboard?order-complete'; + this.goto('/customers/dashboard?order-complete'); }, submittedQuoteForm: async function(quote) { @@ -90,7 +90,7 @@ parasails.registerPage('new-license', { clickScheduleDemo: async function() { this.syncing = true; // Note: we keep loading spinner present indefinitely so that it is apparent that a new page is loading - window.location = `https://calendly.com/fleetdm/talk-to-us?email=${encodeURIComponent(this.me.emailAddress)}&name=${encodeURIComponent(this.me.firstName+' '+this.me.lastName)}`; + this.goto(`https://calendly.com/fleetdm/talk-to-us?email=${encodeURIComponent(this.me.emailAddress)}&name=${encodeURIComponent(this.me.firstName+' '+this.me.lastName)}`); }, clickResetForm: async function() { diff --git a/website/assets/js/pages/docs/basic-documentation.page.js b/website/assets/js/pages/docs/basic-documentation.page.js index 978277a36a..5b7262b8f2 100644 --- a/website/assets/js/pages/docs/basic-documentation.page.js +++ b/website/assets/js/pages/docs/basic-documentation.page.js @@ -223,7 +223,7 @@ parasails.registerPage('basic-documentation', { methods: { clickCTA: function (slug) { - window.location = slug; + this.goto(slug); }, isCurrentSection: function (section) { diff --git a/website/assets/js/pages/entrance/login.page.js b/website/assets/js/pages/entrance/login.page.js index a73ca3fc79..a506effa58 100644 --- a/website/assets/js/pages/entrance/login.page.js +++ b/website/assets/js/pages/entrance/login.page.js @@ -59,7 +59,7 @@ parasails.registerPage('login', { // > (Note that we re-enable the syncing state here. This is on purpose-- // > to make sure the spinner stays there until the page navigation finishes.) this.syncing = true; - window.location = this.pageToRedirectToAfterLogin; + this.goto(this.pageToRedirectToAfterLogin); }, } diff --git a/website/assets/js/pages/entrance/new-password.page.js b/website/assets/js/pages/entrance/new-password.page.js index 74a032f5ab..0b934c8326 100644 --- a/website/assets/js/pages/entrance/new-password.page.js +++ b/website/assets/js/pages/entrance/new-password.page.js @@ -45,7 +45,7 @@ parasails.registerPage('new-password', { // > (Note that we re-enable the syncing state here. This is on purpose-- // > to make sure the spinner stays there until the page navigation finishes.) this.syncing = true; - window.location = '/customers/login'; + this.goto('/customers/login'); }, } diff --git a/website/assets/js/pages/entrance/signup.page.js b/website/assets/js/pages/entrance/signup.page.js index 0680b39b98..598e3b073e 100644 --- a/website/assets/js/pages/entrance/signup.page.js +++ b/website/assets/js/pages/entrance/signup.page.js @@ -68,7 +68,7 @@ parasails.registerPage('signup', { // > (Note that we re-enable the syncing state here. This is on purpose-- // > to make sure the spinner stays there until the page navigation finishes.) this.syncing = true; - window.location = this.pageToRedirectToAfterRegistration;// « / start if the user came here from the start now button, or customers/new-license if the user came here from the "Get your license" link. + this.goto(this.pageToRedirectToAfterRegistration);// « / start if the user came here from the start now button, or customers/new-license if the user came here from the "Get your license" link. } diff --git a/website/assets/js/pages/query-detail.page.js b/website/assets/js/pages/query-detail.page.js index f05e8e97eb..e273a48243 100644 --- a/website/assets/js/pages/query-detail.page.js +++ b/website/assets/js/pages/query-detail.page.js @@ -23,7 +23,7 @@ parasails.registerPage('query-detail', { // ╩╝╚╝ ╩ ╚═╝╩╚═╩ ╩╚═╝ ╩ ╩╚═╝╝╚╝╚═╝ methods: { clickAvatar: function (contributor) { - window.location = contributor.htmlUrl; + this.goto(contributor.htmlUrl); }, getDisplayName: function (contributor) { return !contributor.name ? contributor.handle : contributor.name; diff --git a/website/assets/js/pages/query-library.page.js b/website/assets/js/pages/query-library.page.js index 053682d737..7da650d012 100644 --- a/website/assets/js/pages/query-library.page.js +++ b/website/assets/js/pages/query-library.page.js @@ -57,11 +57,11 @@ parasails.registerPage('query-library', { }, clickCard: function (querySlug) { - window.location = '/queries/' + querySlug; // we can trust the query slug is url-safe + this.goto('/queries/' + querySlug); // we can trust the query slug is url-safe }, clickAvatar: function (contributor) { - window.location = contributor.htmlUrl; + this.goto(contributor.htmlUrl); }, getAvatarUrl: function (contributorData) { diff --git a/website/assets/js/pages/start.page.js b/website/assets/js/pages/start.page.js index 7be20fa6ba..846c700647 100644 --- a/website/assets/js/pages/start.page.js +++ b/website/assets/js/pages/start.page.js @@ -104,7 +104,7 @@ parasails.registerPage('start', { }); this.previouslyAnsweredQuestions[this.currentStep] = getStartedProgress[this.currentStep]; if(_.startsWith(nextStep, '/')){ - window.location = nextStep; + this.goto(nextStep); } else { this.syncing = false; this.currentStep = nextStep; @@ -282,10 +282,10 @@ parasails.registerPage('start', { return nextStepInForm; }, clickGoToCalendly: function() { - window.location = `https://calendly.com/fleetdm/talk-to-us?email=${encodeURIComponent(this.me.emailAddress)}&name=${encodeURIComponent(this.me.firstName+' '+this.me.lastName)}`; + this.goto(`https://calendly.com/fleetdm/talk-to-us?email=${encodeURIComponent(this.me.emailAddress)}&name=${encodeURIComponent(this.me.firstName+' '+this.me.lastName)}`); }, clickGoToContactPage: function() { - window.location = `/contact?prefillFormDataFromUserRecord`; + this.goto(`/contact`); }, clickClearOneFormError: function(field) { if(this.formErrors[field]){ diff --git a/website/assets/js/pages/try-fleet/query-report.page.js b/website/assets/js/pages/try-fleet/query-report.page.js index 2d453c0bff..f3d76c9494 100644 --- a/website/assets/js/pages/try-fleet/query-report.page.js +++ b/website/assets/js/pages/try-fleet/query-report.page.js @@ -55,17 +55,17 @@ parasails.registerPage('query-report', { watch: { selectedTable: function(val){ if(val !== this.tableToDisplay){ - window.location = `/try-fleet/explore-data/${this.selectedHost}/${this.selectedTable}`; + this.goto(`/try-fleet/explore-data/${this.selectedHost}/${this.selectedTable}`); } }, hostToDisplayResultsFor: function(val){ if(val !== this.selectedHost){ if(val === 'Linux'){ - window.location = `/try-fleet/explore-data/linux/apparmor_events`; + this.goto(`/try-fleet/explore-data/linux/apparmor_events`); } else if(val === 'Windows'){ - window.location = `/try-fleet/explore-data/windows/appcompat_shims`; + this.goto(`/try-fleet/explore-data/windows/appcompat_shims`); } else { - window.location = `/try-fleet/explore-data/macos/account_policy_data`; + this.goto(`/try-fleet/explore-data/macos/account_policy_data`); } } } @@ -85,7 +85,6 @@ parasails.registerPage('query-report', { tableContainer.addEventListener('scroll', (event)=>{ let container = event.target; - console.log(container); let isScrolledFullyToLeft = container.scrollLeft === 0; let isScrolledFullyToRight = (container.scrollWidth - container.scrollLeft <= container.clientWidth + 1); // Update the class on the table container based on how much the table is scrolled. diff --git a/website/assets/js/pages/try-fleet/sandbox-teleporter.page.js b/website/assets/js/pages/try-fleet/sandbox-teleporter.page.js index 730a9b3869..964af18ca6 100644 --- a/website/assets/js/pages/try-fleet/sandbox-teleporter.page.js +++ b/website/assets/js/pages/try-fleet/sandbox-teleporter.page.js @@ -22,7 +22,7 @@ parasails.registerPage('sandbox-teleporter', { // Binding an event handler to 'onpageshow', if a user navigates to a locally cached version of this page (e.g., A Safari user clicking the back button from their Fleet Sandbox), they will be taken to the fleetdm.com homepage. window.onpageshow = function(event) { if(event.persisted) { - window.location = '/'; + this.goto('/'); } }; // Confused? Understandable, this approach is a bit unusual. See this page's view action for more info on what this code is doing and why, as well as a link where you can read more information. diff --git a/website/assets/styles/pages/device-management.less b/website/assets/styles/pages/device-management.less index 21d927f058..70df383852 100644 --- a/website/assets/styles/pages/device-management.less +++ b/website/assets/styles/pages/device-management.less @@ -38,6 +38,11 @@ font-size: 16px; line-height: @text-lineheight; color: @core-fleet-black-75; + a[href] { + text-decoration: underline; + color: @core-fleet-black-75; + text-underline-offset: 3px; + } } strong { color: @core-fleet-black; @@ -185,6 +190,13 @@ } [purpose='testimonial-quote'] { width: 640px; + a { + text-decoration: none; + color: unset; + &:hover { + text-decoration: none; + } + } [purpose='quote'] { p { color: @core-fleet-black-75; diff --git a/website/assets/styles/pages/endpoint-ops.less b/website/assets/styles/pages/endpoint-ops.less index 7f69ef95e6..10ea15b5c9 100644 --- a/website/assets/styles/pages/endpoint-ops.less +++ b/website/assets/styles/pages/endpoint-ops.less @@ -174,6 +174,13 @@ } } [purpose='testimonial-quote'] { + a { + text-decoration: none; + color: unset; + &:hover { + text-decoration: none; + } + } max-width: 591px; [purpose='quote'] { p { diff --git a/website/assets/styles/pages/vulnerability-management.less b/website/assets/styles/pages/vulnerability-management.less index 93bdc23532..db96337311 100644 --- a/website/assets/styles/pages/vulnerability-management.less +++ b/website/assets/styles/pages/vulnerability-management.less @@ -172,6 +172,13 @@ } [purpose='testimonial-quote'] { width: 380px; + a { + text-decoration: none; + color: unset; + &:hover { + text-decoration: none; + } + } [purpose='quote'] { p { color: @core-fleet-black-75; diff --git a/website/views/pages/device-management.ejs b/website/views/pages/device-management.ejs index 8486a80a11..08fc39c3ac 100644 --- a/website/views/pages/device-management.ejs +++ b/website/views/pages/device-management.ejs @@ -25,7 +25,8 @@
-
+
+
an opening quotation mark

@@ -42,6 +43,7 @@

<%= ['eo-security','vm'].includes(primaryBuyingSituation) ? 'CISO of Lyft' : ['eo-it'].includes(primaryBuyingSituation) ? 'CIO & Chief Security Officer at Flock Safety' : 'Client Platform Engineer at gaming company'%>

+
diff --git a/website/views/pages/endpoint-ops.ejs b/website/views/pages/endpoint-ops.ejs index af014a96aa..8438268c60 100644 --- a/website/views/pages/endpoint-ops.ejs +++ b/website/views/pages/endpoint-ops.ejs @@ -42,7 +42,8 @@
<% if (['eo-security'].includes(primaryBuyingSituation)) { %> -
+
+
an opening quotation mark

"Fleet has such a huge amount of use cases. My goal was to get telemetry on endpoints, but then our IR team, our TBM team, and multiple other folks in security started heavily utilizing the system in ways I didn’t expect. It spread so naturally, even our corporate and infrastructure teams want to run it."

@@ -54,9 +55,11 @@

Principal computer janitor

+
<% } else if (['vm'].includes(primaryBuyingSituation)) { %> -
+
+
an opening quotation mark

"Fleet lets us be more actionable with fewer people. It helps us to filter out the noise better than we could with the other big name products we replaced."

@@ -68,9 +71,11 @@

Cybersecurity team senior manager

+
<% } else { %> -
+
+
an opening quotation mark

“Fleet provides a way to surface device data and telemetry to our other teams and partners.”

@@ -82,6 +87,7 @@

Systems and infrastructure manager

+
<% } %>
diff --git a/website/views/pages/vulnerability-management.ejs b/website/views/pages/vulnerability-management.ejs index 4a4c145dd4..3a831de0e7 100644 --- a/website/views/pages/vulnerability-management.ejs +++ b/website/views/pages/vulnerability-management.ejs @@ -26,6 +26,7 @@
+
an opening quotation mark

Fleet lets us be more actionable with fewer people. It helps us to filter out the noise better than we could with the other big name products we replaced.

@@ -37,6 +38,7 @@

Cybersecurity Security Engineer, Vulnerability Management

+