diff --git a/source/content/debug-slow-performance.md b/source/content/debug-slow-performance.md index 457bbfca1f..da2c102a20 100644 --- a/source/content/debug-slow-performance.md +++ b/source/content/debug-slow-performance.md @@ -13,6 +13,7 @@ integration: [--] reviewed: "2024-06-12" showtoc: true contributors: [jms-pantheon] +image: CDN-speedTest-docs-guide.png --- This article covers the most common causes for performance problems, demonstrates how to diagnose bottlenecks, and provides actionable solutions for developers. diff --git a/source/content/guides/build-tools/01-introduction.md b/source/content/guides/build-tools/01-introduction.md index 62bfceef4e..a0b0a437d9 100644 --- a/source/content/guides/build-tools/01-introduction.md +++ b/source/content/guides/build-tools/01-introduction.md @@ -16,6 +16,7 @@ cms: [--] audience: [development] product: [--] integration: [--] +image: buildToolsGuide-thumb.png --- ## What Is Build Tools? diff --git a/source/content/guides/build-tools/02-create-project.md b/source/content/guides/build-tools/02-create-project.md index f067f9a007..a2df3b65e4 100644 --- a/source/content/guides/build-tools/02-create-project.md +++ b/source/content/guides/build-tools/02-create-project.md @@ -14,6 +14,7 @@ cms: [--] audience: [development] product: [--] integration: [--] +image: buildToolsGuide-thumb.png --- In this section, we will use the Terminus Build Tools Plugin to create a new project consisting of a Git repository, [Composer](https://getcomposer.org), a Continuous Integration (CI) service, and a Pantheon site with Automated Testing. This guide will get you started, but you will need to customize and maintain the CI/testing set up for your projects. diff --git a/source/content/guides/build-tools/03-pr-workflow.md b/source/content/guides/build-tools/03-pr-workflow.md index 709c83786e..f9e98f847a 100644 --- a/source/content/guides/build-tools/03-pr-workflow.md +++ b/source/content/guides/build-tools/03-pr-workflow.md @@ -14,6 +14,7 @@ cms: [--] audience: [development] product: [--] integration: [--] +image: buildToolsGuide-thumb.png --- ## Pull Request/Merge Request Introduction diff --git a/source/content/guides/build-tools/04-configure.md b/source/content/guides/build-tools/04-configure.md index e26dc6f497..1c61f3a342 100644 --- a/source/content/guides/build-tools/04-configure.md +++ b/source/content/guides/build-tools/04-configure.md @@ -15,6 +15,7 @@ cms: [--] audience: [development] product: [--] integration: [--] +image: buildToolsGuide-thumb.png --- In this lesson, we'll use the Configuration Management system within the Drupal Admin interface to set block placements for our example site. Continuing from the previous step, we'll be working in the feature branch environment, not Dev. diff --git a/source/content/guides/build-tools/05-extend.md b/source/content/guides/build-tools/05-extend.md index 4b00adfcee..a7aa923542 100644 --- a/source/content/guides/build-tools/05-extend.md +++ b/source/content/guides/build-tools/05-extend.md @@ -13,6 +13,7 @@ cms: [--] audience: [development] product: [--] integration: [--] +image: buildToolsGuide-thumb.png --- Next, we'll add a module to our existing `slogan` branch using Composer. You should already have a Pull Request open for this branch in GitHub, [created in a previous lesson](/guides/build-tools/pr-workflow#create-a-pull-request). diff --git a/source/content/guides/build-tools/06-tests.md b/source/content/guides/build-tools/06-tests.md index fcb13671ce..0b79852d18 100644 --- a/source/content/guides/build-tools/06-tests.md +++ b/source/content/guides/build-tools/06-tests.md @@ -14,6 +14,7 @@ audience: [development] product: [--] integration: [--] reviewed: "2022-12-13" +image: buildToolsGuide-thumb.png --- The Pantheon example projects include some basic tests to validate basic capabilities of the given framework. You can customize these tests and add more to fit your project needs. Drupal uses [Behat](http://behat.org/en/latest/) and the WordPress example uses [WordHat](https://github.com/paulgibbs/behat-wordpress-extension). diff --git a/source/content/guides/build-tools/07-merge.md b/source/content/guides/build-tools/07-merge.md index 6ed786d7ae..952d33d5df 100644 --- a/source/content/guides/build-tools/07-merge.md +++ b/source/content/guides/build-tools/07-merge.md @@ -13,6 +13,7 @@ cms: [--] audience: [development] product: [--] integration: [--] +image: buildToolsGuide-thumb.png --- This lesson demonstrates the final process of the Pull Request workflow, merging. After completing an internal peer review process for a given Pull Request, work is considered ready for production and accepted into the master branch. diff --git a/source/content/guides/build-tools/08-custom-theme.md b/source/content/guides/build-tools/08-custom-theme.md index 4fc5a07c8f..c3a4e1a016 100644 --- a/source/content/guides/build-tools/08-custom-theme.md +++ b/source/content/guides/build-tools/08-custom-theme.md @@ -13,6 +13,7 @@ cms: [--] audience: [development] product: [--] integration: [--] +image: buildToolsGuide-thumb.png --- This lesson demonstrates how to create a custom theme from the default [Bartik](https://www.drupal.org/project/bartik) theme using the [Terminus Drupal Console plugin](https://github.com/pantheon-systems/terminus-drupal-console-plugin). diff --git a/source/content/guides/build-tools/09-update.md b/source/content/guides/build-tools/09-update.md index 97cc363400..611d06ad64 100644 --- a/source/content/guides/build-tools/09-update.md +++ b/source/content/guides/build-tools/09-update.md @@ -12,6 +12,7 @@ cms: [--] audience: [development] product: [--] integration: [--] +image: buildToolsGuide-thumb.png --- In this lesson, we'll take a closer look at how to update dependencies in a Composer workflow. diff --git a/source/content/guides/frontend-performance/01-introduction.md b/source/content/guides/frontend-performance/01-introduction.md index 511d16fcb3..2d779f4aa8 100644 --- a/source/content/guides/frontend-performance/01-introduction.md +++ b/source/content/guides/frontend-performance/01-introduction.md @@ -14,6 +14,7 @@ cms: [drupal, wordpress] audience: [development] product: [--] integration: [--] +image: CDN-speedTest-docs-guide.png --- In this guide we’ll show you how to speed up frontend performance to ensure that visitors to your site stay engaged and have the best experience. diff --git a/source/content/guides/frontend-performance/02-metrics.md b/source/content/guides/frontend-performance/02-metrics.md index 533be3e38f..ff081a3c9b 100644 --- a/source/content/guides/frontend-performance/02-metrics.md +++ b/source/content/guides/frontend-performance/02-metrics.md @@ -15,6 +15,7 @@ cms: [drupal, wordpress] audience: [development] product: [--] integration: [--] +image: CDN-speedTest-docs-guide.png --- There are many different ways to measure page speed and performance. This guide will help you tune your site for the metrics in Google's [Core Web Vitals](https://web.dev/vitals/#core-web-vitals), which focus on three aspects of the user experience—loading, interactivity, and visual stability. diff --git a/source/content/guides/frontend-performance/03-diagnostics.md b/source/content/guides/frontend-performance/03-diagnostics.md index eb940c2356..5e75720c4d 100644 --- a/source/content/guides/frontend-performance/03-diagnostics.md +++ b/source/content/guides/frontend-performance/03-diagnostics.md @@ -15,6 +15,7 @@ cms: [drupal, wordpress] audience: [development] product: [--] integration: [--] +image: CDN-speedTest-docs-guide.png --- This page includes information on diagnostics and tools for evaluating performance issues. diff --git a/source/content/guides/frontend-performance/04-caching.md b/source/content/guides/frontend-performance/04-caching.md index 96b9fb00c5..132a08f5aa 100644 --- a/source/content/guides/frontend-performance/04-caching.md +++ b/source/content/guides/frontend-performance/04-caching.md @@ -15,6 +15,7 @@ cms: [drupal, wordpress] audience: [development] product: [--] integration: [--] +image: CDN-speedTest-docs-guide.png --- This page includes information on how to improve optimization with caching. diff --git a/source/content/guides/frontend-performance/05-media.md b/source/content/guides/frontend-performance/05-media.md index 3200666973..7e4c2962cd 100644 --- a/source/content/guides/frontend-performance/05-media.md +++ b/source/content/guides/frontend-performance/05-media.md @@ -15,6 +15,7 @@ cms: [drupal, wordpress] audience: [development] product: [--] integration: [--] +image: CDN-speedTest-docs-guide.png --- This pages includes information on optimizing media, such as images and iframes. diff --git a/source/content/guides/frontend-performance/06-code-css.md b/source/content/guides/frontend-performance/06-code-css.md index da8c495062..3b0e75311e 100644 --- a/source/content/guides/frontend-performance/06-code-css.md +++ b/source/content/guides/frontend-performance/06-code-css.md @@ -15,6 +15,7 @@ cms: [drupal, wordpress] audience: [development] product: [--] integration: [--] +image: CDN-speedTest-docs-guide.png --- This page provides information on optimizing code and CSS. diff --git a/source/content/guides/frontend-performance/07-queries.md b/source/content/guides/frontend-performance/07-queries.md index 969073106f..7aae4ca44c 100644 --- a/source/content/guides/frontend-performance/07-queries.md +++ b/source/content/guides/frontend-performance/07-queries.md @@ -15,6 +15,7 @@ cms: [drupal, wordpress] audience: [development] product: [--] integration: [--] +image: CDN-speedTest-docs-guide.png --- This page provides information on optimizing queries, query caching (when you should, and shouldn't use it), and database optimization techniques. diff --git a/source/content/guides/frontend-performance/08-static.md b/source/content/guides/frontend-performance/08-static.md index bf4e36a896..2a8f2cf8a3 100644 --- a/source/content/guides/frontend-performance/08-static.md +++ b/source/content/guides/frontend-performance/08-static.md @@ -15,6 +15,7 @@ cms: [drupal, wordpress] audience: [development] product: [--] integration: [--] +image: CDN-speedTest-docs-guide.png --- This pages provides information on static sites and static page generation, including AMP. diff --git a/source/content/guides/frontend-performance/09-redirects.md b/source/content/guides/frontend-performance/09-redirects.md index 3ce642fcce..e6cd9c40a5 100644 --- a/source/content/guides/frontend-performance/09-redirects.md +++ b/source/content/guides/frontend-performance/09-redirects.md @@ -15,6 +15,7 @@ cms: [drupal, wordpress] audience: [development] product: [--] integration: [--] +image: CDN-speedTest-docs-guide.png --- ## Avoid Redirects diff --git a/source/content/guides/frontend-performance/10-additional-resources.md b/source/content/guides/frontend-performance/10-additional-resources.md index f0a2ab922c..ba2b091967 100644 --- a/source/content/guides/frontend-performance/10-additional-resources.md +++ b/source/content/guides/frontend-performance/10-additional-resources.md @@ -14,6 +14,7 @@ cms: [drupal, wordpress] audience: [development] product: [--] integration: [modules, plugins] +image: CDN-speedTest-docs-guide.png --- Learn more about improving Frontend Performance by reviewing resources available on [Drupal](https://www.drupal.org/docs/mobile-drupal-sites/front-end-performance) and [WordPress](https://wordpress.org/support/article/optimization/). diff --git a/source/content/guides/getstarted/01-introduction.md b/source/content/guides/getstarted/01-introduction.md index 57d80f31b5..8b2064cd5e 100644 --- a/source/content/guides/getstarted/01-introduction.md +++ b/source/content/guides/getstarted/01-introduction.md @@ -15,6 +15,7 @@ reviewed: "2023-03-21" showtoc: false permalink: docs/guides/getstarted editpath: getstarted/01-introduction.md +image: getting-started-Largethumb.png --- Welcome to Pantheon! This guide will walk you through the steps required to get your business and site(s) up and running on Pantheon. diff --git a/source/content/guides/getstarted/03-signup.md b/source/content/guides/getstarted/03-signup.md index 3c50cafd52..2c76c0eadf 100644 --- a/source/content/guides/getstarted/03-signup.md +++ b/source/content/guides/getstarted/03-signup.md @@ -15,6 +15,7 @@ reviewed: "2023-03-21" showtoc: false permalink: docs/guides/getstarted/signup editpath: getstarted/03-signup.md +image: getting-started-Largethumb.png --- First, let's get you signed up! diff --git a/source/content/guides/getstarted/05-team.md b/source/content/guides/getstarted/05-team.md index a82d05a290..fee5d0b5f3 100644 --- a/source/content/guides/getstarted/05-team.md +++ b/source/content/guides/getstarted/05-team.md @@ -15,6 +15,7 @@ reviewed: "2023-03-21" showtoc: false permalink: docs/guides/getstarted/team editpath: getstarted/05-team.md +image: getting-started-Largethumb.png --- diff --git a/source/content/guides/getstarted/06-addsite.md b/source/content/guides/getstarted/06-addsite.md index ad7a9ae2a9..b0b8b8d3b3 100644 --- a/source/content/guides/getstarted/06-addsite.md +++ b/source/content/guides/getstarted/06-addsite.md @@ -15,6 +15,7 @@ reviewed: "2024-12-02" showtoc: true permalink: docs/guides/getstarted/addsite editpath: getstarted/addsite.md +image: getting-started-Largethumb.png --- There are dozens of ways to add a site on Pantheon. This section covers the most common scenarios for new users: creating a new CMS site (a site running WordPress or Drupal), or migrating an existing WordPress or Drupal site. For additional scenarios, see the [Adding a Site to Pantheon](/guides/getstarted/addsite/) section at the end of this document. diff --git a/source/content/guides/getstarted/07-purchase.md b/source/content/guides/getstarted/07-purchase.md index 2406497eea..c18521e88c 100644 --- a/source/content/guides/getstarted/07-purchase.md +++ b/source/content/guides/getstarted/07-purchase.md @@ -15,6 +15,7 @@ reviewed: "2023-03-21" showtoc: false permalink: docs/guides/getstarted/purchase editpath: getstarted/07-purchase.md +image: getting-started-Largethumb.png --- The free account you created allows you to create sandbox (non-production) sites. In order to take your site live, you'll need to select and purchase a plan. diff --git a/source/content/guides/getstarted/08-launch.md b/source/content/guides/getstarted/08-launch.md index c4b7e0d4c8..e004493fcc 100644 --- a/source/content/guides/getstarted/08-launch.md +++ b/source/content/guides/getstarted/08-launch.md @@ -15,6 +15,7 @@ reviewed: "2023-03-21" showtoc: true permalink: docs/guides/getstarted/launch editpath: getstarted/08-launch.md +image: getting-started-Largethumb.png --- And now it's time to finally make your site available to the public! This section provides the minimum requirements to launch your site. Refer to our [Launch Guide](/guides/launch/) for more detailed information. diff --git a/source/content/guides/getstarted/09-nextsteps.md b/source/content/guides/getstarted/09-nextsteps.md index e3282c85dd..61c825e6fa 100644 --- a/source/content/guides/getstarted/09-nextsteps.md +++ b/source/content/guides/getstarted/09-nextsteps.md @@ -15,6 +15,7 @@ reviewed: "2023-03-21" showtoc: false permalink: docs/guides/getstarted/nextsteps editpath: getstarted/09-nextsteps.md +image: getting-started-Largethumb.png --- This guide showed you how to complete your basic Pantheon set up, and add a site. But there is so much more you can do with the Pantheon Platform! diff --git a/source/content/guides/launch/01-introduction.md b/source/content/guides/launch/01-introduction.md index 9dbe1ff6de..a17428e288 100644 --- a/source/content/guides/launch/01-introduction.md +++ b/source/content/guides/launch/01-introduction.md @@ -13,6 +13,7 @@ cms: [wordpress, drupal] audience: [agency, development] product: [--] integration: [--] +image: launchGuide-twitterLarge.png --- Pantheon is a WebOps platform for open-source Drupal and WordPress sites that makes it easy to design, build, test, and measure your sites. WebOps combines the lessons of Agile and DevOps communities to prioritize iterative work that is visible to all team members. You can quickly deploy different versions of the same site on your Test environment, Live environment, and backup servers. diff --git a/source/content/guides/launch/02-create-site-launch.md b/source/content/guides/launch/02-create-site-launch.md index e0b86c5933..8be48f69e6 100644 --- a/source/content/guides/launch/02-create-site-launch.md +++ b/source/content/guides/launch/02-create-site-launch.md @@ -13,6 +13,7 @@ cms: [wordpress, drupal] audience: [agency, development] product: [--] integration: [--] +image: launchGuide-twitterLarge.png --- This section provides information on how to create your Live environment. diff --git a/source/content/guides/launch/03-plans.md b/source/content/guides/launch/03-plans.md index 7d3e69973d..e0091bf468 100644 --- a/source/content/guides/launch/03-plans.md +++ b/source/content/guides/launch/03-plans.md @@ -13,6 +13,7 @@ audience: [agency, business] product: [--] integration: [--] reviewed: "2024-08-07" +image: launchGuide-twitterLarge.png --- This section provides information on how to upgrade from a free account to a paid plan by adding billing information or inviting a business owner to pay. diff --git a/source/content/guides/launch/04-domains.md b/source/content/guides/launch/04-domains.md index ae75646b2d..cfbf5d08a0 100644 --- a/source/content/guides/launch/04-domains.md +++ b/source/content/guides/launch/04-domains.md @@ -12,6 +12,7 @@ cms: [wordpress, drupal] audience: [agency, development] product: [--] integration: [--] +image: launchGuide-twitterLarge.png --- This section provides information on how to connect a bare domain and `www` domain to Pantheon's Live environment. diff --git a/source/content/guides/launch/05-advanced-curls.md b/source/content/guides/launch/05-advanced-curls.md index 179feffe2a..d96a97e7c5 100644 --- a/source/content/guides/launch/05-advanced-curls.md +++ b/source/content/guides/launch/05-advanced-curls.md @@ -13,6 +13,7 @@ cms: [wordpress, drupal] audience: [development] product: [--] integration: [--] +image: launchGuide-twitterLarge.png --- This section provides information on how to use cURL commands during the migration process, as well as commands to compare your old site to your newly migrated site on Pantheon. diff --git a/source/content/guides/launch/06-configure-dns.md b/source/content/guides/launch/06-configure-dns.md index 1621a8ff6c..f6e3583962 100644 --- a/source/content/guides/launch/06-configure-dns.md +++ b/source/content/guides/launch/06-configure-dns.md @@ -12,6 +12,7 @@ cms: [wordpress, drupal] audience: [agency, development] product: [--] integration: [--] +image: launchGuide-twitterLarge.png --- This section provides information on how to configure DNS and provision [free, automated HTTPS](/guides/global-cdn/https) on Pantheon. diff --git a/source/content/guides/launch/07-redirects.md b/source/content/guides/launch/07-redirects.md index 4e17b71f1f..251a91d1bd 100644 --- a/source/content/guides/launch/07-redirects.md +++ b/source/content/guides/launch/07-redirects.md @@ -12,6 +12,7 @@ cms: [wordpress, drupal] audience: [agency, development] product: [dashboard, terminus] integration: [--] +image: launchGuide-twitterLarge.png --- This section provides information on how to redirect all traffic to a primary domain, which is a best practice for SEO. This means if you choose `www.example.com` as your primary domain, then if a visitor navigates to a bare domain, for example, `example.com` (or any other domain you have connected to your site), they will end up on `https://www.example.com`. diff --git a/source/content/guides/launch/08-launch-check.md b/source/content/guides/launch/08-launch-check.md index 2e69ab8ddc..afd737f101 100644 --- a/source/content/guides/launch/08-launch-check.md +++ b/source/content/guides/launch/08-launch-check.md @@ -12,6 +12,7 @@ cms: [wordpress, drupal] audience: [agency, development] product: [--] integration: [--] +image: launchGuide-twitterLarge.png --- This section provides information on how to enable backups, test your email plugin or module, review status reports, and test your cache. diff --git a/source/content/guides/launch/09-next-steps.md b/source/content/guides/launch/09-next-steps.md index f68ad2d955..1ad4a254a6 100644 --- a/source/content/guides/launch/09-next-steps.md +++ b/source/content/guides/launch/09-next-steps.md @@ -12,6 +12,7 @@ cms: [wordpress, drupal] audience: [agency, development] product: [newrelic] integration: [--] +image: launchGuide-twitterLarge.png --- Congratulations on launching a site on Pantheon. Review next steps below for information on WordPress and Drupal launch checks, content staging, New Relic performance monitoring, load and performance testing, and secure development on the Pantheon platform. diff --git a/source/content/guides/wordpress-git/01-introduction.md b/source/content/guides/wordpress-git/01-introduction.md index 3cbf066cd1..19e2b45abb 100644 --- a/source/content/guides/wordpress-git/01-introduction.md +++ b/source/content/guides/wordpress-git/01-introduction.md @@ -15,6 +15,7 @@ contributors: [scottmassey, rachelwhitton] permalink: docs/guides/wordpress-git/ editpath: wordpress-Git/01-introduction.md reviewed: "2021-02-26" +image: git-sftp-wp-docs-guide.png --- This guide demonstrates how SFTP users can build WordPress sites on Pantheon's Git-based platform. Don't use Git? No problem -- we'll show you how easy it is to use by demonstrating workflows for various development tasks, such as adding a new theme or plugin. diff --git a/source/content/guides/wordpress-git/02-plugins.md b/source/content/guides/wordpress-git/02-plugins.md index 63d0d33b88..f9c80421a1 100644 --- a/source/content/guides/wordpress-git/02-plugins.md +++ b/source/content/guides/wordpress-git/02-plugins.md @@ -14,6 +14,7 @@ type: guide permalink: docs/guides/wordpress-git/plugins/ editpath: wordpress-git/02-plugins.md reviewed: "2020-02-26" +image: git-sftp-wp-docs-guide.png --- This lesson demonstrates how to develop using the WordPress Dashboard in SFTP mode. We'll install a few plugins and submit each one to version control as individual commits. diff --git a/source/content/guides/wordpress-git/03-themes.md b/source/content/guides/wordpress-git/03-themes.md index 2304b1a6e5..2ebbfd58f5 100644 --- a/source/content/guides/wordpress-git/03-themes.md +++ b/source/content/guides/wordpress-git/03-themes.md @@ -14,6 +14,7 @@ type: guide permalink: docs/guides/wordpress-git/themes/ editpath: wordpress-git/03-themes.md reviewed: "2020-02-26" +image: git-sftp-wp-docs-guide.png --- This lesson demonstrates how to utilize Git while developing over SFTP with a local file client and text editor. Often, premium plugins or themes need to be downloaded from the plugin provider and uploaded to your site. In this example, we will replicate that by uploading a new theme, creating a child theme, and then finally make some example customizations to the stylesheet -- all while submitting our work to version control along the way in sensibly grouped commits. ARE YOU UPDATING diff --git a/source/content/guides/wordpress-git/04-media.md b/source/content/guides/wordpress-git/04-media.md index 329c3fdb52..09b0a18ddc 100644 --- a/source/content/guides/wordpress-git/04-media.md +++ b/source/content/guides/wordpress-git/04-media.md @@ -14,6 +14,7 @@ type: guide permalink: docs/guides/wordpress-git/media/ editpath: wordpress-git/04-media.md reviewed: "2020-02-26" +image: git-sftp-wp-docs-guide.png --- In this lesson, we'll demonstrate how media files are handled on Pantheon. Media refers to anything in the `wp-content/uploads/` directory, which is intentionally excluded from version control. Git isn't needed to manage content like this, so we won't use version control in this lesson. diff --git a/source/content/guides/wordpress-git/05-remove-editor.md b/source/content/guides/wordpress-git/05-remove-editor.md index 38f4dc9072..825793af54 100644 --- a/source/content/guides/wordpress-git/05-remove-editor.md +++ b/source/content/guides/wordpress-git/05-remove-editor.md @@ -14,6 +14,7 @@ type: guide permalink: docs/guides/wordpress-git/remove-editor/ editpath: wordpress-git/05-remove-editor.md reviewed: "2020-02-26" +image: git-sftp-wp-docs-guide.png --- ## Remove Default WordPress Editor diff --git a/source/content/guides/wordpress-git/06-next-steps.md b/source/content/guides/wordpress-git/06-next-steps.md index c697e48b33..b5aeae436e 100644 --- a/source/content/guides/wordpress-git/06-next-steps.md +++ b/source/content/guides/wordpress-git/06-next-steps.md @@ -14,6 +14,7 @@ type: guide permalink: docs/guides/wordpress-git/next-steps/ editpath: wordpress-git/06-next-steps.md reviewed: "2020-02-26" +image: git-sftp-wp-docs-guide.png --- ## Deploy Code from Dev diff --git a/src/templates/certificationpage.js b/src/templates/certificationpage.js index 3dfc4efbd4..e4a5db4214 100644 --- a/src/templates/certificationpage.js +++ b/src/templates/certificationpage.js @@ -38,7 +38,7 @@ class CertificationTemplate extends React.Component { title={node.frontmatter.subtitle + ' | ' + node.frontmatter.title} description={node.frontmatter.description || node.excerpt} authors={node.frontmatter.contributors} - image={'/images/assets/terminus-thumbLarge.png'} + image={'/images/assets/default-thumb-cert.png'} reviewed={ifCommandsISO} type={node.frontmatter.type} /> diff --git a/src/templates/doc.js b/src/templates/doc.js index 7e813d3beb..5527863863 100644 --- a/src/templates/doc.js +++ b/src/templates/doc.js @@ -25,6 +25,10 @@ class DocTemplate extends React.Component {
{children}
); const ContentLayoutType = ContainerDiv; + let image = '/images/assets/' + node.frontmatter.image; + if (image === '/images/assets/null') { + image = '/images/assets/default-thumb-doc.png'; + } return ( @@ -33,7 +37,7 @@ class DocTemplate extends React.Component { title={node.frontmatter.title} description={node.frontmatter.description || node.excerpt} authors={node.frontmatter.contributors} - image={'/images/assets/default-thumb-doc.png'} + image={image} categories={node.frontmatter.categories} keywords={node.frontmatter.tags} reviewed={isoDate.frontmatter.reviewed} @@ -100,6 +104,7 @@ export const pageQuery = graphql` } frontmatter { title + image description categories cms diff --git a/src/templates/guide.js b/src/templates/guide.js index 425cdc7d14..0ee18344f5 100644 --- a/src/templates/guide.js +++ b/src/templates/guide.js @@ -28,6 +28,10 @@ class GuideTemplate extends React.Component {
{children}
); const ContentLayoutType = hasTOC ? SidebarLayout : ContainerDiv; + let image = '/images/assets/' + node.frontmatter.image; + if (image === '/images/assets/null') { + image = '/images/assets/default-thumb-guide.png'; + } return ( @@ -37,7 +41,7 @@ class GuideTemplate extends React.Component { description={node.frontmatter.description || node.excerpt} keywords={node.frontmatter.tags} authors={node.frontmatter.contributors} - image={'/images/assets/terminus-thumbLarge.png'} + image={image} reviewed={isoDate.frontmatter.reviewed} type={node.frontmatter.type} /> @@ -97,6 +101,7 @@ export const pageQuery = graphql` description showtoc editpath + image contributors { yamlId name diff --git a/src/templates/releaseNotePage.js b/src/templates/releaseNotePage.js index 18f0bd3025..555ab95d4a 100644 --- a/src/templates/releaseNotePage.js +++ b/src/templates/releaseNotePage.js @@ -1,29 +1,29 @@ -import React from "react" -import { Link, graphql } from "gatsby" -import Layout from "../layout/layout" -import SEO from "../layout/seo" -import ReleaseNoteCategories from "../components/ReleaseNoteCategories" -import MdxWrapper from "../components/mdxWrapper.js" -import PublishedDate from "../components/PublishedDate" -import { Container, Icon } from "@pantheon-systems/pds-toolkit-react" +import React from 'react'; +import { Link, graphql } from 'gatsby'; +import Layout from '../layout/layout'; +import SEO from '../layout/seo'; +import ReleaseNoteCategories from '../components/ReleaseNoteCategories'; +import MdxWrapper from '../components/mdxWrapper.js'; +import PublishedDate from '../components/PublishedDate'; +import { Container, Icon } from '@pantheon-systems/pds-toolkit-react'; import { headline2, headline3, headline4, -} from "../components/releaseHeadlines" +} from '../components/releaseHeadlines'; const customShortcodes = { h1: headline2, h2: headline3, h3: headline4, -} +}; // Set container width for search and main content. -const containerWidth = "standard" +const containerWidth = 'standard'; class ReleaseNoteTemplate extends React.Component { render() { - const node = this.props.data.mdx + const node = this.props.data.mdx; return ( @@ -31,7 +31,7 @@ class ReleaseNoteTemplate extends React.Component { title={node.frontmatter.title} description={node.frontmatter.description || node.excerpt} authors={node.frontmatter.contributors} - image={"/images/assets/default-thumb-doc.png"} + image={'/images/assets/default-thumb-changelog.png'} />
- + @@ -73,11 +84,11 @@ class ReleaseNoteTemplate extends React.Component {
- ) + ); } } -export default ReleaseNoteTemplate +export default ReleaseNoteTemplate; export const pageQuery = graphql` query ReleaseNoteBySlug($slug: String!) { @@ -85,4 +96,4 @@ export const pageQuery = graphql` ...theReleaseNoteFields } } -` +`; diff --git a/src/templates/releaseNotesListing/index.js b/src/templates/releaseNotesListing/index.js index 6d0f68e661..3f9d4ca9b4 100644 --- a/src/templates/releaseNotesListing/index.js +++ b/src/templates/releaseNotesListing/index.js @@ -1,226 +1,233 @@ -import React, { useEffect, useState, useRef, useLayoutEffect } from "react" -import { graphql, navigate } from "gatsby" -import debounce from "lodash.debounce" -import Mark from "mark.js" -import { useLocation } from "@reach/router" +import React, { useEffect, useState, useRef, useLayoutEffect } from 'react'; +import { graphql, navigate } from 'gatsby'; +import debounce from 'lodash.debounce'; +import Mark from 'mark.js'; +import { useLocation } from '@reach/router'; -import Layout from "../../layout/layout/index.js" -import SEO from "../../layout/seo.js" +import Layout from '../../layout/layout/index.js'; +import SEO from '../../layout/seo.js'; -import ReleaseNotesPager from "../../components/releaseNotesPager.js" -import ReleaseNotePopoverCategorySelector from "../../components/releaseNotePopoverCategorySelector.js" -import ReleaseNoteTeaser from "../../components/ReleaseNoteTeaser/index.js" +import ReleaseNotesPager from '../../components/releaseNotesPager.js'; +import ReleaseNotePopoverCategorySelector from '../../components/releaseNotePopoverCategorySelector.js'; +import ReleaseNoteTeaser from '../../components/ReleaseNoteTeaser/index.js'; -import { releaseNoteCategoryLoader } from "../../data/releaseNoteCategories.js" +import { releaseNoteCategoryLoader } from '../../data/releaseNoteCategories.js'; import { Container, FlexContainer, Icon, Tag, -} from "@pantheon-systems/pds-toolkit-react" +} from '@pantheon-systems/pds-toolkit-react'; -import './style.css' +import './style.css'; // Set container width for search and main content. -const containerWidth = "standard" +const containerWidth = 'standard'; const ReleaseNotesListingTemplate = ({ data }) => { // Ref to track whether the component is loading for the first time - const initialLoadRef = useRef(true) + const initialLoadRef = useRef(true); // Set up state. - const [filteredData, setFilteredData] = useState([]) + const [filteredData, setFilteredData] = useState([]); const [filters, setFilters] = useState({ query: '', - categories: [] - }) - const [currentPage, setCurrentPage] = useState(1) - const [queryStrings, setQueryStrings] = useState('') + categories: [], + }); + const [currentPage, setCurrentPage] = useState(1); + const [queryStrings, setQueryStrings] = useState(''); const [isLoaded, setIsLoaded] = useState(false); - const notesPerPage = 8 - let totalPagesRef = useRef(0) + const notesPerPage = 8; + let totalPagesRef = useRef(0); // Ref for storing reference to the search input element - let queryRef = useRef('') + let queryRef = useRef(''); // Function to filter releaseNotes const filterData = () => { // Get all releasenotes. - const releasenotes = data.allMdx.edges || [] + const releasenotes = data.allMdx.edges || []; // Filter releasenotes based on filters. const filterReleaseNotes = (releasenotes) => { - let newFilteredData = [...releasenotes] + let newFilteredData = [...releasenotes]; // If there's a search query, filter the data based on it - if(filters.query){ + if (filters.query) { // Convert the search query to lowercase - const newQuery = filters.query.toLowerCase() + const newQuery = filters.query.toLowerCase(); // Filter the data to include only items that match the search query - newFilteredData = newFilteredData.filter(item => { - const publishedDate = item.node.frontmatter.published_date - const dateOptions = { year: "numeric", month: "long", day: "numeric" } + newFilteredData = newFilteredData.filter((item) => { + const publishedDate = item.node.frontmatter.published_date; + const dateOptions = { + year: 'numeric', + month: 'long', + day: 'numeric', + }; const formattedDate = new Date(publishedDate).toLocaleDateString( undefined, - dateOptions - ) + dateOptions, + ); // Filter the data to include items where the title, body, or formatted date includes the search query return ( item.node.frontmatter.title.toLowerCase().includes(newQuery) || item.node.rawBody.toLowerCase().includes(newQuery) || formattedDate.toLowerCase().includes(filters.query.toLowerCase()) - ) - }) + ); + }); } // If there are selected categories, filter the data to include only items that belong to at least one of those categories - if(filters.categories.length > 0){ - newFilteredData = newFilteredData.filter(item => { - const categories = item.node.frontmatter.categories || [] + if (filters.categories.length > 0) { + newFilteredData = newFilteredData.filter((item) => { + const categories = item.node.frontmatter.categories || []; // Check if any category of the current item matches any of the selected categories - return categories.some(category => { - return filters.categories.some(filterCategory => filterCategory.slug === category) - }) - }) + return categories.some((category) => { + return filters.categories.some( + (filterCategory) => filterCategory.slug === category, + ); + }); + }); } // If there's no search query and no selected categories, return all release notes - if(filters.query.length === 0 && filters.categories.length === 0){ - return releasenotes + if (filters.query.length === 0 && filters.categories.length === 0) { + return releasenotes; } // Return the filtered data - return newFilteredData - } + return newFilteredData; + }; // Get all filtered data - const allFilteredData = filterReleaseNotes(releasenotes) + const allFilteredData = filterReleaseNotes(releasenotes); // Filtered data sliced for pagination - const paginatedFilteredData = allFilteredData.slice((currentPage - 1) * notesPerPage, currentPage * notesPerPage) + const paginatedFilteredData = allFilteredData.slice( + (currentPage - 1) * notesPerPage, + currentPage * notesPerPage, + ); // Update the total pages number based on the amount of releaseNotes - totalPagesRef.current = Math.ceil(allFilteredData.length / notesPerPage) + totalPagesRef.current = Math.ceil(allFilteredData.length / notesPerPage); // Update state based on filters and pagination. - setFilteredData(paginatedFilteredData) + setFilteredData(paginatedFilteredData); // Mark releasenotes based on query. - var context = document.querySelector(".docs-release-note-results") - var markInstance = new Mark(context) + var context = document.querySelector('.docs-release-note-results'); + var markInstance = new Mark(context); setTimeout(function () { markInstance.unmark({ done: function () { - markInstance.mark(filters.query) + markInstance.mark(filters.query); }, - }) - }, 100) - } + }); + }, 100); + }; // Handle search input. const handleInputChange = (event) => { - const newQuery = event.target.value - setFilters( prevState => ({ ...prevState, query: newQuery })) - setCurrentPage(1) - } + const newQuery = event.target.value; + setFilters((prevState) => ({ ...prevState, query: newQuery })); + setCurrentPage(1); + }; // Function to remove a category from the filters state when its tag is removed const handleRemoveTag = (category) => { - setFilters(prevState => ({...prevState, categories:[...prevState.categories.filter(item => item !== category )]})) - setCurrentPage(1) - } + setFilters((prevState) => ({ + ...prevState, + categories: [...prevState.categories.filter((item) => item !== category)], + })); + setCurrentPage(1); + }; // Function to update query strings based on filters and page const updateQueryStrings = () => { // Build updated query string - const params = new URLSearchParams() - filters.categories.forEach(category => { - params.append('category', category.slug) - }) + const params = new URLSearchParams(); + filters.categories.forEach((category) => { + params.append('category', category.slug); + }); - if(filters.query){ - params.append('query', filters.query) + if (filters.query) { + params.append('query', filters.query); } - const newQueryStrings = params.toString() - setQueryStrings(newQueryStrings) - if(newQueryStrings){ - navigate(`/release-notes/${currentPage}/?${newQueryStrings}`) + const newQueryStrings = params.toString(); + setQueryStrings(newQueryStrings); + if (newQueryStrings) { + navigate(`/release-notes/${currentPage}/?${newQueryStrings}`); } else { - navigate(`/release-notes/${currentPage}/`) + navigate(`/release-notes/${currentPage}/`); } - } + }; useEffect(() => { - filterData() + filterData(); // Update query strings in the URL based on the current filters, but only if it's not the initial load - if(!initialLoadRef.current){ - updateQueryStrings() + if (!initialLoadRef.current) { + updateQueryStrings(); } - },[filters, currentPage]) + }, [filters, currentPage]); - const location = useLocation() + const location = useLocation(); useEffect(() => { // Function to update filters based on URL parameters const updateFilters = () => { // Get search parameters from the URL - const searchParams = new URLSearchParams(window.location.search) + const searchParams = new URLSearchParams(window.location.search); // Extract query and category slugs from search parameters - const query = searchParams.get('query') - const pageUrl = parseInt(searchParams.get('page'), 10) || 1 - const categorySlugs = searchParams.getAll('category') + const query = searchParams.get('query'); + const pageUrl = parseInt(searchParams.get('page'), 10) || 1; + const categorySlugs = searchParams.getAll('category'); // Map category slugs to category objects - const categories = categorySlugs.map(slug => ({slug})) + const categories = categorySlugs.map((slug) => ({ slug })); // Update filters if the query in URL parameters differs from the current query in state - if( query !== filters.query ){ - setFilters( prevState => ( - { - query: query || '', - categories: prevState.categories || [] - } - )) - queryRef.current.value = query + if (query !== filters.query) { + setFilters((prevState) => ({ + query: query || '', + categories: prevState.categories || [], + })); + queryRef.current.value = query; } // Update filters if categories in URL parameters differ from the current categories in state - if( JSON.stringify(categories) !== JSON.stringify(filters.categories) ) { - setFilters( prevState => ( - { - query: prevState.query || '', - categories: categories || [] - } - )) + if (JSON.stringify(categories) !== JSON.stringify(filters.categories)) { + setFilters((prevState) => ({ + query: prevState.query || '', + categories: categories || [], + })); } + }; - } - - updateFilters() + updateFilters(); // Set initial load reference to false after the initial update - initialLoadRef.current = false - },[]) + initialLoadRef.current = false; + }, []); // Get current page from URL useEffect(() => { - const pathSegments = location.pathname.split("/").filter(Boolean) - const page = pathSegments[pathSegments.length - 1] - const pageNumber = parseInt(page, 10) + const pathSegments = location.pathname.split('/').filter(Boolean); + const page = pathSegments[pathSegments.length - 1]; + const pageNumber = parseInt(page, 10); if (!isNaN(pageNumber)) { - setCurrentPage(pageNumber) + setCurrentPage(pageNumber); } - }, [location.pathname]) + }, [location.pathname]); // Debounce search input. - const debouncedHandleInputChange = debounce(handleInputChange, 300) + const debouncedHandleInputChange = debounce(handleInputChange, 300); // Preprocess release notes teasers. const renderedTeasers = filteredData.map((releasenote, index) => ( @@ -229,7 +236,7 @@ const ReleaseNotesListingTemplate = ({ data }) => { ReleaseNoteData={releasenote.node} className="pds-spacing-mar-block-end-5xl" /> - )) + )); // Render release notes or no results message. const noResultsMessage = ( @@ -237,12 +244,12 @@ const ReleaseNotesListingTemplate = ({ data }) => { No results found. Try refining your search terms or explore other categories.

