mirror of
https://github.com/fleetdm/fleet
synced 2026-05-24 09:28:54 +00:00
## Summary - Adds a new testimonial from Adam Anklewicz (Manager of IT Endpoint Engineering, Thumbtack) to the Fleet customers page - Quote highlights Fleet's responsive Slack-based support as a key selling point - Testimonial is positioned prominently (2nd in sort order) on the customers page - Uses existing Thumbtack logo image (`[email protected]`) for the testimonial card ### Changes - `handbook/company/testimonials.yml` — Added new testimonial entry with all required fields - `website/api/controllers/view-testimonials.js` — Added Adam Anklewicz to the sort order (2nd position) - `website/assets/images/[email protected]` — Placeholder profile image (to be replaced with actual LinkedIn photo) > **Note:** The profile image (`[email protected]`) is currently a placeholder. It should be replaced with Adam's actual profile photo from LinkedIn before merging. Built for [Michael Thomas](https://fleetdm.slack.com/archives/D0AL6RD36GL/p1774252288344369) by [Kilo for Slack](https://kilo.ai/features/slack-integration) --------- Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com> Co-authored-by: Eric <[email protected]>
101 lines
3.2 KiB
JavaScript
Vendored
101 lines
3.2 KiB
JavaScript
Vendored
module.exports = {
|
|
|
|
|
|
friendlyName: 'View testimonials',
|
|
|
|
|
|
description: 'Display "Testimonials" page.',
|
|
|
|
|
|
exits: {
|
|
|
|
success: {
|
|
viewTemplatePath: 'pages/testimonials'
|
|
}
|
|
|
|
},
|
|
|
|
|
|
fn: async function () {
|
|
|
|
if (!_.isObject(sails.config.builtStaticContent) || !_.isArray(sails.config.builtStaticContent.testimonials) || !sails.config.builtStaticContent.compiledPagePartialsAppPath) {
|
|
throw {badConfig: 'builtStaticContent.testimonials'};
|
|
}
|
|
if (!_.isObject(sails.config.builtStaticContent) || !_.isArray(sails.config.builtStaticContent.markdownPages) || !sails.config.builtStaticContent.compiledPagePartialsAppPath) {
|
|
throw {badConfig: 'builtStaticContent.markdownPages'};
|
|
}
|
|
// Get testimonials for the page contents
|
|
let testimonials = _.clone(sails.config.builtStaticContent.testimonials);
|
|
|
|
|
|
let sortOrderOfTestimonialAuthorsShownOnThisPage = [
|
|
'Scott MacVicar',
|
|
'Adam Anklewicz',
|
|
'Nick Fohs',
|
|
'Wes Whetstone',
|
|
'Erik Gomez',
|
|
'Matt Carr',
|
|
'nico waisman',
|
|
'Kenny Botelho',
|
|
'Dan Grzelak',
|
|
'Eric Tan',
|
|
];
|
|
|
|
let testimonialAuthorsToExcludeOnThisPage = [
|
|
'Alvaro Gutierrez',
|
|
'Joe Pistone',
|
|
'Brendan Shaklovitz',
|
|
'Abubakar Yousafzai',
|
|
'Dhruv Majumdar',
|
|
'matt carr',
|
|
'Charles Zaffery',
|
|
'Tom Larkin',// Note: excluded becasue we already show a quote from this person
|
|
'Nico Waisman',// Note: excluded becasue we already show a quote from this person
|
|
];
|
|
|
|
let filteredTestimonialsForThisPage = _.filter(testimonials, (testimonial)=>{
|
|
return !testimonialAuthorsToExcludeOnThisPage.includes(testimonial.quoteAuthorName);
|
|
});
|
|
|
|
filteredTestimonialsForThisPage.sort((a, b)=>{
|
|
if(sortOrderOfTestimonialAuthorsShownOnThisPage.indexOf(a.quoteAuthorName) === -1){
|
|
return 1;
|
|
} else if(sortOrderOfTestimonialAuthorsShownOnThisPage.indexOf(b.quoteAuthorName) === -1) {
|
|
return -1;
|
|
}
|
|
return sortOrderOfTestimonialAuthorsShownOnThisPage.indexOf(a.quoteAuthorName) - sortOrderOfTestimonialAuthorsShownOnThisPage.indexOf(b.quoteAuthorName);
|
|
});
|
|
|
|
let testimonialsWithVideoLinks = _.filter(filteredTestimonialsForThisPage, (testimonial)=>{
|
|
return testimonial.youtubeVideoUrl;
|
|
});
|
|
|
|
// Get all of the case study articles.
|
|
let caseStudies = sails.config.builtStaticContent.markdownPages.filter((page)=>{
|
|
if(_.startsWith(page.url, '/case-study/')) {
|
|
return page;
|
|
}
|
|
});
|
|
|
|
// Only show case studies that have `useBasicArticleTemplate` and cardTitleForCustomersPage` meta tags
|
|
let caseStudiesToCreateLinksFor = caseStudies.filter((article)=>{
|
|
if(article.meta.useBasicArticleTemplate && article.meta.cardTitleForCustomersPage){
|
|
return article;
|
|
}
|
|
});
|
|
|
|
// Sort the case study articles by the lowercase cardTitleForCustomersPage meta tag value.
|
|
caseStudiesToCreateLinksFor = _.sortBy(caseStudiesToCreateLinksFor, (article)=>{
|
|
return article.meta.cardTitleForCustomersPage.toLowerCase();
|
|
});
|
|
|
|
return {
|
|
testimonials: filteredTestimonialsForThisPage,
|
|
testimonialsWithVideoLinks,
|
|
caseStudiesToCreateLinksFor,
|
|
};
|
|
|
|
}
|
|
|
|
|
|
};
|