+ print_submit_button( \__( 'Set', 'progress-planner' ) );
+ }
+
/**
* Add task actions specific to this task.
*
@@ -130,7 +209,7 @@ public function is_task_completed( $task_id = '' ) {
public function add_task_actions( $data = [], $actions = [] ) {
$actions[] = [
'priority' => 10,
- 'html' => '' . \esc_html__( 'Go to the settings page', 'progress-planner' ) . '',
+ 'html' => '' . \esc_html__( 'Set', 'progress-planner' ) . '',
];
return $actions;
From 59fbffe7745a3d5bb08635350daed96c637a2b7f Mon Sep 17 00:00:00 2001
From: Filip Ilic
Date: Mon, 3 Nov 2025 16:50:51 +0100
Subject: [PATCH 3/9] add task when new public post type is detected
---
.../class-set-valuable-post-types.php | 52 +++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/classes/suggested-tasks/providers/class-set-valuable-post-types.php b/classes/suggested-tasks/providers/class-set-valuable-post-types.php
index da40622055..e54233acb4 100644
--- a/classes/suggested-tasks/providers/class-set-valuable-post-types.php
+++ b/classes/suggested-tasks/providers/class-set-valuable-post-types.php
@@ -64,6 +64,58 @@ protected function get_url() {
public function init() {
\add_action( 'progress_planner_settings_form_options_stored', [ $this, 'remove_upgrade_option' ] );
\add_action( 'wp_ajax_prpl_interactive_task_submit_set-valuable-post-types', [ $this, 'handle_interactive_task_specific_submit' ] );
+
+ // On late init hook we need to check if the public post types are changed.
+ \add_action( 'init', [ $this, 'check_public_post_types' ], PHP_INT_MAX - 1 );
+ }
+
+ /**
+ * Check if the public post types are changed.
+ *
+ * @return void
+ */
+ public function check_public_post_types() {
+ $previosly_set_public_post_types = \array_unique( \get_option( 'progress_planner_public_post_types', [] ) );
+ $public_post_types = \array_unique( \progress_planner()->get_settings()->get_public_post_types() );
+
+ // Sort the public post types.
+ \sort( $previosly_set_public_post_types );
+ \sort( $public_post_types );
+
+ // Compare the previously set public post types with the current public post types.
+ if ( $previosly_set_public_post_types === $public_post_types ) {
+ return;
+ }
+
+ // Update the previously set public post types.
+ \update_option( 'progress_planner_public_post_types', $public_post_types );
+
+ // Exit if post type was removed, or it is not public anymore, since the user will not to able to make different selection.
+ if ( count( $public_post_types ) < count( $previosly_set_public_post_types ) ) {
+ return;
+ }
+
+ // If we're here that means that there is new public post type.
+
+ // Check if the task exists, if it does and it is published do nothing.
+ $task = \progress_planner()->get_suggested_tasks_db()->get_tasks_by( [ 'provider_id' => static::PROVIDER_ID ] );
+ if ( ! empty( $task ) && 'publish' === $task[0]->post_status ) {
+ return;
+ }
+
+ // If it is trashed, change it's status to publish.
+ if ( ! empty( $task ) && 'trash' === $task[0]->post_status ) {
+ \wp_update_post(
+ [
+ 'ID' => $task[0]->ID,
+ 'post_status' => 'publish',
+ ]
+ );
+ return;
+ }
+
+ // If we're here then we need to add it.
+ \progress_planner()->get_suggested_tasks_db()->add( $this->modify_injection_task_data( $this->get_task_details() ) );
}
/**
From 1749352ed3f753389133db440c3852e061e6be86 Mon Sep 17 00:00:00 2001
From: Filip Ilic
Date: Thu, 4 Dec 2025 15:37:12 +0100
Subject: [PATCH 4/9] set homepage
---
.../suggested-tasks/class-tasks-manager.php | 2 +
.../providers/class-set-page-home.php | 55 +++++++++++++++++++
2 files changed, 57 insertions(+)
create mode 100644 classes/suggested-tasks/providers/class-set-page-home.php
diff --git a/classes/suggested-tasks/class-tasks-manager.php b/classes/suggested-tasks/class-tasks-manager.php
index 2eae76f88d..77edc5e0ca 100644
--- a/classes/suggested-tasks/class-tasks-manager.php
+++ b/classes/suggested-tasks/class-tasks-manager.php
@@ -39,6 +39,7 @@
use Progress_Planner\Suggested_Tasks\Providers\Set_Date_Format;
use Progress_Planner\Suggested_Tasks\Providers\SEO_Plugin;
use Progress_Planner\Suggested_Tasks\Providers\Improve_Pdf_Handling;
+use Progress_Planner\Suggested_Tasks\Providers\Set_Page_Home;
use Progress_Planner\Suggested_Tasks\Providers\Set_Page_About;
use Progress_Planner\Suggested_Tasks\Providers\Set_Page_FAQ;
use Progress_Planner\Suggested_Tasks\Providers\Set_Page_Contact;
@@ -90,6 +91,7 @@ public function __construct() {
new Set_Date_Format(),
new SEO_Plugin(),
new Improve_Pdf_Handling(),
+ new Set_Page_Home(),
new Set_Page_About(),
new Set_Page_FAQ(),
new Set_Page_Contact(),
diff --git a/classes/suggested-tasks/providers/class-set-page-home.php b/classes/suggested-tasks/providers/class-set-page-home.php
new file mode 100644
index 0000000000..4c2955076b
--- /dev/null
+++ b/classes/suggested-tasks/providers/class-set-page-home.php
@@ -0,0 +1,55 @@
+';
+ \esc_html_e( 'The Home page is the first page that visitors see when they visit your website. It is a great way to welcome your visitors and introduce your website to them.', 'progress-planner' );
+ echo '';
+ }
+}
From a6fc827afbc4e82d34a5316ce8248ae75cd5d0f5 Mon Sep 17 00:00:00 2001
From: Filip Ilic
Date: Fri, 12 Dec 2025 15:39:20 +0100
Subject: [PATCH 5/9] no need for "Set Home Page" task, we detect that
correctly
---
.../suggested-tasks/class-tasks-manager.php | 2 -
.../providers/class-set-page-home.php | 55 -------------------
2 files changed, 57 deletions(-)
delete mode 100644 classes/suggested-tasks/providers/class-set-page-home.php
diff --git a/classes/suggested-tasks/class-tasks-manager.php b/classes/suggested-tasks/class-tasks-manager.php
index 5c76a96f82..1a9082ed89 100644
--- a/classes/suggested-tasks/class-tasks-manager.php
+++ b/classes/suggested-tasks/class-tasks-manager.php
@@ -40,7 +40,6 @@
use Progress_Planner\Suggested_Tasks\Providers\Set_Date_Format;
use Progress_Planner\Suggested_Tasks\Providers\SEO_Plugin;
use Progress_Planner\Suggested_Tasks\Providers\Improve_Pdf_Handling;
-use Progress_Planner\Suggested_Tasks\Providers\Set_Page_Home;
use Progress_Planner\Suggested_Tasks\Providers\Set_Page_About;
use Progress_Planner\Suggested_Tasks\Providers\Set_Page_FAQ;
use Progress_Planner\Suggested_Tasks\Providers\Set_Page_Contact;
@@ -93,7 +92,6 @@ public function __construct() {
new Set_Date_Format(),
new SEO_Plugin(),
new Improve_Pdf_Handling(),
- new Set_Page_Home(),
new Set_Page_About(),
new Set_Page_FAQ(),
new Set_Page_Contact(),
diff --git a/classes/suggested-tasks/providers/class-set-page-home.php b/classes/suggested-tasks/providers/class-set-page-home.php
deleted file mode 100644
index 4c2955076b..0000000000
--- a/classes/suggested-tasks/providers/class-set-page-home.php
+++ /dev/null
@@ -1,55 +0,0 @@
-';
- \esc_html_e( 'The Home page is the first page that visitors see when they visit your website. It is a great way to welcome your visitors and introduce your website to them.', 'progress-planner' );
- echo '';
- }
-}
From 2d213f0e75e37516c16e844ebc7a762e9ecbf09c Mon Sep 17 00:00:00 2001
From: Filip Ilic
Date: Fri, 12 Dec 2025 15:44:23 +0100
Subject: [PATCH 6/9] tweak page description
---
classes/suggested-tasks/providers/class-set-page-about.php | 5 ++++-
classes/suggested-tasks/providers/class-set-page-contact.php | 5 ++++-
classes/suggested-tasks/providers/class-set-page-faq.php | 5 ++++-
3 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/classes/suggested-tasks/providers/class-set-page-about.php b/classes/suggested-tasks/providers/class-set-page-about.php
index 6bcceba8cb..738614233a 100644
--- a/classes/suggested-tasks/providers/class-set-page-about.php
+++ b/classes/suggested-tasks/providers/class-set-page-about.php
@@ -49,7 +49,10 @@ protected function get_title() {
*/
public function print_popover_instructions() {
echo '
';
- \esc_html_e( 'The About page is a page that introduces your website to visitors. It is a great way to tell your story and share your mission with your audience.', 'progress-planner' );
+ \esc_html_e( 'Your About page tells visitors who you are, what you do, and why they should trust you. Share your story, mission, and the people behind your website to build a personal connection with your audience.', 'progress-planner' );
+ echo '
';
+ echo '
';
+ \esc_html_e( 'You can set this page from the Sidebar on the Page Edit screen.', 'progress-planner' );
echo '
';
}
}
diff --git a/classes/suggested-tasks/providers/class-set-page-contact.php b/classes/suggested-tasks/providers/class-set-page-contact.php
index d97dc4a684..ab4b743182 100644
--- a/classes/suggested-tasks/providers/class-set-page-contact.php
+++ b/classes/suggested-tasks/providers/class-set-page-contact.php
@@ -49,7 +49,10 @@ protected function get_title() {
*/
public function print_popover_instructions() {
echo '
';
- \esc_html_e( 'The Contact page is a page that provides a way for your visitors to contact you. It is a great way to help your visitors get in touch with you and ask questions.', 'progress-planner' );
+ \esc_html_e( 'A Contact page makes it easy for visitors, customers, and potential partners to reach you. Include a contact form, email address, or other ways people can get in touch.', 'progress-planner' );
+ echo '
';
+ echo '
';
+ \esc_html_e( 'You can set this page from the Sidebar on the Page Edit screen.', 'progress-planner' );
echo '
';
}
}
diff --git a/classes/suggested-tasks/providers/class-set-page-faq.php b/classes/suggested-tasks/providers/class-set-page-faq.php
index 001d2d5e2c..dca2f3e355 100644
--- a/classes/suggested-tasks/providers/class-set-page-faq.php
+++ b/classes/suggested-tasks/providers/class-set-page-faq.php
@@ -49,7 +49,10 @@ protected function get_title() {
*/
public function print_popover_instructions() {
echo '
';
- \esc_html_e( 'The FAQ page is a page that provides answers to frequently asked questions about your website. It is a great way to help your visitors find the information they need quickly and easily.', 'progress-planner' );
+ \esc_html_e( 'An FAQ page answers common questions your visitors have, saving them time and reducing your support workload. It also helps with SEO by targeting long-tail search queries.', 'progress-planner' );
+ echo '
';
+ echo '
';
+ \esc_html_e( 'You can set this page from the Sidebar on the Page Edit screen.', 'progress-planner' );
echo '
';
}
}
From 9e20cd40810a62f547ada00e40275ff591802dba Mon Sep 17 00:00:00 2001
From: Filip Ilic
Date: Fri, 12 Dec 2025 15:50:20 +0100
Subject: [PATCH 7/9] adjust description again
---
classes/suggested-tasks/providers/class-set-page-about.php | 2 +-
classes/suggested-tasks/providers/class-set-page-contact.php | 2 +-
classes/suggested-tasks/providers/class-set-page-faq.php | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/classes/suggested-tasks/providers/class-set-page-about.php b/classes/suggested-tasks/providers/class-set-page-about.php
index 738614233a..fbf9aa8d66 100644
--- a/classes/suggested-tasks/providers/class-set-page-about.php
+++ b/classes/suggested-tasks/providers/class-set-page-about.php
@@ -49,7 +49,7 @@ protected function get_title() {
*/
public function print_popover_instructions() {
echo '
';
- \esc_html_e( 'Your About page tells visitors who you are, what you do, and why they should trust you. Share your story, mission, and the people behind your website to build a personal connection with your audience.', 'progress-planner' );
+ \esc_html_e( 'Your About page tells your story. It tells your visitors who you are, what your business is, and why your website exists. It humanizes your business by telling visitors about yourself and your team.', 'progress-planner' );
echo '
';
echo '
';
\esc_html_e( 'You can set this page from the Sidebar on the Page Edit screen.', 'progress-planner' );
diff --git a/classes/suggested-tasks/providers/class-set-page-contact.php b/classes/suggested-tasks/providers/class-set-page-contact.php
index ab4b743182..235a0e6fc7 100644
--- a/classes/suggested-tasks/providers/class-set-page-contact.php
+++ b/classes/suggested-tasks/providers/class-set-page-contact.php
@@ -49,7 +49,7 @@ protected function get_title() {
*/
public function print_popover_instructions() {
echo '
';
- \esc_html_e( 'A Contact page makes it easy for visitors, customers, and potential partners to reach you. Include a contact form, email address, or other ways people can get in touch.', 'progress-planner' );
+ \esc_html_e( 'A strong contact page is essential for capturing leads and enhancing customer service.', 'progress-planner' );
echo '
';
echo '
';
\esc_html_e( 'You can set this page from the Sidebar on the Page Edit screen.', 'progress-planner' );
diff --git a/classes/suggested-tasks/providers/class-set-page-faq.php b/classes/suggested-tasks/providers/class-set-page-faq.php
index dca2f3e355..20f0e1c336 100644
--- a/classes/suggested-tasks/providers/class-set-page-faq.php
+++ b/classes/suggested-tasks/providers/class-set-page-faq.php
@@ -49,7 +49,7 @@ protected function get_title() {
*/
public function print_popover_instructions() {
echo '
';
- \esc_html_e( 'An FAQ page answers common questions your visitors have, saving them time and reducing your support workload. It also helps with SEO by targeting long-tail search queries.', 'progress-planner' );
+ \esc_html_e( 'An FAQ page is essential for quickly answering your visitors’ most common questions. It’s beneficial for e-commerce sites, where customers frequently have questions about products, orders, and return policies.', 'progress-planner' );
echo '
';
echo '
';
\esc_html_e( 'You can set this page from the Sidebar on the Page Edit screen.', 'progress-planner' );
From a848013a37bcb96b4c7a57b360489a3f799e974e Mon Sep 17 00:00:00 2001
From: Filip Ilic
Date: Mon, 15 Dec 2025 11:56:55 +0100
Subject: [PATCH 8/9] remove "Settings page" & "Fill in the settings page" task
---
assets/css/settings-page.css | 350 ------------------
assets/js/settings-page.js | 94 -----
classes/admin/class-enqueue.php | 4 +-
classes/admin/class-page-settings.php | 74 ----
classes/admin/class-page.php | 21 +-
.../suggested-tasks/class-tasks-manager.php | 2 -
.../providers/class-set-page-task.php | 2 +-
.../class-set-valuable-post-types.php | 21 --
.../providers/class-settings-saved.php | 88 -----
classes/utils/class-deprecations.php | 1 -
.../test-class-admin-page-settings.php | 46 ---
tests/phpunit/test-class-disable-comments.php | 2 +-
.../test-class-search-engine-visibility.php | 2 +-
tests/phpunit/test-class-settings-saved.php | 32 --
views/admin-page-settings.php | 48 ---
views/page-settings/pages.php | 33 --
views/page-settings/post-types.php | 52 ---
views/page-settings/settings.php | 38 --
18 files changed, 6 insertions(+), 904 deletions(-)
delete mode 100644 assets/css/settings-page.css
delete mode 100644 assets/js/settings-page.js
delete mode 100644 classes/suggested-tasks/providers/class-settings-saved.php
delete mode 100644 tests/phpunit/test-class-settings-saved.php
delete mode 100644 views/admin-page-settings.php
delete mode 100644 views/page-settings/pages.php
delete mode 100644 views/page-settings/post-types.php
delete mode 100644 views/page-settings/settings.php
diff --git a/assets/css/settings-page.css b/assets/css/settings-page.css
deleted file mode 100644
index a5a1ebb46b..0000000000
--- a/assets/css/settings-page.css
+++ /dev/null
@@ -1,350 +0,0 @@
-/* stylelint-disable-next-line selector-class-pattern */
-.progress-planner_page_progress-planner-settings {
-
- #wpwrap {
- background-color: var(--prpl-background);
- }
-
- ul#adminmenu {
-
- a.wp-has-current-submenu,
- > li.current > a.current {
-
- &::after {
- border-right-color: var(--prpl-background) !important;
- }
- }
- }
-
- .prpl-settings-wrap {
-
- h1 {
- display: flex;
- align-items: center;
- padding: 1.2rem;
- margin-bottom: 2rem;
-
- span {
- font-weight: 600;
- }
- }
-
- #prpl-settings {
-
- .prpl-widget-wrapper {
- padding: var(--prpl-settings-page-gap) var(--prpl-settings-page-gap) 2rem var(--prpl-settings-page-gap);
- }
- }
- }
-
- .prpl-settings-form-wrap {
- background-color: var(--prpl-background-paper);
-
- border: 1px solid var(--prpl-color-border);
- border-radius: var(--prpl-border-radius);
- padding: var(--prpl-padding);
- box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.07), -2px 0 6px rgba(0, 0, 0, 0.07);
- }
-
- .prpl-settings-section-wrapper {
- border: 1px solid var(--prpl-color-border);
- border-radius: var(--prpl-border-radius);
- padding: var(--prpl-padding);
- flex-grow: 1;
- }
-
- .prpl-settings-section-title {
- display: flex;
- align-items: center;
- gap: 0.5rem;
- background: var(--prpl-background-monthly);
- padding: 1.2rem;
- border-radius: 0.5rem;
- margin-bottom: var(--prpl-padding);
-
- &:first-child {
- margin-top: 0;
- }
-
- .icon {
- width: 1.25em;
- height: 1.25em;
- }
- }
-
- .prpl-pages-item {
- border: 1px solid var(--prpl-color-border);
- border-radius: var(--prpl-border-radius);
- padding: var(--prpl-padding);
- flex-grow: 1;
- width: 45%;
-
- &:has(input[type="radio"][value="yes"]:checked),
- &:has(input[type="radio"][value="no"]:checked) {
-
- h3 {
-
- .icon-exclamation-circle {
- display: block;
- }
-
- .icon-check-circle {
- display: none;
- }
- }
- }
-
- &:has(option[value=""]:not(:checked)):has(input[type="radio"][value="yes"]:checked),
- &:has(input[type="radio"][value="not-applicable"]:checked) {
-
- h3 {
-
- .icon-check-circle {
- display: block;
- }
-
- .icon-exclamation-circle {
- display: none;
- }
- }
- }
-
- .item-actions,
- .prpl-select-page {
- display: flex;
- align-items: center;
- gap: 1rem;
- }
-
- .remind-button,
- .assign-button {
-
- svg {
- width: 1rem;
- height: 1rem;
- }
- }
-
- h3 {
- font-size: 1.15rem;
- margin: 0;
-
- display: flex;
- align-items: center;
- gap: 0.5rem;
-
- .icon {
- width: 1em;
- height: 1em;
- display: none;
- }
- }
-
- p {
- margin-block-start: 0.5rem;
- margin-block-end: 1rem;
- }
-
- .radios {
- margin-bottom: 1rem;
- }
-
- .prpl-radio-wrapper {
- display: flex;
- justify-content: space-between;
- align-items: center;
-
- [data-action="select"],
- [data-action="create"] {
- visibility: hidden;
- }
-
- &:has(input[type="radio"]:checked) {
-
- [data-action="select"],
- [data-action="create"] {
- visibility: visible;
- }
- }
-
- &:has(input[type="radio"][value="not-applicable"]) {
- padding-top: 0.25rem; /* Add bit height, because we dont have button or select */
- }
- }
- }
-
- .prpl-column-pages {
- margin-bottom: var(--prpl-gap);
-
- .prpl-settings-section-title {
- background: var(--prpl-background-setting-pages);
-
- .icon {
-
- path {
- fill: var(--prpl-color-setting-pages-icon);
- }
- }
- }
- }
-
- .prpl-pages-list {
- display: flex;
- flex-wrap: wrap;
- gap: var(--prpl-settings-page-gap);
-
- .item-description {
-
- h3 {
- margin-bottom: 2rem;
- }
-
- & > p {
- display: none;
- }
- }
-
- .radios {
- display: flex;
- flex-direction: column;
- gap: 0.5rem;
- }
- }
-
- .prpl-button-link {
- color: var(--prpl-color-gray-7);
- text-decoration: none;
- border: 1px solid var(--prpl-color-border);
- border-radius: var(--prpl-border-radius);
- padding: 0.5em 0.5em;
- font-size: 14px; /* It matches font size, which comes from Core */
- display: inline-flex;
-
- &:hover,
- &:focus {
- color: var(--prpl-color-link);
- border-color: var(--prpl-color-link);
- background-color: var(--prpl-background-content-badge);
- }
- }
-
- .radios {
- display: flex;
- gap: 3rem;
- }
-}
-
-/* Post types */
-.prpl-column-post-types {
-
- .prpl-settings-section-title {
-
- svg {
- color: var(--prpl-color-setting-posts-icon);
-
- path {
- fill: currentcolor;
- }
- }
-
- background-color: var(--prpl-background-setting-posts);
- }
-
-}
-
-/* Login destination */
-.prpl-column-login-destination {
-
- .prpl-settings-section-title {
-
- svg {
- color: var(--prpl-color-setting-login-icon);
- }
-
- background-color: var(--prpl-background-setting-login);
- }
-
-}
-
-/* Grid layout for wrapper for:
-- Valuable post types
-- Default login destination
-- License keys
-*/
-#prpl-grid-column-wrapper {
- display: grid;
- margin-bottom: var(--prpl-gap);
-
- /* There are 5 or less valuable post types */
- grid-template-columns: 1fr 1fr;
- grid-template-rows: auto auto;
- gap: var(--prpl-settings-page-gap);
-
- .prpl-column {
- align-self: stretch;
- display: flex;
- flex-direction: column;
-
- .prpl-widget-wrapper {
- flex: 1;
- margin-bottom: 0;
- }
- }
-
- /* Valuable post types */
- .prpl-column:nth-child(1) {
- grid-column: 1;
- grid-row: 1;
- }
-
- /* Default login destination */
- .prpl-column:nth-child(2) {
- grid-column: 2;
- grid-row: 1;
- }
-
- /* License keys */
- .prpl-column:nth-child(3) {
- grid-column: 1 / span 2;
- grid-row: 2;
- }
-
- /* We have more than 5 valuable post types */
- &:has([data-has-many-valuable-post-types]) {
- grid-template-rows: auto auto;
-
- /* Valuable post types */
- .prpl-column:nth-child(1) {
- grid-column: 1;
- grid-row: 1 / span 2;
-
- /* Span 2 rows on the left */
- }
-
- /* Default login destination */
- .prpl-column:nth-child(2) {
- grid-column: 2;
- grid-row: 1;
- }
-
- /* License keys */
- .prpl-column:nth-child(3) {
- grid-column: 2;
- grid-row: 2;
- }
- }
-}
-
-/* Valuable post types */
-#prpl-post-types-include-wrapper {
- padding-top: 0.75rem;
-
- label {
- display: block;
- margin-top: 0.75rem;
-
- &:first-child {
- margin-top: 0;
- }
- }
-}
diff --git a/assets/js/settings-page.js b/assets/js/settings-page.js
deleted file mode 100644
index d7a8134866..0000000000
--- a/assets/js/settings-page.js
+++ /dev/null
@@ -1,94 +0,0 @@
-/* global alert, prplDocumentReady */
-/*
- * Settings Page
- *
- * A script to handle the settings page.
- *
- * Dependencies: progress-planner/document-ready, wp-util
- */
-const prplTogglePageSelectorSettingVisibility = function ( page, value ) {
- const itemRadiosWrapperEl = document.querySelector(
- `.prpl-pages-item-${ page } .radios`
- );
-
- if ( ! itemRadiosWrapperEl ) {
- return;
- }
-
- // Show only create button.
- if ( 'no' === value || 'not-applicable' === value ) {
- // Hide wrapper.
- itemRadiosWrapperEl.querySelector(
- '.prpl-select-page'
- ).style.visibility = 'hidden';
- }
-
- // Show only select and edit button.
- if ( 'yes' === value ) {
- // Show wrapper.
- itemRadiosWrapperEl.querySelector(
- '.prpl-select-page'
- ).style.visibility = 'visible';
- }
-};
-
-prplDocumentReady( function () {
- document
- .querySelectorAll( 'input[type="radio"][data-page]' )
- .forEach( function ( radio ) {
- const page = radio.getAttribute( 'data-page' ),
- value = radio.value;
-
- if ( radio ) {
- // Show/hide the page selector setting if radio is checked.
- if ( radio.checked ) {
- prplTogglePageSelectorSettingVisibility( page, value );
- }
-
- // Add listeners for all radio buttons.
- radio.addEventListener( 'change', function () {
- prplTogglePageSelectorSettingVisibility( page, value );
- } );
- }
- } );
-} );
-
-/**
- * Handle the form submission.
- */
-prplDocumentReady( function () {
- const prplFormSubmit = function ( event ) {
- event.preventDefault();
- const formData = new FormData(
- document.getElementById( 'prpl-settings' )
- );
- const data = {
- action: 'prpl_settings_form',
- };
- formData.forEach( function ( value, key ) {
- // Handle array notation in keys
- if ( key.endsWith( '[]' ) ) {
- const baseKey = key.slice( 0, -2 );
- if ( ! data[ baseKey ] ) {
- data[ baseKey ] = [];
- }
- data[ baseKey ].push( value );
- } else {
- data[ key ] = value;
- }
- } );
- const request = wp.ajax.post( 'prpl_settings_form', data );
- request.done( function () {
- window.location.reload();
- } );
- request.fail( function ( response ) {
- alert( response.licensingError || response ); // eslint-disable-line no-alert
- } );
- };
- document
- .getElementById( 'prpl-settings-submit' )
- .addEventListener( 'click', prplFormSubmit );
- document
- .getElementById( 'prpl-settings' )
- .addEventListener( 'submit', prplFormSubmit );
-} );
diff --git a/classes/admin/class-enqueue.php b/classes/admin/class-enqueue.php
index 9b48aeff19..e2635bca98 100644
--- a/classes/admin/class-enqueue.php
+++ b/classes/admin/class-enqueue.php
@@ -425,8 +425,8 @@ public function maybe_empty_session_storage() {
return;
}
- // Inject the script only on the Progress Planner Dashboard, Progress Planner Settings and the WordPress dashboard pages.
- if ( 'toplevel_page_progress-planner' !== $screen->id && 'progress-planner_page_progress-planner-settings' !== $screen->id && 'dashboard' !== $screen->id ) {
+ // Inject the script only on the Progress Planner Dashboard and the WordPress dashboard pages.
+ if ( 'toplevel_page_progress-planner' !== $screen->id && 'dashboard' !== $screen->id ) {
return;
}
?>
diff --git a/classes/admin/class-page-settings.php b/classes/admin/class-page-settings.php
index f9454a076d..891cefc3af 100644
--- a/classes/admin/class-page-settings.php
+++ b/classes/admin/class-page-settings.php
@@ -14,42 +14,6 @@
*/
class Page_Settings {
- /**
- * Constructor.
- */
- public function __construct() {
- // Add the admin menu page.
- \add_action( 'admin_menu', [ $this, 'add_admin_menu_page' ] );
-
- // Add AJAX hooks to save options.
- \add_action( 'wp_ajax_prpl_settings_form', [ $this, 'store_settings_form_options' ] );
- }
-
- /**
- * Add admin-menu page, as a submenu in the progress-planner menu.
- *
- * @return void
- */
- public function add_admin_menu_page() {
- \add_submenu_page(
- 'progress-planner',
- \esc_html__( 'Settings', 'progress-planner' ),
- \esc_html__( 'Settings', 'progress-planner' ),
- 'manage_options',
- 'progress-planner-settings',
- [ $this, 'add_admin_page_content' ]
- );
- }
-
- /**
- * Add content to the admin page of the free plugin.
- *
- * @return void
- */
- public function add_admin_page_content() {
- require_once PROGRESS_PLANNER_DIR . '/views/admin-page-settings.php';
- }
-
/**
* Get an array of settings.
*
@@ -123,44 +87,6 @@ public function should_show_setting( $page_type ) {
return true;
}
- /**
- * Store the settings form options.
- *
- * @return void
- */
- public function store_settings_form_options() {
-
- if ( ! \current_user_can( 'manage_options' ) ) {
- \wp_send_json_error( [ 'message' => \esc_html__( 'You do not have permission to update settings.', 'progress-planner' ) ] );
- }
-
- // Use check_ajax_referer instead of check_admin_referer for AJAX handlers.
- // check_admin_referer is designed for form submissions, not AJAX requests.
- if ( ! \check_ajax_referer( 'progress_planner', 'nonce', false ) ) {
- \wp_send_json_error( [ 'message' => \esc_html__( 'Invalid nonce.', 'progress-planner' ) ] );
- }
-
- if ( isset( $_POST['pages'] ) ) {
- // Sanitize the pages array at point of reception.
- $pages = \map_deep( \wp_unslash( $_POST['pages'] ), 'sanitize_text_field' ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
-
- $this->set_page_values( $pages );
- }
-
- // It's possible that none of the post types are selected, so we need to handle that case.
- $post_types = isset( $_POST['prpl-post-types-include'] )
- ? \array_map( 'sanitize_text_field', \wp_unslash( $_POST['prpl-post-types-include'] ) ) // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.NonceVerification.Missing
- : [];
-
- $this->save_post_types( $post_types );
-
- $this->save_settings();
-
- \do_action( 'progress_planner_settings_form_options_stored' );
-
- \wp_send_json_success( \esc_html__( 'Options stored successfully', 'progress-planner' ) );
- }
-
/**
* Set the page value.
*
diff --git a/classes/admin/class-page.php b/classes/admin/class-page.php
index e2b662e7e2..b4424fb24a 100644
--- a/classes/admin/class-page.php
+++ b/classes/admin/class-page.php
@@ -157,7 +157,7 @@ public function render_page() {
*/
public function enqueue_assets( $hook ) {
$this->maybe_enqueue_focus_el_script( $hook );
- if ( 'toplevel_page_progress-planner' !== $hook && 'progress-planner_page_progress-planner-settings' !== $hook ) {
+ if ( 'toplevel_page_progress-planner' !== $hook ) {
return;
}
@@ -204,20 +204,6 @@ public function enqueue_scripts() {
\progress_planner()->get_admin__enqueue()->enqueue_script( 'external-link-accessibility-helper' );
}
-
- if ( 'progress-planner_page_progress-planner-settings' === $current_screen->id ) {
- \progress_planner()->get_admin__enqueue()->enqueue_script(
- 'settings-page',
- [
- 'name' => 'progressPlannerSettingsPage',
- 'data' => [
- 'siteUrl' => \get_site_url(),
- ],
- ]
- );
-
- \progress_planner()->get_admin__enqueue()->enqueue_script( 'external-link-accessibility-helper' );
- }
}
/**
@@ -305,10 +291,6 @@ public function enqueue_styles() {
\progress_planner()->get_admin__enqueue()->enqueue_style( 'progress-planner/web-components/prpl-tooltip' );
\progress_planner()->get_admin__enqueue()->enqueue_style( 'progress-planner/web-components/prpl-install-plugin' );
- if ( 'progress-planner_page_progress-planner-settings' === $current_screen->id ) {
- \progress_planner()->get_admin__enqueue()->enqueue_style( 'progress-planner/settings-page' );
- }
-
if ( 'toplevel_page_progress-planner' === $current_screen->id ) {
// Enqueue ugprading (onboarding) tasks styles, these are needed both when privacy policy is accepted and when it is not.
\progress_planner()->get_admin__enqueue()->enqueue_style( 'progress-planner/upgrade-tasks' );
@@ -338,7 +320,6 @@ public function remove_admin_notices() {
$current_screen->id,
[
'toplevel_page_progress-planner',
- 'progress-planner_page_progress-planner-settings',
],
true
) ) {
diff --git a/classes/suggested-tasks/class-tasks-manager.php b/classes/suggested-tasks/class-tasks-manager.php
index 1a9082ed89..880e5223e2 100644
--- a/classes/suggested-tasks/class-tasks-manager.php
+++ b/classes/suggested-tasks/class-tasks-manager.php
@@ -11,7 +11,6 @@
use Progress_Planner\Suggested_Tasks\Providers\Content_Create;
use Progress_Planner\Suggested_Tasks\Providers\Content_Review;
use Progress_Planner\Suggested_Tasks\Providers\Blog_Description;
-use Progress_Planner\Suggested_Tasks\Providers\Settings_Saved;
use Progress_Planner\Suggested_Tasks\Providers\Debug_Display;
use Progress_Planner\Suggested_Tasks\Providers\Disable_Comments;
use Progress_Planner\Suggested_Tasks\Providers\Disable_Comment_Pagination;
@@ -66,7 +65,6 @@ public function __construct() {
new Content_Review(),
new Core_Update(),
new Blog_Description(),
- new Settings_Saved(),
new Debug_Display(),
new Disable_Comments(),
new Disable_Comment_Pagination(),
diff --git a/classes/suggested-tasks/providers/class-set-page-task.php b/classes/suggested-tasks/providers/class-set-page-task.php
index fe2624b8f8..27e8899675 100644
--- a/classes/suggested-tasks/providers/class-set-page-task.php
+++ b/classes/suggested-tasks/providers/class-set-page-task.php
@@ -24,7 +24,7 @@ abstract class Set_Page_Task extends Tasks_Interactive {
*
* @var int
*/
- protected $priority = 3;
+ protected $priority = 10;
/**
* Whether the generic script has been enqueued.
diff --git a/classes/suggested-tasks/providers/class-set-valuable-post-types.php b/classes/suggested-tasks/providers/class-set-valuable-post-types.php
index e54233acb4..8cc61a9c76 100644
--- a/classes/suggested-tasks/providers/class-set-valuable-post-types.php
+++ b/classes/suggested-tasks/providers/class-set-valuable-post-types.php
@@ -47,22 +47,12 @@ class Set_Valuable_Post_Types extends Tasks_Interactive {
*/
protected $priority = 70;
- /**
- * Get the task URL.
- *
- * @return string
- */
- protected function get_url() {
- return \admin_url( 'admin.php?page=progress-planner-settings' );
- }
-
/**
* Initialize the task provider.
*
* @return void
*/
public function init() {
- \add_action( 'progress_planner_settings_form_options_stored', [ $this, 'remove_upgrade_option' ] );
\add_action( 'wp_ajax_prpl_interactive_task_submit_set-valuable-post-types', [ $this, 'handle_interactive_task_specific_submit' ] );
// On late init hook we need to check if the public post types are changed.
@@ -118,17 +108,6 @@ public function check_public_post_types() {
\progress_planner()->get_suggested_tasks_db()->add( $this->modify_injection_task_data( $this->get_task_details() ) );
}
- /**
- * Remove the upgrade option.
- *
- * @return void
- */
- public function remove_upgrade_option() {
- if ( true === (bool) \get_option( 'progress_planner_set_valuable_post_types', false ) ) {
- \delete_option( 'progress_planner_set_valuable_post_types' );
- }
- }
-
/**
* Get the title.
*
diff --git a/classes/suggested-tasks/providers/class-settings-saved.php b/classes/suggested-tasks/providers/class-settings-saved.php
deleted file mode 100644
index 5fe62f14cf..0000000000
--- a/classes/suggested-tasks/providers/class-settings-saved.php
+++ /dev/null
@@ -1,88 +0,0 @@
-get_settings()->get( 'include_post_types' );
- }
-
- /**
- * Add task actions specific to this task.
- *
- * @param array $data The task data.
- * @param array $actions The existing actions.
- *
- * @return array
- */
- public function add_task_actions( $data = [], $actions = [] ) {
- $actions[] = [
- 'priority' => 10,
- 'html' => '' . \esc_html__( 'Go to the settings page', 'progress-planner' ) . '',
- ];
-
- return $actions;
- }
-}
diff --git a/classes/utils/class-deprecations.php b/classes/utils/class-deprecations.php
index b072229003..656ce4dc29 100644
--- a/classes/utils/class-deprecations.php
+++ b/classes/utils/class-deprecations.php
@@ -81,7 +81,6 @@ class Deprecations {
'Progress_Planner\Suggested_Tasks\Local_Tasks\Providers\One_Time\Sample_Page' => [ 'Progress_Planner\Suggested_Tasks\Providers\Sample_Page', '1.4.0' ],
'Progress_Planner\Suggested_Tasks\Local_Tasks\Providers\One_Time\Search_Engine_Visibility' => [ 'Progress_Planner\Suggested_Tasks\Providers\Search_Engine_Visibility', '1.4.0' ],
'Progress_Planner\Suggested_Tasks\Local_Tasks\Providers\One_Time\Set_Valuable_Post_Types' => [ 'Progress_Planner\Suggested_Tasks\Providers\Set_Valuable_Post_Types', '1.4.0' ],
- 'Progress_Planner\Suggested_Tasks\Local_Tasks\Providers\One_Time\Settings_Saved' => [ 'Progress_Planner\Suggested_Tasks\Providers\Settings_Saved', '1.4.0' ],
'Progress_Planner\Suggested_Tasks\Local_Tasks\Providers\One_Time\Site_Icon' => [ 'Progress_Planner\Suggested_Tasks\Providers\Site_Icon', '1.4.0' ],
'Progress_Planner\Suggested_Tasks\Local_Tasks\Providers\Repetitive\Core_Update' => [ 'Progress_Planner\Suggested_Tasks\Providers\Core_Update', '1.4.0' ],
'Progress_Planner\Suggested_Tasks\Local_Tasks\Providers\Repetitive\Create' => [ 'Progress_Planner\Suggested_Tasks\Providers\Repetitive\Create', '1.4.0' ],
diff --git a/tests/phpunit/test-class-admin-page-settings.php b/tests/phpunit/test-class-admin-page-settings.php
index 80609e7563..d1feac7679 100644
--- a/tests/phpunit/test-class-admin-page-settings.php
+++ b/tests/phpunit/test-class-admin-page-settings.php
@@ -31,32 +31,6 @@ public function setUp(): void {
$this->page_settings_instance = new Page_Settings();
}
- /**
- * Test constructor registers hooks.
- *
- * @return void
- */
- public function test_constructor_registers_hooks() {
- $this->assertNotFalse( \has_action( 'admin_menu', [ $this->page_settings_instance, 'add_admin_menu_page' ] ) );
- $this->assertNotFalse( \has_action( 'wp_ajax_prpl_settings_form', [ $this->page_settings_instance, 'store_settings_form_options' ] ) );
- }
-
- /**
- * Test add_admin_menu_page adds submenu page.
- *
- * @return void
- */
- public function test_add_admin_menu_page() {
- global $submenu;
- if ( ! isset( $submenu ) ) {
- $submenu = [];
- }
-
- $this->page_settings_instance->add_admin_menu_page();
-
- // Verify submenu was added.
- $this->assertTrue( true ); // Page registration verified via hook.
- }
/**
* Test get_settings returns array.
@@ -79,24 +53,4 @@ public function test_get_settings_includes_page_types() {
// Settings should be an array (may be empty if no page types).
$this->assertIsArray( $settings );
}
-
- /**
- * Test store_settings_form_options requires nonce.
- *
- * @return void
- */
- public function test_store_settings_form_options_requires_nonce() {
- // Set up user with manage_options capability.
- $user_id = $this->factory->user->create( [ 'role' => 'administrator' ] );
- \wp_set_current_user( $user_id );
-
- // Test without nonce.
- $_POST = [];
- $_POST['action'] = 'prpl_settings_form';
-
- // Should handle gracefully without nonce.
- $this->assertTrue( true ); // Verified by not throwing errors.
-
- \wp_set_current_user( 0 );
- }
}
diff --git a/tests/phpunit/test-class-disable-comments.php b/tests/phpunit/test-class-disable-comments.php
index aad5ebd645..5c0c0a17d7 100644
--- a/tests/phpunit/test-class-disable-comments.php
+++ b/tests/phpunit/test-class-disable-comments.php
@@ -1,6 +1,6 @@
get_settings()->set( 'include_post_types', [ 'post', 'page' ] );
- }
-}
diff --git a/views/admin-page-settings.php b/views/admin-page-settings.php
deleted file mode 100644
index 1f7fe5bed4..0000000000
--- a/views/admin-page-settings.php
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-