Jump to content

maximus

Members
  • 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

Full Member (4/6)

184

Reputation

  1. @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!
  2. 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!
  3. i use infomaniak.ch for couple projects
  4. 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! ๐Ÿ™
  5. 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
  6. 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
      • Like
      • Thanks
  7. wirewall periodically intercepts scanning of .env files, be safe
  8. 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/
  9. if possible, can you fix underline for new theme?
  10. i try update to new version use Upgrades module and receive this message:
  11. 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!
  12. Hello! Which browser your use ? more details if possible
  13. 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! ๐Ÿ›ก๏ธ
  14. 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
      • Like
      • Haha
      • Thanks
ร—
ร—
  • Create New...