-
Posts
112 -
Joined
-
Days Won
30
Everything posted by maximus
-
Hey everyone! Pushed a big update to WireWall today. The main addition is a dashboard module — install ProcessWireWall alongside the main module and you get a live stats page at Admin → Setup → WireWall. It shows blocked/allowed counts, a 24-hour chart, top block reasons, top countries, top IPs, active bans with countdown timers, and a recent events table. Works in both light and dark admin themes since it reads PW CSS variables. Also rewrote the settings page from scratch — went from 15+ scattered fieldsets down to 10 logical sections. City and subdivision blocking options now only show up if you actually have GeoLite2-City.mmdb installed, which cleans things up a lot. A few security fixes in this release too: proxy headers like CF-Connecting-IP are now validated against Cloudflare's published IP ranges before being trusted (previously any client could spoof them), unserialize() in the cache layer got hardened, and some overly broad AJAX bypass patterns were tightened up. Silent 404 mode now throws ProcessWire's native 404 page instead of plain text. GitHub: https://github.com/mxmsmnv/WireWall
-
❤️❤️❤️
-
this message from repo https://github.com/BernhardBaumrock/TemplatePreviewImages
-
Hey everyone! I'd like to share Start - a module that replaces the default ProcessWire admin home screen with a configurable personal dashboard. The problem it solves As your ProcessWire install grows, the Setup menu gets long - on smaller screens it overflows and you end up scrolling just to reach the tools you use every day. Start is the fix: think of it as the Windows Start button for your PW admin. Pin exactly what you need - modules, pages, whatever - and get to it in one click from the home screen. The result Features Two view modes - list and icon grid, preference saved per-browser Visual drag-and-drop editor at /setup/start/edit/ - reorder groups and links without page reloads Font Awesome 6 icons - 1887 icons with a searchable popup picker PagePicker - browse the full page tree directly from the URL field Example button - auto-populates with your installed Process modules and their FA icons Widget on the default admin home page Access control via start-dashboard permission Fully translated editor UI — 20 languages including RTL support for Hebrew and Arabic Supported languages English, Russian, German, French, Spanish, Polish, Ukrainian, Italian, Dutch, Portuguese, Chinese, Japanese, Turkish, Czech, Finnish, Korean, Hindi, Hebrew, Arabic, Hungarian. Installation Install like any other module — upload or place in /site/modules/, then install via Modules → Refresh. A Start item will appear under Setup in the admin menu. Make Start your admin home screen (optional) By default Start lives under Setup. To make it open whenever you click the admin logo or navigate to /admin/: Go to Pages in the admin menu Find the Admin page and click Edit In the Process field, select Start from the dropdown Save Links GitHub: https://github.com/mxmsmnv/Start
-
Rapid — EditorJS block editor fieldtype for ProcessWire
maximus replied to maximus's topic in Modules/Plugins
I tried integrating Columns, but it had issues with drag-and-drop blocks. So I released the beta version without it. The most important thing now is the stability of the beta version so we can move on to adding other features. Roadmap: Dark theme - there is a bug now, you need to change the reverse colors Localizing text in the editor so that it looks native on websites with a different language set in the admin panel Multilingual support - for example, for websites from Switzerland and Belgium, this is more relevant. Gallery (Slider) - the ability to upload multiple photos at once Textformatter support to allow connection to other text processors Columns plugin for adding column view If you know what works poorly or doesn't work at all, and would like to add something, I'd be happy to hear your suggestions! -
-
Late to the thread, but wanted to add a real-world data point. I run a spirits/wine catalog (~12,000 products) and a chocolate e-commerce store on ProcessWire. Both are in production and both have maintenance contracts attached. What I've found: the "update treadmill" problem simply doesn't exist with PW. Core updates are rare and painless. Module updates — same. That frees up retainer hours for things clients actually care about: new filters, catalog improvements, performance work. My maintenance plans now look like this: Backups + uptime monitoring (minimal time, easy to automate) A fixed block of hours for small improvements, content ops, or feature requests Reduced hourly rate for anything beyond that block The key insight for recurring revenue: clients with active e-commerce always have a backlog of small improvements. The retainer becomes a comfortable way for them to drain that backlog without opening a new project each time. For simpler marketing sites, the retainer is lighter but still justified by the "someone is watching this" peace of mind. SEO and analytics reporting also fit naturally into retainers — especially if you're running something like Plausible and can send a monthly digest.
-
The structure you want is actually slightly different from what Option #1 describes, but it's achievable. Option #1 assumes all sites share the same web root — the multi-site switching happens via index.config.php in that single root. Your setup (separate vhost docroots) requires a different approach. The cleanest way to do this with separate docroots: In each domain's docroot (/domaintwo/, /domainthree/, etc.) you only need: A symlink (or include-based) index.php that bootstraps from domainone's /wire A site/ directory with its own config.php, templates, modules The trick is the index.php in each secondary domain. Replace it with something like: <?php // /domaintwo/index.php $rootPath = '/var/www/html/domainone'; chdir($rootPath); require($rootPath . '/index.php'); And in each domain's site/config.php make sure $config->paths->root isn't hardcoded — ProcessWire resolves this dynamically, so it usually just works. You also need to copy (not symlink) .htaccess from domainone to each secondary docroot, since Apache serves it per-vhost. No index.config.php needed since routing is handled by vhosts at the server level — each domain already hits its own docroot. So the final structure: /domainone/wire/ ← shared core /domainone/site/ ← site 1 /domainone/index.php ← original /domainone/.htaccess /domaintwo/site/ ← site 2 (own db, templates, modules) /domaintwo/index.php ← bootstraps from domainone /domaintwo/.htaccess ← copy from domainone Each site/config.php points to its own database. Works cleanly without symlinks to /wire (which can cause issues with __DIR__ resolution in some PW internals).
-
AgeWire — Age Verification Module for ProcessWire
maximus replied to maximus's topic in Modules/Plugins
AgeWire has been updated — here's what's new since the original release. Multi-framework support The module now supports four CSS frameworks. You pick whichever one your project already uses: Vanilla CSS — fully self-contained, no dependencies, no CDN required Tailwind CSS — the original experience, 13 themes and 4 animations (unchanged) Bootstrap 5 — renders using native Bootstrap card, btn, form-control and alert classes UIkit 3 — renders using native UIkit card, button and grid components Each framework has an independent CDN toggle. If you already load Bootstrap or UIkit in your templates, just uncheck it and the module won't load anything extra. Security fixes CSRF token is now validated on every verification POST Fixed a bug where ProcessWire would render the full page HTML after the JSON response, causing JSON.parse errors in the browser. The AJAX handler now calls ob_clean() before sending JSON to discard any buffered output Strict date parsing with DateTime::createFromFormat — relative strings like "tomorrow" or "-18 years" are rejected Redirect URL validated to http://, https://, or site-relative paths only Custom CSS field sanitized against </style> injection JS console.log output is now gated behind $config->debug — no noise in production Admin UI The config page is now a two-column layout. General Settings and Framework & Theme are open side by side on first load. The rest (Modal Content, Date Picker, Agreement, Exclusions) are collapsed into logical groups — much less scrolling. PHP 8.2+ The module now requires PHP 8.2 and uses typed return types, match expressions, str_contains, str_starts_with, and unnamed catches throughout. GitHub: https://github.com/mxmsmnv/AgeWire Feedback and PRs welcome as always!- 1 reply
-
- 2
-
-
Rapid — EditorJS block editor fieldtype for ProcessWire
maximus replied to maximus's topic in Modules/Plugins
It looks amazing! So much work has been done and so much more is still to come... And then I'll want to make custom blocks and so on. Keep going, it's so exciting! -
Context Module - AI-Optimized Site Documentation with TOON Format
maximus replied to maximus's topic in Modules/Plugins
Context Module v1.4.0 - Pure UIkit Design System 🎨 Complete dashboard redesign following ProcessWire standards! What's Changed 100% UIkit Compliance Removed ALL custom CSS Removed ALL inline styles Pure UIkit components throughout ProcessWire CSS variables for theming Dashboard Components: Cards: uk-card-default / uk-card-primary Tables: uk-table uk-table-divider uk-table-small Labels: uk-label uk-label-success/danger/warning Alert: uk-alert uk-alert-success Buttons: Clean HTML with uk-button classes Visual Improvements: Templates/Fields/Pages: Light cards Success metrics: Brand color cards (green) Adaptive grid: 2 cols mobile, 3 tablet, 6 desktop Automatic light/dark theme switching UI Cleanup: Removed "NEW!" label Removed version footer Removed "Edit configuration" link Consistent spacing and typography Bugfix: Removed duplicate formatBytes() method Why This Matters: ✅ Matches ProcessWire admin design ✅ Automatic theme support ✅ Zero maintenance CSS ✅ Better accessibility ✅ Mobile-first responsive Install/Update: cd /site/modules/Context/ git pull Then: Modules → Refresh -
@szabesz TinyMCE support is on the list! CKEditor conversion was the first priority since it's still widely used, but TinyMCE is the logical next step given it's now the default RTE. I'll add it in an upcoming version. @Sergio Great suggestion! A /md/ URL segment or .md extension that returns the Markdown version directly would make the module much more useful for static site generators, AI pipelines, and content migration workflows. Added to the roadmap.
-
Rapid — EditorJS block editor fieldtype for ProcessWire
maximus replied to maximus's topic in Modules/Plugins
Thanks for the kind words and the thoughtful question! Just to clarify — Rapid is a ProcessWire fieldtype wrapper around EditorJS, the open-source block editor from the Codex team. The editor itself is their work — my contribution is the PW integration: field storage, server-side PHP renderers, upload handling, and the admin UI. Why I built it: I needed a press release submission system — companies fill in their details, write a press release, pay via Stripe, and it goes to moderation (similar to manufacturingdive.com). The site already used TinyMCE fields across many templates. Giving external users access to those fields was a security risk — one wrong permission and they could edit content site-wide. Creating a dedicated FieldtypeRapid field isolated the editor completely: external users write in their own field, the rest of the site is untouched. So the isolation and the clean JSON output were the primary drivers, not just "try a new editor." On your FieldtypeMulti question — I went with a single JSON column because block order needs to be preserved, EditorJS saves atomically, and I wanted to keep v1 simple. Per-block translation is a real limitation — if that matters to you, FieldtypeMulti might be the better foundation. Would love to see your original implementation if you revisit it. -
Hi guys, I've been working on a full EditorJS integration for ProcessWire and it's reached a point where I'd like to share it and get some testing feedback before calling it stable. GitHub: https://github.com/mxmsmnv/FieldtypeRapid This is a development preview. The core functionality works, but I'm looking for testers on different server configurations and ProcessWire setups before a stable release. Please report issues on GitHub. Why EditorJS instead of CKEditor or TinyMCE? CKEditor and TinyMCE are document editors — they produce a single blob of HTML. That HTML is hard to restructure, style consistently, or repurpose for different output targets (web, mobile, PDF, API). EditorJS is a block-based editor. Every paragraph, heading, image, and quote is a separate JSON object with a type and structured data. This means: Content is stored as clean JSON, not tangled HTML Each block type can be rendered differently per context Easy to add, reorder, or remove blocks without breaking surrounding content Output is fully controlled server-side via PHP renderers — no frontend JS required It's closer in concept to Notion or Gutenberg than to a traditional WYSIWYG. What Rapid does: 17 block types: paragraph, header (h1–h6 with auto anchor IDs), quote, nested lists, table, code, delimiter, warning, checklist, raw HTML, image (WebP convert + resize), file attachments, YouTube/Vimeo embed, alert (8 color variants), toggle/accordion, link preview with OG metadata Inline tools: bold, italic, underline, inline code, marker, link Template API: echo $page->body; // render all blocks echo $page->body->toText(); // plain text for meta/search echo $page->body->renderWith($renderer); // custom renderer 4 CSS frameworks — Vanilla, Tailwind, Bootstrap 5, UIkit 3 Frontend editing — inline editor on frontend for authorized users No build step needed — pre-built js/dist/editor.js included. Requirements: ProcessWire 3.0.200+, PHP 8.2+ Any feedback on installation, rendering edge cases, or block behaviour is welcome!
- 7 replies
-
- 14
-
-
-
At first, I couldn't get used to it either, and continued using the old one. But then at some point I got used to it and switched all my sites to the Konkat theme.
- 52 replies
-
- 3
-
-
Hello, A small utility I built for my own workflow — export any page directly from the editor as a clean Markdown file. Useful for documentation, content migration, and feeding page content to AI tools. GitHub: https://github.com/mxmsmnv/PageMarkdown What it does: Adds an Export to Markdown button to the page edit form Smart HTML conversion — CKEditor content (tables, lists, headings, links, bold/italic) → standard Markdown Supports ProFields: Table, Combo, Repeater Matrix (with type labels and nested structure) Images and files render as Markdown image/link syntax Page references render as links or titles MapMarker, Email, URL, Color fields all handled Configurable: toggle field labels as headings, ignore lists per field/type, datetime format, empty HTML cleanup Requirements: ProcessWire 3.0+, PHP 8.0+ MIT License.
-
45
-
Thank you Ryan. This was done largely to standardize components so that all modules being developed would look more or less the same, since artificial intelligence does a lot of hardcoding in its own style, which is annoying. Yes, during this development, I gave him the admin.css file, maybe even the folder - for him to process and build. It took several iterations to get this result. I'm still not satisfied, but I can already try using it in my work. For example, I created a beautiful black theme for the upcoming Collections module and other modules. One unified architectural style is much better than hundreds of different styles. Claude still gets confused, but I think this will happen less often. Yes, thank you. I think so, it would be better to create a repository to make changes. Should I make this a separate repository or include it as part of the Context module?
-
PlausibleAnalytics — Full-featured Plausible Analytics dashboard
maximus replied to maximus's topic in Modules/Plugins
Quick update — pushed v1.3.0 today. Added dark mode support (all colors follow AdminThemeUikit CSS variables automatically) and interactive filtering: click any row in Pages, Sources, Geography, Devices, or Browsers to filter all widgets at once. Active filters show as removable tags at the top of the dashboard and are stored in the URL. Thanks @bernhard GitHub: https://github.com/mxmsmnv/PlausibleAnalytics -
Guys, I don't know where to put this, so I'll post it here. Maybe someone will need the Uikit PW design system for use on your development. Attached file. Online here. AdminThemeUikit-DesignSystemUI.html
- 38 replies
-
- 12
-
-
-
Hi everyone, I needed a solid subscription module for a client project — something that handles multiple lists, double opt-in, and plugs cleanly into order and contact forms via a PHP API. Nothing in the directory quite fit, so I built Subscribe. It's been running in production on a few sites since March, so the edge cases are ironed out. GitHub: https://github.com/mxmsmnv/Subscribe What it does: Multiple subscription lists with many-to-many subscriber relationships Double opt-in with configurable HTML email ({confirm_url}, {unsub_url} placeholders) Honeypot spam protection — no CAPTCHA needed IP-based rate limiting (configurable threshold and time window) One-click unsubscribe with unique token per subscription WireMail provider selector — works with default, SMTP, Brevo, or any WireMail module Admin UI (Setup → Subscribers): Sidebar list switcher with subscriber counts Add/toggle/remove subscribers, create/rename/delete lists Search, status filter, pagination CSV import, JSON/CSV export per list Resend confirmation for pending subscribers PHP API — drop it into any template, order form, or contact form: $sub = $modules->get('Subscribe'); $sub->subscribe('user@example.com', $listId); Hookable event for integrations (Telegram notifications, CRM sync, etc.): $wire->addHookAfter('Subscribe::subscribed', function(HookEvent $event) { // $email, $listId, $subscriptionId }); Ships with an Alpine.js form block ready to drop into any template. Requirements: ProcessWire 3.x, PHP 8.0+ MIT License.
-
- 13
-
-
-
Context Module - AI-Optimized Site Documentation with TOON Format
maximus replied to maximus's topic in Modules/Plugins
Yes, it's documented in the README under "Best Practices → Session Continuity" section! I've also just improved the AGENTS.md file to make it more prominent with a clear example prompt. The docs now show: At end of each coding session, use this prompt: Update prompts/project-summary.md with current project state. Follow the existing format in the file: - Be concise and factual - Use bullet points - Update in place (don't overwrite history) - Remove any duplication Save the file. The template file itself also has the rules embedded, so AI sees them every time it updates. This is in v1.3.0 which I'm releasing shortly with CLI support for AI agents. -
Hi everyone, A small but practical module — manage your robots.txt directly from the ProcessWire admin, no FTP or SSH needed. GitHub: https://github.com/mxmsmnv/RobotsTxt What it does: Visual editor under Setup → Robots.txt with dark theme and monospace font Two-column layout — preset sidebar on the left, editor on the right 10 built-in rule presets — click any card to append rules to the editor: Allow all / Block all crawlers Hide admin panel (/processwire/) Block uploaded file assets Block AI training bots (GPTBot, CCBot, anthropic-ai, Google-Extended, FacebookBot, Omgilibot) Sitemap reference, Crawl-delay, Block query strings, Google only, Bing only Rules overview — parses the file after saving and renders a human-readable table with color-coded Allow/Disallow/Crawl-delay badges Status bar with file path, size, and last-modified date File locking (LOCK_EX) on write, CSRF protection, role-based access via robots-manager permission Automatic path detection via $config->paths->root Requirements: ProcessWire 3.0.200+, PHP 8.2+ Screenshot: MIT License.
- 1 reply
-
- 9
-
-
-
PlausibleAnalytics — Full-featured Plausible Analytics dashboard
maximus replied to maximus's topic in Modules/Plugins
Yes, I understand what you're talking about. There is no interactivity in the module, only dry data for the period. I think I'll think about it in the next versions.