From 1027d2616182d969506c225a9793393d4f03068b Mon Sep 17 00:00:00 2001
From: Troy Chaplin <15524465+troychaplin@users.noreply.github.com>
Date: Sun, 15 Sep 2024 23:53:14 -0400
Subject: [PATCH] Develop (#40)
* Feature/settings page (#34)
* refactor: functions location
* upgrade: dependencies
* add: setting page
* add: assets and styles for settings page
* Feature/check type options (#35)
* change: error vs warning
* add: warning on heading, error on image
* change: build update
* change: functions relating to options
* add: clean build folder
* add: blocks and functions in array
* add: block check values in php and js
* change: build files
* change: heading checks
* fix: error vs warning for invalidations
* change: updated error component
* change: image check and global block check
* add: button check
* Feature/cleanup (#36)
* add: php docs
* add: singleton for block config
* add: js docs to block checks
* add: js docs to block mods
* finish: adding code docs
* change: update readme.txt
* Feature/styles (#37)
* change: editor error and warning styles
* finish: styles
* upgrade: package lock
* Fix/plugin check (#38)
* fix: version mismatch
* fix: error in plugin check
* change: description
* change: removed button check for now (#39)
* change: version tags to 1.0.0
---
Functions/BlockConfig.php | 71 +
Functions/ScriptsStyles.php | 139 ++
Functions/SettingsPage.php | 192 ++
Functions/Translations.php | 60 +
README.md | 49 +-
assets/screenshot-1.png | Bin 0 -> 285907 bytes
assets/screenshot-2.png | Bin 0 -> 279196 bytes
assets/screenshot-3.png | Bin 0 -> 105907 bytes
block-accessibility-checks.php | 80 +-
build/block-admin-rtl.css | 1 +
build/block-admin.asset.php | 1 +
build/block-admin.css | 1 +
build/block-admin.js | 0
build/block-checks-rtl.css | 2 +-
build/block-checks.asset.php | 2 +-
build/block-checks.css | 2 +-
build/block-checks.js | 2 +-
composer.json | 2 +-
package-lock.json | 2566 +++++++++-----------
package.json | 28 +-
readme.txt | 79 +-
src/ScriptsAndStyles.php | 60 -
src/Translations.php | 26 -
src/admin.js | 1 +
src/admin.scss | 1 +
src/script.js | 6 +-
src/scripts/blockChecks/checkButton.js | 33 -
src/scripts/blockChecks/checkHeading.js | 44 +-
src/scripts/blockChecks/checkImage.js | 44 +-
src/scripts/blockChecks/checkTable.js | 44 +-
src/scripts/blockMods/imageAttr.js | 14 +-
src/scripts/helpers/blockErrorComponent.js | 126 +-
src/scripts/helpers/blockInvalidation.js | 13 +-
src/scripts/helpers/getInvalidBlocks.js | 5 +
src/scripts/registerPlugin.js | 2 -
src/styles.scss | 2 +
src/styles/error.css | 38 -
src/styles/error.scss | 42 +
src/styles/settings.scss | 73 +
src/styles/warning.scss | 38 +
vendor/composer/autoload_psr4.php | 2 +-
vendor/composer/autoload_static.php | 17 +-
vendor/composer/installed.php | 12 +-
webpack.config.js | 1 +
44 files changed, 2103 insertions(+), 1818 deletions(-)
create mode 100644 Functions/BlockConfig.php
create mode 100644 Functions/ScriptsStyles.php
create mode 100644 Functions/SettingsPage.php
create mode 100644 Functions/Translations.php
create mode 100644 assets/screenshot-1.png
create mode 100644 assets/screenshot-2.png
create mode 100644 assets/screenshot-3.png
create mode 100644 build/block-admin-rtl.css
create mode 100644 build/block-admin.asset.php
create mode 100644 build/block-admin.css
create mode 100644 build/block-admin.js
delete mode 100644 src/ScriptsAndStyles.php
delete mode 100644 src/Translations.php
create mode 100644 src/admin.js
create mode 100644 src/admin.scss
delete mode 100644 src/scripts/blockChecks/checkButton.js
create mode 100644 src/styles.scss
delete mode 100644 src/styles/error.css
create mode 100644 src/styles/error.scss
create mode 100644 src/styles/settings.scss
create mode 100644 src/styles/warning.scss
diff --git a/Functions/BlockConfig.php b/Functions/BlockConfig.php
new file mode 100644
index 0000000..79dbc4a
--- /dev/null
+++ b/Functions/BlockConfig.php
@@ -0,0 +1,71 @@
+blockConfig = [
+ [
+ 'function_name' => 'renderCoreHeadingOptions',
+ 'option_name' => 'coreHeadingBlockCheck',
+ 'block_label' => esc_html__('Heading', 'block-accessibility-checks'),
+ ],
+ [
+ 'function_name' => 'renderCoreImageOptions',
+ 'option_name' => 'coreImageBlockCheck',
+ 'block_label' => esc_html__('Image', 'block-accessibility-checks'),
+ ],
+ [
+ 'function_name' => 'renderCoreTableOptions',
+ 'option_name' => 'coreTableBlockCheck',
+ 'block_label' => esc_html__('Table', 'block-accessibility-checks'),
+ ],
+ ];
+ }
+
+ /**
+ * Retrieves the singleton instance of the BlockConfig class.
+ *
+ * @return BlockConfig The singleton instance.
+ */
+ public static function getInstance()
+ {
+ if (self::$instance === null) {
+ self::$instance = new self();
+ }
+
+ return self::$instance;
+ }
+
+ /**
+ * Retrieves the block configuration.
+ *
+ * This method returns the cached block configuration array.
+ *
+ * @return array The block configuration.
+ */
+ public function getBlockConfig()
+ {
+ return $this->blockConfig;
+ }
+}
diff --git a/Functions/ScriptsStyles.php b/Functions/ScriptsStyles.php
new file mode 100644
index 0000000..0377e0b
--- /dev/null
+++ b/Functions/ScriptsStyles.php
@@ -0,0 +1,139 @@
+pluginFile = $pluginFile;
+ $this->translations = $translations;
+ }
+
+ /**
+ * Enqueues the assets for the block.
+ *
+ * This method is responsible for enqueueing the necessary scripts and styles for the block.
+ * It sets up script translations and then calls the methods to enqueue the block scripts and styles.
+ *
+ * @return void
+ */
+ public function enqueueBlockAssets()
+ {
+ $script_handle = 'block-accessibility-script';
+ $this->translations->setupScriptTranslations($script_handle);
+
+ $this->enqueueBlockScripts();
+ $this->enqueueBlockStyles();
+ }
+
+ /**
+ * Enqueues the admin assets.
+ *
+ * This method is responsible for enqueueing the necessary scripts and styles for the admin area.
+ * It sets up script translations and enqueues admin styles.
+ *
+ * @return void
+ */
+ public function enqueueAdminAssets()
+ {
+ $script_handle = 'block-accessibility-script';
+ $this->translations->setupScriptTranslations($script_handle);
+
+ $this->enqueueAdminStyles();
+ }
+
+ /**
+ * Enqueues the block scripts for the plugin.
+ *
+ * This function is responsible for enqueueing the necessary JavaScript scripts for the plugin's blocks.
+ * It registers the script handle, script path, dependencies, version, and localization data.
+ *
+ * @access private
+ * @return void
+ */
+ private function enqueueBlockScripts()
+ {
+ $script_path = 'build/block-checks.js';
+ $script_handle = 'block-accessibility-script';
+
+ wp_enqueue_script(
+ $script_handle,
+ plugins_url($script_path, $this->pluginFile),
+ ['wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor'],
+ BLOCK_ACCESSIBILITY_VERSION, // Use the constant here
+ true
+ );
+
+ /**
+ * Retrieves the block checks options from the database.
+ *
+ * @return array The block checks options.
+ */
+ $block_checks_options = get_option('block_checks_options', []);
+
+ wp_localize_script(
+ $script_handle,
+ 'BlockAccessibilityChecks',
+ array(
+ 'blockChecksOptions' => $block_checks_options,
+ 'blocks' => BlockConfig::getInstance()->getBlockConfig(),
+ )
+ );
+ }
+
+ /**
+ * Enqueues the block styles.
+ *
+ * This function is responsible for enqueueing the block styles for the plugin.
+ * It uses the `wp_enqueue_style` function to enqueue the styles.
+ *
+ * @access private
+ * @return void
+ */
+ private function enqueueBlockStyles()
+ {
+ $style_path = 'build/block-checks.css';
+ wp_enqueue_style(
+ 'block-checks-style',
+ plugins_url($style_path, $this->pluginFile),
+ [],
+ BLOCK_ACCESSIBILITY_VERSION
+ );
+ }
+
+ /**
+ * Enqueues the admin styles for the block accessibility checks.
+ *
+ * This function is responsible for enqueueing the admin styles for the block accessibility checks.
+ * It uses the `wp_enqueue_style` function to enqueue the 'block-checks-admin' style.
+ *
+ * @access private
+ */
+ private function enqueueAdminStyles()
+ {
+ $style_path = 'build/block-admin.css';
+ wp_enqueue_style(
+ 'block-checks-admin',
+ plugins_url($style_path, $this->pluginFile),
+ [],
+ BLOCK_ACCESSIBILITY_VERSION
+ );
+ }
+}
diff --git a/Functions/SettingsPage.php b/Functions/SettingsPage.php
new file mode 100644
index 0000000..8c1c1f4
--- /dev/null
+++ b/Functions/SettingsPage.php
@@ -0,0 +1,192 @@
+getBlockConfig();
+
+ /**
+ * Adds settings fields for each block in the block configuration.
+ *
+ * @param array $blockConfig The array containing the block configuration.
+ * @return void
+ */
+ foreach ($blockConfig as $block) {
+ add_settings_field(
+ $block['option_name'],
+ $block['block_label'],
+ array($this, $block['function_name']),
+ 'block_checks_options',
+ 'block_checks_options_section'
+ );
+ }
+ }
+
+ /**
+ * Renders the settings page layout.
+ *
+ * This method is responsible for rendering the settings page layout for the plugin. It checks if the current user has sufficient permissions to access the page and displays an error message if not. It then outputs the HTML markup for the settings form, including the options, sections, and submit button. Additionally, it displays information about the plugin and outputs the current block checks options using `print_r`.
+ *
+ * @return void
+ */
+ public function settingsPageLayout()
+ {
+ if (!current_user_can('manage_options')) {
+ wp_die(esc_html__('You do not have sufficient permissions to access this page.', 'block-accessibility-checks'));
+ }
+
+ echo '
' . "\n";
+ echo '
' . esc_html(get_admin_page_title()) . '
' . "\n";
+ echo '
' . "\n";
+ echo '
' . "\n";
+ }
+
+ /**
+ * Renders the block options for a given block option name and description.
+ *
+ * @param string $blockOptionName The name of the block option.
+ * @param string $description The description of the block option.
+ * @return void
+ */
+ private function renderBlockOptions($blockOptionName, $description)
+ {
+ $options = get_option('block_checks_options');
+ $value = isset($options[$blockOptionName]) ? $options[$blockOptionName] : 'error';
+
+ echo '';
+ }
+
+ /**
+ * Renders the core heading options on the settings page.
+ *
+ * This method is responsible for rendering the core heading options on the settings page.
+ * It calls the `renderBlockOptions` method with the appropriate parameters to display the options.
+ *
+ * @return void
+ */
+ public function renderCoreHeadingOptions()
+ {
+ $this->renderBlockOptions('coreHeadingBlockCheck', 'How strict do you want to be with the core/heading block?');
+ }
+
+ /**
+ * Renders the core image options on the settings page.
+ *
+ * This method is responsible for rendering the core image options on the settings page.
+ * It calls the `renderBlockOptions` method with the appropriate parameters to display the options.
+ *
+ * @return void
+ */
+ public function renderCoreImageOptions()
+ {
+ $this->renderBlockOptions('coreImageBlockCheck', 'How strict do you want to be with the core/image block?');
+ }
+
+ /**
+ * Renders the core table options on the settings page.
+ *
+ * This method is responsible for rendering the core table options on the settings page.
+ * It calls the `renderBlockOptions` method with the appropriate parameters to display the options.
+ *
+ * @return void
+ */
+ public function renderCoreTableOptions()
+ {
+ $this->renderBlockOptions('coreTableBlockCheck', 'How strict do you want to be with the core/table block?');
+ }
+}
diff --git a/Functions/Translations.php b/Functions/Translations.php
new file mode 100644
index 0000000..dca884c
--- /dev/null
+++ b/Functions/Translations.php
@@ -0,0 +1,60 @@
+pluginFile = $pluginFile;
+ $this->textDomain = $textDomain;
+ }
+
+ /**
+ * Loads the text domain for the plugin.
+ *
+ * This function loads the translation files for the plugin's text domain.
+ * It uses the WordPress function `load_plugin_textdomain()` to load the translation files.
+ *
+ * @return void
+ */
+ public function loadTextDomain()
+ {
+ load_plugin_textdomain($this->textDomain, false, dirname(plugin_basename($this->pluginFile)) . '/languages/');
+ }
+
+ /**
+ * Sets up translations for a script.
+ *
+ * This method sets up translations for a given script handle by calling the `wp_set_script_translations()` function.
+ * It takes the script handle, text domain, and the path to the languages directory as parameters.
+ *
+ * @param string $scriptHandle The handle of the script to set up translations for.
+ * @return void
+ */
+ public function setupScriptTranslations($scriptHandle)
+ {
+ wp_set_script_translations(
+ $scriptHandle,
+ $this->textDomain,
+ plugin_dir_path($this->pluginFile) . 'languages'
+ );
+ }
+}
diff --git a/README.md b/README.md
index a0e5f76..88e6aa8 100644
--- a/README.md
+++ b/README.md
@@ -4,43 +4,43 @@ Block Accessibility Checks is a WordPress plugin that helps ensures your content
## Features
-- **Real-time Accessibility Checks:** Automatically checks core block configurations as you edit content in the Gutenberg editor.
-- **Prevents Non-Compliant Publishing:** Blocks the publishing of content that fails to meet WCAG requirements.
-- **User-Friendly Notifications:** Provides clear and actionable feedback to help users fix accessibility issues.
+- **Real-time Accessibility Checks:** Automatically checks core block configurations as you edit content in the Gutenberg editor.
+- **Prevents Non-Compliant Publishing:** Blocks the publishing of content that fails to meet WCAG requirements.
+- **User-Friendly Notifications:** Provides clear and actionable feedback to help users fix accessibility issues.
## Installation
-- Upload the plugin files to the `/wp-content/plugins/`
-- Activate the plugin through the `Plugins` screen in WordPress
-- Start editing your content in the Gutenberg editor
+- Upload the plugin files to the `/wp-content/plugins/`
+- Activate the plugin through the `Plugins` screen in WordPress
+- Start editing your content in the Gutenberg editor
## Getting Involved
Open a terminal window and navigate to where you intend to setup the repo and do the following:
-- Install wp-env: `npm -g i @wordpress/env`
-- Clone the repo: `git clone https://github.com/troychaplin/block-accessibility-checks.git`
-- Navigate into the repo: `cd block-accessibility-checks`
-- Install dependencies: `npm install`
+- Install wp-env: `npm -g i @wordpress/env`
+- Clone the repo: `git clone https://github.com/troychaplin/block-accessibility-checks.git`
+- Navigate into the repo: `cd block-accessibility-checks`
+- Install dependencies: `npm install`
### Start Developing
This repo uses [@wordpress/env](https://github.com/WordPress/gutenberg/tree/HEAD/packages/env#readme) that setups up a local WordPress environment using Docker.
-- Make sure `Docker Desktop` is running
-- Start WordPress: `wp-env start`
+- Make sure `Docker Desktop` is running
+- Start WordPress: `wp-env start`
#### Other Commands
-- Stop WordPress: `wp-env stop`
-- Start watch task: `npm run start`
-- Build assets: `npm run build`
+- Stop WordPress: `wp-env stop`
+- Start watch task: `npm run start`
+- Build assets: `npm run build`
### Local Site Details
-- http://localhost:8888
-- User: `admin`
-- Password: `password`
+- http://localhost:8888
+- User: `admin`
+- Password: `password`
**Important:** when you're done working don't forget to stop the WordPress docker environment by running `npm run wp:down`
@@ -52,10 +52,9 @@ TODO: add git issue templates
The following is a list of checks that are happening on core blocks.
-| Block | Description |
-| ----- | ----------- |
-| core/button | Checks for text and link on each individual button |
-| core/heading | Prevents the usage of an level one heading in the content |
-| core/image | Checks for alternative text on an image |
-| core/image | Adds a toggle to confirm image use as decorative allowing for bypass a11y check |
-| core/table | Checks for a table header row on each individual table block |
\ No newline at end of file
+| Block | Description |
+| ------------ | ------------------------------------------------------------------------------- |
+| core/heading | Prevents the usage of an level one heading in the content |
+| core/image | Checks for alternative text on an image |
+| core/image | Adds a toggle to confirm image use as decorative allowing for bypass a11y check |
+| core/table | Checks for a table header row on each individual table block |
diff --git a/assets/screenshot-1.png b/assets/screenshot-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..2dd19f16a0f5f733e770252afc3aabab068c3427
GIT binary patch
literal 285907
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