-
Posts
49 -
Joined
-
Last visited
-
Days Won
13
maximus last won the day on January 4
maximus had the most liked content!
About maximus
- Birthday June 7
Contact Methods
-
Website URL
smnv.org
Profile Information
-
Gender
Male
-
Location
Media, PA
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
maximus's Achievements
Full Member (4/6)
184
Reputation
-
@adrian You're absolutely right, poor choice of words. I should have said "universally available and free" rather than "already installed". The point was about accessibility vs paid solutions, but I'll fix the wording. Thanks! @Gideon So ๐ Fair enough! Though getting them to install a free app is still easier than explaining monthly SMS fees to the client!
-
Hi ProcessWire community! ๐ I'm excited to share a new module I've been working on: TeleWire - a Telegram notifications module that brings instant messaging capabilities to your ProcessWire sites. The Problem with Current Notification Solutions After running several e-commerce sites and experimenting with different notification systems, I've encountered these recurring issues: ๐ง Email (SMTP/WireMail): Requires SMTP server configuration (WireMailSMTP) Google App Passwords setup complexity Emails constantly landing in spam folders Delayed delivery (sometimes 5-10 minutes) No guarantee the recipient will see it quickly ๐ฑ SMS (Twilio, etc): Monthly fees just to keep a phone number active (~$1-15/month) Per-message charges (can add up quickly) US compliance requirements (verification, regulations) Not everyone wants to share their phone number ๐ฌ WhatsApp Business API: Requires business verification Complex setup process API fees and restrictions Limited to business accounts ๐ Push services (Pushover, etc): Requires purchasing apps ($5-10 per platform) Recipient needs to install and configure the app Additional barrier to entry Why Telegram? ๐ Completely free - No monthly fees, no per-message charges, no app purchases ๐ Widely available - Free to download on any platform, 900+ million users worldwide โก Instant delivery - Messages arrive in 1-2 seconds, not minutes ๐ฏ Low barrier to entry - Just "install the free app and start a chat with the bot" vs "pay $5" or "give me your phone number" ๐ Reliable - No spam filters, no deliverability issues, no carrier restrictions ๐ฑ Multi-platform - iOS, Android, Web, Desktop - works everywhere ๐จ Rich features - HTML formatting, emojis, photos, documents, links Key Features ๐ Send text notifications with HTML/Markdown formatting ๐ธ Send photos and documents ๐ฅ Support for multiple recipients (users and groups) ๐ง Simple admin interface with test button ๐ Optional logging and debug mode โก Optimized performance with configurable timeouts ๐ฏ Easy to integrate with hooks Real-World Use Cases E-commerce order notifications: $wire->addHookAfter('FormBuilderProcessor::processInputDone', function($event) { $form = $event->object; if($form->name === 'order-form') { $telewire = $this->modules->get('TeleWire'); $message = '๐ <b>New Order</b>' . "\n\n"; $message .= '๐ค Customer: ' . $form->get('customer_name')->value . "\n"; $message .= '๐ฐ Total: $' . $form->get('total')->value; $telewire->send($message); } }); Failed login attempts monitoring: $wire->addHookAfter('Session::loginFailed', function($event) { $telewire = $this->modules->get('TeleWire'); $name = $event->arguments(0); $message = 'โ ๏ธ <b>Failed Login Attempt</b>' . "\n\n"; $message .= 'Username: ' . $name . "\n"; $message .= 'IP: ' . $this->session->getIP(); $telewire->send($message); }); Content updates: $wire->addHookAfter('Pages::saved', function($event) { $page = $event->arguments(0); if($page->template == 'article' && !$page->isNew()) { $telewire = $this->modules->get('TeleWire'); $message = '๐ <b>Article Updated</b>' . "\n"; $message .= 'Title: ' . $page->title . "\n"; $message .= 'By: ' . $this->user->name; $telewire->send($message); } }); Send photos with captions: $telewire = $modules->get('TeleWire'); // Product photo when new product added $telewire->sendPhoto( $page->images->first()->httpUrl, "New product: {$page->title} - \${$page->price}" ); Send documents (invoices, reports): $telewire = $modules->get('TeleWire'); // Send generated PDF invoice $telewire->sendDocument( '/site/assets/invoices/invoice-123.pdf', 'Invoice #123 for Order #456' ); Installation Get a bot token from @BotFather on Telegram (takes 30 seconds) Install the module from GitHub Configure your bot token and chat IDs Click "Send Test Message" to verify everything works Requirements: PHP 8.2+ and ProcessWire 3.0.210+ Admin Interface Features The configuration page includes: โ Real-time connection status indicator ๐งช One-click test message button (AJAX, no page reload) โ๏ธ Configurable parse mode (HTML/Markdown/MarkdownV2) ๐ Optional logging with debug mode for troubleshooting โฑ๏ธ Adjustable API timeouts ๐ Silent mode option (no notification sound) ๐ Message length handling (auto-split long messages) Production Ready This module is currently running on several production sites: ๐ซ E-commerce shop - order notifications, stock alerts ๐ท Wine/liquor business - order confirmations, delivery updates ๐ฐ News portal - content publishing notifications Average response time: ~150-300ms per notification Getting Your Chat ID Find @userinfobot in Telegram Send any message - it will reply with your Chat ID Important: Start conversation with your bot by sending /start Enter the Chat ID in module configuration For groups: Add the bot to your group, make it admin, and use the negative Chat ID API Documentation // Get module instance $telewire = $modules->get('TeleWire'); // Simple text message $telewire->send('Hello from ProcessWire!'); // HTML formatted message $message = '<b>Bold</b> <i>italic</i> <code>code</code>'; $telewire->send($message); // Send with custom options $telewire->send('Silent notification', [ 'disable_notification' => true, 'parse_mode' => 'Markdown' ]); // Send photo $telewire->sendPhoto('/path/to/photo.jpg', 'Optional caption'); // Send document $telewire->sendDocument('/path/to/file.pdf', 'Document caption'); Feedback Welcome! I'd love to hear your thoughts, use cases, and suggestions. If you've been frustrated with email deliverability or SMS costs for notifications, give this a try! GitHub: https://github.com/mxmsmnv/TeleWire Thanks to the ProcessWire community for the inspiration and all the great modules that helped me learn the PW module system!
-
i use infomaniak.ch for couple projects
-
Thank you @bernhard for sharing your modules and for your open source contribution to the ProcessWire community! When I was developing modules, I initially thought of each one as a potential source of income. But over time I realized that the real value lies in something greater than money โ the support from users, their questions, the connections made, and the ability to contribute to this amazing community. That's what makes it truly worthwhile. Your decision to open source your modules is inspiring and will benefit many developers. Wishing you all the best! ๐
-
I made a similar file a long time ago, which I upload to the server. Then I select the archive I need, and it download and unpacks it automatically. Important: you can prepare a ready-made archive with ready-made profiles (skeleton) to make it easier to get started. pw.php
-
Hi everyone! ๐ I'd like to share SquareImages - a simple module that creates perfect square images from any source format. Born from a real-world need: displaying vertical product images (like Coca-Cola bottles) uniformly in galleries and grids without distortion or awkward sizing. The Problem // Traditional methods don't work well for mixed aspect ratios: $image->width(300); // Too narrow for vertical images $image->height(300); // Too wide $image->size(300, 300); // Distorted The Solution // One simple method - smart cropping, perfect squares: $square = $image->square(300); Key Features ๐ฏ Smart Cropping - Automatically centers on longer dimension ๐ฆ Format Preservation - Maintains original format (JPG/PNG/GIF) ๐ WebP Support - Chain with ->webp() for compression โก Performance - Fast URL generation ๐พ Automatic Caching - Built on PW's image engine Quick Example <div class="product-grid"> <?php foreach ($page->products as $product): ?> <?php $thumb = $product->photo->square(300); ?> <img src="<?= $thumb->url ?>" alt="<?= $product->title ?>"> <?php endforeach; ?> </div> Perfect uniform squares, regardless of source dimensions! API Methods $image->square(400); // Main method $image->squareWidth(500); // Based on width $image->squareHeight(600); // Based on height $image->getSquareURL(300); // Direct URL (faster) // WebP conversion $image->square(500)->webp(); // 25-65% smaller files Installation GitHub: https://github.com/mxmsmnv/SquareImages cd site/modules/ git clone https://github.com/mxmsmnv/SquareImages.git Or download ZIP and extract to /site/modules/SquareImages/ Then refresh modules in admin and install. Use Cases E-commerce product galleries Team member avatars Blog thumbnails Social media previews Instagram-style grids
-
- 7
-
-
-
-
It will be difficult to do all this even if you use AI to create what you need. First of all, you need to understand how it all works in ProcessWire and have skills in working with ProFields, Repeater, Repeater Matrix, Selector, and other basic modules. There is nothing complicated about it, but the time you spend creating a solution from scratch is better spent finding a ready-made solution and removing what you don't need. To understand how these systems work, I suggest you start by studying https://processwire.com/modules/site-invoices/
-
-
-
Iโd like to bring attention to a long-standing organizational issue that affects projects with many template files. As projects grow, the /site/templates/ directory becomes cluttered with dozens (or even hundreds) of PHP files, making it difficult to maintain and navigate. The Problem Currently, ProcessWire doesnโt natively support organizing template files into subdirectories. For example, if you want to organize templates like this: /site/templates/ โโโ warehouse/ โ โโโ dashboard.php โ โโโ packing.php โ โโโ packages.php โโโ customer/ โ โโโ dashboard.php โ โโโ packages.php โโโ sso/ โโโ login.php โโโ callback.php You currently face several challenges: Alternate Template Filename field is unreliable - The admin interface often strips or resets the path when saving, especially if the file doesnโt exist at that exact moment No automatic discovery - You must manually configure each templateโs file path Hooks donโt work as expected - Attempts to hook TemplateFile::getFilename or Template::getFilename donโt fire reliably Current Workarounds The existing workarounds are less than ideal: 1. Bridge files as suggested by @LostKobrakai // site/templates/warehouse-dashboard.php <?php namespace ProcessWire; include(__DIR__ . '/warehouse/dashboard.php'); This creates file duplication and maintenance overhead. 2. Manual Alternate Template Filename for each template: - Requires clicking through every template - Path validation often fails - No bulk operations Previous Discussions This has been requested multiple times over the years: Does PW support organizing Template files in sub Dirs? (2016) Template file in other folder than /site/template (2017) How do I organize a lot of templates? (2017) Proposed Solution Iโve opened a GitHub feature request with detailed suggestions: https://github.com/processwire/processwire-requests/issues/575 The core ideas: 1. Path persistence - The Alternate Template Filename field should reliably save paths like folder/filename.php 2. Automatic discovery - If a template named warehouse-dashboard isnโt found, check for /warehouse/dashboard.php 3. Template grouping in admin - Visual organization in Setup โ Templates based on folder structure Why This Matters Large projects - Sites with 50+ templates become unmanageable Team development - Clear organization helps multiple developers Module development - Modules could bundle template files cleanly Modern standards - Most frameworks support organized file structures Use Cases This would benefit: Multi-role applications (admin, customer, warehouse staff interfaces) Projects with many page types Module developers who want to bundle templates Anyone with SSO/OAuth files, API endpoints, or admin tools What Can You Do? If youโve faced this issue or would like this feature: 1. ๐ React to the GitHub issue 2. Share your use cases below 3. Suggest implementation approaches @ryan - Would love to hear your thoughts on this! Is this something that could be considered for a future release? Thanks for reading, and I hope this resonates with others whoโve felt this pain!
- 1 reply
-
- 8
-
-
Hello! Which browser your use ? more details if possible
-
WireWall v1.3.2 โ Advanced Traffic Firewall Released: January 4, 2026 Stable release with major improvements in data persistence, IPv6 support, and configuration reliability. What's New in v1.3.2 Permanent data persistence GeoLite2 databases, Composer vendor folder, and composer files are now safely stored in /site/assets/WireWall/ โ No more data loss or reinstallation needed after module updates Automatic migration from older versions When upgrading from โค1.2.0, old files from /site/modules/WireWall/ are automatically moved to the new location Full IPv6 CIDR support Complete IPv6 range matching for both blocking and whitelisting Enhanced exception system New configuration fields: โข Custom Trusted AJAX Paths โข Custom API Paths (bypass for ALL HTTP methods โ GET/POST/PUT/DELETE/etc.) Robust checkbox handling All toggle options now reliably save as 0/1 (fixes old config issues after updates/reinstalls) Improved configuration interface New colorful "Setup Information" section with current paths, migration guide, and clear installation instructions Recommended post-update steps Go to Modules โ WireWall โ Configure Verify GeoIP databases are located at: /site/assets/WireWall/geoip/GeoLite2-*.mmdb If you have GeoLite2-City.mmdb โ enable City & Subdivision blocking Add any custom paths you need in: โข Custom Trusted AJAX Paths โข Custom API Paths Requirements ProcessWire โฅ 3.0.200 PHP โฅ 8.1 Strongly recommended: MaxMind GeoLite2 databases (Country + ASN required, City optional for detailed logging) Downloads WireWall.module.php Full module archive (zip) Full documentation โ README Website โ wirewall.org Thanks to everyone testing and providing feedback! Stay secure! ๐ก๏ธ
-
Happy 2026 everyone! ๐ TL;DR: I made 2048 game for ProcessWire admin. Install it, ignore your inbox, get high scores. Why? Because it's January 1st and: โ You're probably hungover โ Nobody expects you to work โ You're definitely checking your admin anyway โ Why not play some 2048 while you're there? What's inside? ๐ฎ Classic 2048 (arrow keys or swipe) ๐ Leaderboard (compete with your team!) ๐ Sound effects (mutable, we know your head hurts) ๐ฑ Works on phone (for bathroom breaks) โ๏ธ Configurable grid (3x3 to 12x12 if you hate yourself) Download https://github.com/mxmsmnv/Process2048 Install Upload to /site/modules/Process2048/ Modules โ Refresh โ Install Setup โ 2048 Start procrastinating! Screenshot: Cheers ๐ฅ
-
- 10
-
-
-