mirror of
https://github.com/fleetdm/fleet
synced 2026-05-24 09:28:54 +00:00
Website: Update quote links on landing pages and frontend redirects (#19095)
Closes: #18965 Changes: - Updated page scripts that used `window.locaiton` to use parasail's `goto` method. - Updated the quotes at the top of the landing pages to be wrapped in links to give them a proper hover state. - Updated the quote on the /vulnerability-management page to be a link to the author's LinkedIn page.
This commit is contained in:
parent
4d671e63d4
commit
038526a3e9
20 changed files with 62 additions and 27 deletions
|
|
@ -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');
|
||||
},
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
},
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
4
website/assets/js/pages/contact.page.js
vendored
4
website/assets/js/pages/contact.page.js
vendored
|
|
@ -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)}`);
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@ parasails.registerPage('basic-documentation', {
|
|||
methods: {
|
||||
|
||||
clickCTA: function (slug) {
|
||||
window.location = slug;
|
||||
this.goto(slug);
|
||||
},
|
||||
|
||||
isCurrentSection: function (section) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
},
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
},
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
2
website/assets/js/pages/query-detail.page.js
vendored
2
website/assets/js/pages/query-detail.page.js
vendored
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
6
website/assets/js/pages/start.page.js
vendored
6
website/assets/js/pages/start.page.js
vendored
|
|
@ -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]){
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -174,6 +174,13 @@
|
|||
}
|
||||
}
|
||||
[purpose='testimonial-quote'] {
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: unset;
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
max-width: 591px;
|
||||
[purpose='quote'] {
|
||||
p {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
4
website/views/pages/device-management.ejs
vendored
4
website/views/pages/device-management.ejs
vendored
|
|
@ -25,7 +25,8 @@
|
|||
</div>
|
||||
</div>
|
||||
<div purpose="testimonials" class="d-flex flex-md-row flex-column align-items-center justify-content-between">
|
||||
<div purpose="testimonial-quote" @click="goto('<%= ['eo-security','vm'].includes(primaryBuyingSituation) ? 'https://www.linkedin.com/posts/nwaisman_movingtofleet-activity-7156319785981509632-bk_W' : ['eo-it'].includes(primaryBuyingSituation) ? 'https://www.linkedin.com/in/mrerictan/' : 'https://www.linkedin.com/in/kennybotelho/'%>')">
|
||||
<div purpose="testimonial-quote">
|
||||
<a href="<%= ['eo-security','vm'].includes(primaryBuyingSituation) ? 'https://www.linkedin.com/posts/nwaisman_movingtofleet-activity-7156319785981509632-bk_W' : ['eo-it'].includes(primaryBuyingSituation) ? 'https://www.linkedin.com/in/mrerictan/' : 'https://www.linkedin.com/in/kennybotelho/'%>" target="_blank">
|
||||
<div purpose="quote">
|
||||
<img alt="an opening quotation mark" style="width:20px; margin-bottom: 16px;" src="/images/icon-quote-21x17@2x.png">
|
||||
<p>
|
||||
|
|
@ -42,6 +43,7 @@
|
|||
<p purpose="title"><%= ['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'%></p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<logo-carousel></logo-carousel>
|
||||
|
|
|
|||
12
website/views/pages/endpoint-ops.ejs
vendored
12
website/views/pages/endpoint-ops.ejs
vendored
|
|
@ -42,7 +42,8 @@
|
|||
</div>
|
||||
<div purpose="testimonials" class="d-flex flex-md-row flex-column align-items-center justify-content-between">
|
||||
<% if (['eo-security'].includes(primaryBuyingSituation)) { %>
|
||||
<div purpose="testimonial-quote" @click="goto('https://www.linkedin.com/in/charleszaffery/')">
|
||||
<div purpose="testimonial-quote">
|
||||
<a href="https://www.linkedin.com/in/charleszaffery/" target="_blank">
|
||||
<div purpose="quote">
|
||||
<img alt="an opening quotation mark" style="width:20px; margin-bottom: 16px;" src="/images/icon-quote-21x17@2x.png">
|
||||
<p>"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."</p>
|
||||
|
|
@ -54,9 +55,11 @@
|
|||
<p purpose="title">Principal computer janitor</p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<% } else if (['vm'].includes(primaryBuyingSituation)) { %>
|
||||
<div purpose="testimonial-quote" @click="goto('https://www.linkedin.com/in/austin-anderson-73172185/')">
|
||||
<div purpose="testimonial-quote">
|
||||
<a href="https://www.linkedin.com/in/austin-anderson-73172185/" target="_blank">
|
||||
<div purpose="quote">
|
||||
<img alt="an opening quotation mark" style="width:20px; margin-bottom: 16px;" src="/images/icon-quote-21x17@2x.png">
|
||||
<p>"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."</p>
|
||||
|
|
@ -68,9 +71,11 @@
|
|||
<p purpose="title">Cybersecurity team senior manager</p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<% } else { %>
|
||||
<div purpose="testimonial-quote" @click="goto('https://www.linkedin.com/in/nickfohs/')">
|
||||
<div purpose="testimonial-quote">
|
||||
<a target="_blank" href="https://www.linkedin.com/in/nickfohs/">
|
||||
<div purpose="quote">
|
||||
<img alt="an opening quotation mark" style="width:20px; margin-bottom: 16px;" src="/images/icon-quote-21x17@2x.png">
|
||||
<p>“Fleet provides a way to surface device data and telemetry to our other teams and partners.”</p>
|
||||
|
|
@ -82,6 +87,7 @@
|
|||
<p purpose="title">Systems and infrastructure manager</p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<% } %>
|
||||
<div purpose="testimonial-videos" class="d-flex">
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
</div>
|
||||
<div purpose="testimonials" class="d-flex flex-md-row flex-column align-items-center justify-content-between">
|
||||
<div purpose="testimonial-quote">
|
||||
<a href="https://www.linkedin.com/in/andre-shields/" target="_blank">
|
||||
<div purpose="quote">
|
||||
<img alt="an opening quotation mark" style="width:20px; margin-bottom: 16px;" src="/images/icon-quote-21x17@2x.png">
|
||||
<p>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.</p>
|
||||
|
|
@ -37,6 +38,7 @@
|
|||
<p purpose="title">Cybersecurity Security Engineer, Vulnerability Management</p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div purpose="testimonial-videos" class="d-flex">
|
||||
<div purpose="testimonial-video" @click="clickOpenVideoModal('austin-anderson')">
|
||||
|
|
|
|||
Loading…
Reference in a new issue