- ) + ); const renderedReleaseNotes = - filteredData.length !== 0 ? renderedTeasers : noResultsMessage + filteredData.length !== 0 ? renderedTeasers : noResultsMessage; // Preprocess intro text. - const introText = data.releasenotesYaml.introText + const introText = data.releasenotesYaml.introText; useLayoutEffect(() => { setIsLoaded(true); @@ -253,7 +260,7 @@ const ReleaseNotesListingTemplate = ({ data }) => {
{ >

Pantheon release notes

{introText}
- - + + Subscribe to RSS feed
@@ -292,22 +303,31 @@ const ReleaseNotesListingTemplate = ({ data }) => { onChange={debouncedHandleInputChange} />
- - - - { - filters && filters.categories.map(item => { + + + + {filters && + filters.categories.map((item) => { return ( handleRemoveTag(item)} isRemovable={true} /> - ) - }) - } + ); + })}
@@ -327,10 +347,10 @@ const ReleaseNotesListingTemplate = ({ data }) => {
- ) -} + ); +}; -export default ReleaseNotesListingTemplate +export default ReleaseNotesListingTemplate; export const pageQuery = graphql` query releasenotesListing { @@ -351,4 +371,4 @@ export const pageQuery = graphql` introText } } -` +`; diff --git a/src/templates/video.js b/src/templates/video.js index 7a06b126ea..2da36a7f85 100644 --- a/src/templates/video.js +++ b/src/templates/video.js @@ -30,7 +30,7 @@ class VideoTemplate extends React.Component { title={node.frontmatter.title} description={node.frontmatter.description || node.excerpt} authors={node.frontmatter.contributors} - image={'/images/assets/default-thumb-doc.png'} + image={'/images/assets/default-thumb-video.png'} type={node.frontmatter.type} /> diff --git a/static/images/assets/CDN-speedTest-docs-guide.png b/static/images/assets/CDN-speedTest-docs-guide.png new file mode 100644 index 0000000000..5baae61a6f Binary files /dev/null and b/static/images/assets/CDN-speedTest-docs-guide.png differ diff --git a/static/images/assets/buildToolsGuide-thumb.png b/static/images/assets/buildToolsGuide-thumb.png new file mode 100644 index 0000000000..2a800d5a48 Binary files /dev/null and b/static/images/assets/buildToolsGuide-thumb.png differ diff --git a/static/images/assets/default-thumb-cert.png b/static/images/assets/default-thumb-cert.png new file mode 100644 index 0000000000..46b5af3744 Binary files /dev/null and b/static/images/assets/default-thumb-cert.png differ diff --git a/static/images/assets/default-thumb-changelog.png b/static/images/assets/default-thumb-changelog.png new file mode 100644 index 0000000000..b9ad38409e Binary files /dev/null and b/static/images/assets/default-thumb-changelog.png differ diff --git a/static/images/assets/default-thumb-doc.png b/static/images/assets/default-thumb-doc.png new file mode 100644 index 0000000000..7db3b67124 Binary files /dev/null and b/static/images/assets/default-thumb-doc.png differ diff --git a/static/images/assets/default-thumb-guide.png b/static/images/assets/default-thumb-guide.png new file mode 100644 index 0000000000..267ad947b1 Binary files /dev/null and b/static/images/assets/default-thumb-guide.png differ diff --git a/static/images/assets/default-thumb-video.png b/static/images/assets/default-thumb-video.png new file mode 100644 index 0000000000..e2ad28bb4b Binary files /dev/null and b/static/images/assets/default-thumb-video.png differ diff --git a/static/images/assets/default-thumb.png b/static/images/assets/default-thumb.png new file mode 100644 index 0000000000..13f062d9a8 Binary files /dev/null and b/static/images/assets/default-thumb.png differ diff --git a/static/images/assets/getting-started-Largethumb.png b/static/images/assets/getting-started-Largethumb.png new file mode 100644 index 0000000000..eaf8bcb5cf Binary files /dev/null and b/static/images/assets/getting-started-Largethumb.png differ diff --git a/static/images/assets/git-sftp-wp-docs-guide.png b/static/images/assets/git-sftp-wp-docs-guide.png new file mode 100644 index 0000000000..57033b13da Binary files /dev/null and b/static/images/assets/git-sftp-wp-docs-guide.png differ diff --git a/static/images/assets/launchGuide-twitterLarge.png b/static/images/assets/launchGuide-twitterLarge.png new file mode 100644 index 0000000000..07d17102d5 Binary files /dev/null and b/static/images/assets/launchGuide-twitterLarge.png differ diff --git a/static/images/assets/terminus-thumbLarge.png b/static/images/assets/terminus-thumbLarge.png new file mode 100644 index 0000000000..200c6b8d57 Binary files /dev/null and b/static/images/assets/terminus-thumbLarge.png differ