fleet/website/views/pages/articles/basic-whitepaper.ejs
Dan Gordon 33f0d8454a
Post whitepaper IT leader's guide to Linux device management AND fix whitepaper form hardcode. (#43780)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves
#https://github.com/fleetdm/confidential/issues/14837
**Related issue:** Resolves
#https://github.com/fleetdm/confidential/issues/14839


Commit 1 - fixes the basic-whitepaper.ejs page so that the LP form
headline is not hard coded to GitOps anymore.
Commit 2 - posts the whitepaper and sets up the LP page 


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Updates**
  * Form headline on whitepaper download page is now customizable.
  * Enhanced email submission feedback handling during download process.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-20 12:07:06 -05:00

88 lines
No EOL
6.6 KiB
Text
Vendored
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div id="basic-whitepaper" v-cloak>
<div purpose="page-container" class="container-fluid">
<div purpose="article-title-and-image">
<div purpose="article-title-and-introduction">
<div>
<h4>Whitepaper</h4>
<h1><%=thisPage.meta.articleTitle %></h1>
</div>
<div purpose="article-introduction">
<%if(thisPage.meta.introductionTextBlockOne){%><p><%- thisPage.meta.introductionTextBlockOne %></p><%}%>
<%if(thisPage.meta.introductionTextBlockOne){%><p><%- thisPage.meta.introductionTextBlockTwo %></p><%}%>
</div>
</div>
<%if(thisPage.meta.articleImageUrl){%>
<div purpose="article-image">
<img alt="A preview image of the whitepaper" src="<%= thisPage.meta.articleImageUrl %>">
</div>
<% } %>
</div>
<div purpose="article-and-sidebar" class="d-flex flex-lg-row-reverse flex-column justify-content-lg-between">
<div purpose="sidebar-container">
<div purpose="right-sidebar" class="d-flex flex-column">
<div purpose="form-container">
<div id="download-form" purpose="whitepaper-download-form">
<h4><%- thisPage.meta.formHeadline || 'Get the white paper to learn more' %></h4>
<ajax-form class="w-100" action="deliverWhitepaperDownloadRequest" :form-errors.sync="formErrors" :form-data="formData" :form-rules="formRules" :syncing.sync="syncing" :cloud-error.sync="cloudError" @submitted="submittedDownloadForm()" v-if="!cloudSuccess">
<div class="form-group">
<label for="first-name">First name *</label>
<input tabindex="1" class="form-control" id="first-name" type="text" :class="[formErrors.firstName ? 'is-invalid' : '']" v-model.trim="formData.firstName" autocomplete="first-name">
<div class="invalid-feedback" v-if="formErrors.firstName">Please enter your first name.</div>
</div>
<div class="form-group">
<label for="last-name">Last name *</label>
<input tabindex="2" class="form-control" id="last-name" type="text" :class="[formErrors.lastName ? 'is-invalid' : '']" v-model.trim="formData.lastName" autocomplete="last-name">
<div class="invalid-feedback" v-if="formErrors.lastName">Please enter your last name.</div>
</div>
<div class="form-group">
<label for="email-address">Work email *</label>
<input tabindex="3" class="form-control" id="email-address" :class="[formErrors.emailAddress ? 'is-invalid' : '']" v-model.trim="formData.emailAddress">
<div class="invalid-feedback" v-if="formErrors.emailAddress" focus-first>This doesnt appear to be a valid email address</div>
</div>
<ajax-button tabindex="4" purpose="download-button" spinner="true" type="submit" :syncing="syncing" class="btn btn-primary">Download whitepaper</ajax-button>
<cloud-error v-if="cloudError === 'invalidEmailDomain'">
<p>
Please enter your work or school email address.
</p>
</cloud-error>
<cloud-error v-else-if="cloudError">
</cloud-error>
</ajax-form>
<div v-else>
<p>Your download should start automatically. If not, you can click <a href="/pdfs/<%- thisPage.meta.whitepaperFilename%>" download="<%- thisPage.meta.whitepaperFilename %>">this link</a> to download this whitepaper</p>
</div>
</div>
</div>
</div>
</div>
<div purpose="article-container">
<div purpose="article-content" parasails-has-no-page-script>
<%- partial(path.relative(path.dirname(__filename), path.resolve( sails.config.appPath, path.join(sails.config.builtStaticContent.compiledPagePartialsAppPath, thisPage.htmlId)))) %>
<div purpose="download-cta" class="d-lg-none d-flex">
<a purpose="download-button" class="btn btn-primary" href="#download-form">Download whitepaper</a>
</div>
<div purpose="about-fleet-section">
<h3>About Fleet</h3>
<p>Fleet is the single endpoint management platform for macOS, iOS, Android, Windows, Linux, ChromeOS, and cloud infrastructure. Trusted by over 1,300 organizations, Fleet empowers IT and security teams to accelerate productivity, build verifiable trust, and optimize costs.</p>
<p>By bringing infrastructure-as-code (IaC) practices to device management, Fleet ensures endpoints remain secure and operational, freeing engineering teams to focus on strategic initiatives.</p>
<p>Fleet offers total deployment flexibility: on-premises, air-gapped, container-native (Docker and Kubernetes), or cloud-agnostic (AWS, Azure, GCP, DigitalOcean). Organizations can also choose fully managed SaaS via Fleet Cloud, ensuring complete control over data residency and legal jurisdiction.</p>
</div>
<div purpose="social-share-and-edit-buttons" class="d-flex flex-row justify-content-between align-items-center">
<div purpose="social-share-buttons" class="d-flex flex-row">
<a :href="`https://news.ycombinator.com/submitlink?u=https://fleetdm.com${encodeURIComponent(thisPage.url)}&t=${encodeURIComponent(thisPage.meta.articleTitle)}`"><img src="/images/social-share-icon-hacker-news-20x20@2x.png" alt="Share this article on Hacker News"></a>
<a :href="`https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent('https://fleetdm.com'+thisPage.url)}`"><img src="/images/social-share-icon-linkedin-20x20@2x.png" alt="Share this article on LinkedIn"></a>
<a :href="`https://twitter.com/intent/tweet?url=${encodeURIComponent('https://fleetdm.com'+thisPage.url)}`"><img src="/images/social-share-icon-twitter-20x20@2x.png" alt="Share this article on Twitter"></a>
</div>
<div purpose="edit-link">
<a :href="'https://github.com/fleetdm/fleet/edit/main/articles/'+thisPage.sectionRelativeRepoPath"> <img src="/images/icon-edit-16x16@2x.png" alt="Suggest an edit">Suggest an edit</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<%- /* Expose server-rendered data as window.SAILS_LOCALS :: */ exposeLocalsToBrowser() %>