Markus Michalski FAQ

Priority Icons: Technical Details

How Priority Icons works: CSS and JavaScript injection via output buffer, text replacement in the browser, scanned areas, PJAX handling, accessibility and file structure.

Deutsche Version

Back to overview

Technical Details

Flow

graph TD
    A["Page is requested"] --> B{"AJAX request?"}
    B -->|"Yes"| C["No injection"]
    B -->|"No"| D{"Option enabled off?"}
    D -->|"Yes"| C
    D -->|"No"| E["ob_start with callback"]
    E --> F["Insert CSS, config and JS before end of head"]
    F --> G["Browser: scan containers for priority text"]
    G --> H["Replace text with icon"]
    H --> I["pjax:end or MutationObserver"]
    I -->|"New content"| G

Server side

Client side (JavaScript)

CSS

Security

File structure

The repository contains these files. Only plugin.php, class.PriorityIconsPlugin.php, config.php and assets/ are needed to run the plugin.

priority-icons/
+-- plugin.php                      # Plugin metadata
+-- class.PriorityIconsPlugin.php   # Plugin class
+-- config.php                      # Configuration form
+-- assets/
|   +-- .htaccess
|   +-- priority-icons.css          # Stylesheet
|   +-- priority-icons.js           # Replacement and PJAX handling
+-- README.md
+-- CHANGELOG.md
+-- CONTRIBUTING.md
+-- LICENSE
+-- docs/                           # ARCHITECTURE.md, CODE_REVIEW.md
+-- tests/                          # PHPUnit tests
+-- .github/workflows/ci.yml
+-- composer.json
+-- phpunit.xml
+-- .releaseinclude
+-- .gitignore