Jump to content

All Activity

This stream auto-updates

  1. Past hour
  2. Today, I am happy to showcase one of Fruitcake Communications AG's latest projects powered by ProcessWire. Ausgleichskasse des Schweizerischen Gewerbes AK105 AK105 is one of Switzerland's long established trade compensation funds, serving over 10,000 companies with first and second pillar social insurance, family allowances and pension administration since 1947. The multilingual site gives employers, employees, the self employed and pensioners clear access to all services, news and the connect online portal for paperless administration. The website is only part of the whole project as we also refreshed the existing logo, created a new corporate identity from that, and reimagined all business materials. The result is a modern, professional brand identity that accurately reflects the organization’s values, also perfectly reflected on the new website. We have developed a portal for existing business customers, parties interested switching to AK105 and also the actual people to whose benefit the trade compensation funds are. The goal is to answer questions and provide further information directly on the federal government portal. We knew one of the most important aspects of such a challenge is the search function and improved accessibility. ProcessWire has ready-to-use tools for both of these goals whilst our frontend is purpose built in-house like always for Fruitcake. Search We are making heavy use of @ryan's RepeaterMatrix which allows any component to be used literally anywhere on the website. Searchability becomes a challenge just because of that though. Most of the actual content lives either inside RepeaterMatrix pages or is fetched from other meta content. Thus, a front-facing page will be stitched together from many different sources like repeaters and other pages. To actually make the website searchable, we have developed a sophisticated set of hooks and functions which will search through all repeaters, nested repeaters and then from these results, backtrack to the actual front-facing pages so that the search result shows the precise content found whilst then linking back to the correct place where that content is located. Accessibility Not only just because the target audience is people aged 50+, accessibility is another key requirement for such a project. Apart from following accessilibity standards, we also have included a text-size switcher to allow for better readability whilst keeping the rest of the content concise. Most of the work here is invisible though: Styles for prefers-reduced-motion switches, proper handling of any navigation and control element using just the keyboard and flawless screen-reader support. Actually selling this invisible work to clients is a challenge in itself. Luckily, our client is already familiar with the necessity and the benefit of the endeavour and thus there was almost no discussion needed. Admin impressions Technical details The site is powered by ProcessWire 3.0.255 of course using the new admin theme which we ❤️! Modules in use: RepeaterMatrix SeoMaestro ProcessRedirects TracyDebugger ProtectedMode WireMailSmtp FileValidatorSvgSanitizer InputfieldAssistedURL FieldtypeColorPicker Links Case study on our website: https://fruitcake.ch/cases/ak105/ Website: https://ak105.ch/ Showcase on processwire.com: coming soon
  3. That's strange, as that's what I use and I like it. The only thing I do not like about it is the battery. There is no official replacement battery, which is a shame. I ordered my first third-party replacement for it two months ago and it was performing badly right from the beginning.
  4. Today
  5. Hello everyone, I have been working on PWGermanShop, a comprehensive shop system built specifically for ProcessWire to address the regulatory and functional requirements of the German market. The system is nearing its final stages, and I am now looking for a small group of testers to help gather real-world feedback before a wider release. Since the ProcessWire forum is international, I am writing this post in English. However, please note that both the system and its documentation are currently only available in German, as the project is tailored to the DACH region. What is PWGermanShop? PWGermanShop is designed to handle the typical workflows and legal requirements of German e-commerce setups within ProcessWire. You can read through the documentation here to see how it works: 👉 https://mholte.de/docs/PWGermanShop/ How to participate in the test: The system is currently not publicly downloadable. I would like to share the installation files individually with interested testers to ensure a structured feedback process. If you are a ProcessWire developer building sites for the German-speaking market and would like to test the system: Please read the documentation to see if it fits your general requirements. Reply to this thread or send me a private message (PM) if you would like to participate. I will then send you the download link and instructions on how to install it. What kind of feedback is helpful? Is the setup and configuration process logical? Does the documentation cover all the steps clearly? Are there any bugs or edge cases you encounter during your tests? Thank you very much for your interest and support. I look forward to your feedback and to collaborating with some of you! Best regards
  6. Sound and sensitivity of button presses. I also tried MX Keys for Mac, it's terrible. I returned it after a few days.
  7. Yesterday
  8. Thanks Peter! Not specifically for the forums. I needed a reusable weather module for ProcessWire projects: normalized provider data, cache, fallbacks, geocoding, and optional widgets. The illustration is basically a quick visual overview of the module features. For some modules there isn’t always a meaningful screenshot to show, especially when the main value is in the API or backend logic, so I decided to make a small illustration for each module. It makes the project easier to scan and gives the release page a more polished, professional feel 🙂
  9. Thanks @adrian, great catch on the superuser fallback. You were right — that made the setting misleading if someone intentionally cleared the excluded roles list. I’ve fixed that in 1.1.0, so leaving the field blank now tracks all roles. Also, thanks for the heads-up about Native Analytics being hookable now. I hadn’t been following its recent development closely, so I didn’t know about that change. I liked your suggestion and added optional Native Analytics integration in 1.1.0 as well. Compass remains fully standalone via Setup → Compass, but if Native Analytics with hookable dashboard tabs is installed, Compass now adds its own tab there too. And yes, I still think there’s room for smaller focused tools alongside bigger all-in-one analytics modules. Sometimes people just need a specific behavior/heatmap tool without adopting a broader analytics setup. Fun side note: Compass was originally started in April 2026 in Philadelphia, while I was at a Mel Robbins event.
  10. I just gave things a shot on my end with a similar structure, on my DDEV development machine, and was able to (eventually) successfully access the contents of the folder once I got past the htpasswd basic authentication. The error I experienced was that I was receiving a 500 server error, in this folder, at first. Since I knew things were working before implementing the htpasswd/htaccess combination in this particular folder, I checked the logs. DDEV is not clear on which server the logs are from, but I believe in this case it was Apache (I am not using NGINX). The error message was: My htaccess AuthUserFile directive used a relative path; it seems this particular instance of Apache didn't like that, so I opted for a full path. That worked, and I was once again able to access the content of that folder (after getting beyond the basic auth). Now, all that being said, you say you're getting the ProcessWire-generated 404 page. Thankfully, the 404 page is itself an error document, so there should be some sort of logs, somewhere, that would report why you're getting that output. Have you checked any of the logs to see, by chance? Have you tried creating another directory (temporarily) with a test file in it just to see if you can get that to load - one that is not protected by a basic password? Have you edited, and/or reviewed, the default ProcessWire installation's .htaccess file to see if there might be a conflict - possibly due to file extension?
  11. Thanks, @adrian – done, shipped it your way. findRaw now just asks for the bare field name instead of listing subfields, so PagesRaw hands back the whole column set and the new strict check has nothing to trip over. Tidier all round. Why we missed it: we build against the stable PW release for client work, so the dev-branch change wasn't on our radar. And, honestly, someone here forgot to watch the repo. Both sorted now. Cheers for the nudge and the fix. Cheers, Mike
  12. @Mikel - any chance of implementing this fix this please: https://github.com/frameless-at/ProcessImageLibrary/issues/10 - I think my fix would also fix @eelkenet's issue and is much simpler, but maybe I am missing something?
  13. @eelkenet I've added the ability to run single migrations from the CLI, as well as re-run, so they should be there now. The CLI --flags options should be more clear now, if you type "php index.php" the help will show all the flags under the CLI commands. As for MCP, we'll be implementing local MCP for most AgentTools commands, probably within the next two weeks. I'm told by GPT 5.5 that agents will likely still prefer to use the CLI in AgentTools most of the time, and that it's more token efficient to do so. But there are also benefits to MCP too so it makes sense to support. I doubt we'll have as many MCP tools as what you see in PromptWire, and AgentTools and PromptWire are completely different tools, so if you find them both useful it makes sense to use both.
  14. Fixed in 1.0.3 (just pushed). Thanks a lot for the report, @eelkenet, that one's on us. Since the introduction of image tags we use them on every image field. The module now requests tags per field only when the field actually has them. After the upgrade it should run cleanly on your test setup now. Let me know if anything else trips up. Cheers, Mike
  15. PS, Native Analytics is hookable (https://github.com/Roychgod/NativeAnalytics/pull/15) these days, so I took the approach of actually building my Behavior/Heatmap module to add a tab to that module. Not sure if you think it would be a good approach for Compass, but just thought I'd throw the idea out there in case you didn't know about the option.
  16. Hey @maximus - another great one! I noticed that the settings default to having "superuser" in the excluded roles, but even if you remove that, this line: $excludedRoles = $this->parseConfigList($this->get('exclude_roles')) ?: ['superuser']; forces the superuser block anyway. This confused me for a bit while testing.
  17. Thanks, that makes sense. I updated the Bulk Editor so it now shows the rendered title below the editable Meta Title field when Title Format adds a suffix or other text. The input still contains only the raw editable title, so the suffix is not accidentally saved into each page override, but the rendered title is visible and the length count continues to include the configured Title Format.Thanks, that makes sense. I updated the Bulk Editor so it now shows the rendered title below the editable Meta Title field when Title Format adds a suffix or other text. The input still contains only the raw editable title, so the suffix is not accidentally saved into each page override, but the rendered title is visible and the length count continues to include the configured Title Format.
  18. Hi @Mikel, I kept running into crashes when attempting to test this module: ProcessWire\WireException Unknown column name(s) for findRaw: images.tags search► File: .../future-materials/public/wire/core/Pages/PagesRaw/PagesRaw.php:1816 1806: // rename i.e. [ 'field_name' => 'new_field_name' ] 1807: $this->requestFields[] = $prefix . $key; 1808: $this->renameFields[$prefix . $key] = $value; 1809: } 1810: } 1811: } 1812: 1813: protected function unknownFieldsException(array $fieldNames, $context = '') { 1814: if($context) $context = " $context"; 1815: $s = "Unknown$context name(s) for findRaw: " . implode(', ', $fieldNames); 1816: throw new WireException($s); 1817: } 1818: } So apparently you need to allow Tags on image fields in order for this module to work? I never use those, so maybe this could become optional?
  19. Thanks for your help! The protected folder and the htaccess file are beside the "site" folder. PWSITE: - /site/ - /wire/ - /index.php - /.htaccess (of PW installation) - /protected-subfolder/ - /protected-subfolder/.htaccess - /protected-subfolder/.htpasswd
  20. Nice illustration too 🙂 Did you need this module developed for your forums?
  21. Meteo is a weather integration module for ProcessWire. It fetches current weather and forecast data, normalizes responses from different providers into one predictable array format, and can optionally render ready-made weather widgets. Providers Meteo supports: Open-Meteo OpenWeatherMap WeatherAPI.com Open-Meteo works without an API key. OpenWeatherMap and WeatherAPI.com can be used as primary or fallback providers when API keys are configured. Features Current weather, hourly forecast, and daily forecast City geocoding Provider fallback chain File cache with configurable TTL Structured array output for custom templates or frontend frameworks Bundled widget templates: card, full, minimal Widget themes: auto, light, dark One-click Material M3 demo page installer Error tracking via getLastError() Basic usage $meteo = $modules->get('Meteo'); $weather = $meteo->getWeather(40.7128, -74.0060, [ 'location_name' => 'King of Prussia', 'timezone' => 'America/New_York', ]); echo $weather['current']['temperature']; echo $weather['current']['weather_label']; Render a bundled widget: echo $modules->Meteo->styleTag(); echo $modules->Meteo->renderWidgetForCity('King of Prussia', [ 'language' => 'en', 'widget_theme' => 'auto', ], 'card'); Links GitHub: https://github.com/mxmsmnv/Meteo Documentation: https://github.com/mxmsmnv/Meteo/blob/main/docs/USAGE.md
  22. Confirm this problem. https://streamable.com/ukewz6 I have same green avatar 🙂
  23. Hey everyone! Built a heatmap module for ProcessWire, thought I'd share. It tracks clicks, mouse movement, rage clicks and scroll depth — and shows everything as a heatmap right in the admin. No third-party services, all data stays on your server. You pick a page from the list, it loads in an iframe with the heatmap overlaid on top. Switch between click/movement/rage/scroll tabs, filter by date and device type, export as PNG if you need it. Install is just drop the folder into /site/modules/ and hit Install. The tracker injects itself automatically, nothing to configure. GitHub: https://github.com/mxmsmnv/Compass
  24. Last week
  25. Update: v1.0 – out of beta (and nested collections landed) Hi all, after a good run in production across a few sites, we’re finally tagging a stable release: v1.0.2. Quick recap for anyone just finding this: Image Library is a Process module that surfaces every image already sitting in your native FieldtypeImage fields, across every page, template and (Matrix)Repeater, in one cross-site, filterable, inline-editable table, with serious bulk editing, content-based de-duplication and where-used on top. It does nothing to your data and needs no migration. The full story is in the three posts above. Collections, all grown up. What was a flat “tick some images, save them as a tab” feature is now a proper little hierarchy: Folders / nesting. A collection can hold its own images and nest sub-collections, up to 3 levels, like folders that also hold files. There’s no separate “container” type: an empty collection is just one with no images yet. Open a parent and you see the union of its own images plus every descendant’s; remove an image from a parent and it cascades down. A manager dialog. One tabbed dialog (Collections | Bookmarks) to rename, reorder, nest / un-nest and delete, by drag or buttons. Deleting a collection cascades to its sub-collections; the images stay put in the library. A Collections column. A new table column shows the collections each image belongs to (linked), with inline re-assignment via a checkbox tree, for one row or a whole batch selection. Membership shows as a union, so a parent lights up whenever the image is in one of its sub-collections. Team-wide now. One thing changed under the hood: bookmarks and collections moved from per-user storage to a single team store, so the whole editorial team works from the same set. Gated by a manage-shared permission; bookmarks got folders too. And on the phone: the strip collapses to three tabs (Show all / Bookmarks / Collections) with cascading tap-to-open fly-outs, so curation works on touch, not just desktop hover. Search that actually narrows. The search box learned operators: multiple words match any (OR), +word requires, -word excludes, and "a phrase" matches exactly, e.g. red +rose -draft. Across title, description, tags, filename and custom subfields. Why “stable” now. Beyond the features, this release got the boring-but-important pass: uploads on Replace are validated by content and not just by extension, a rename now keeps an image’s “Used in” entry, output is escaped, lookups are hardened, and the codebase went through a sizable DRY refactor with no behaviour change. It has been running real editorial work, so 1.0 felt earned. Status. v1.0.2, first stable. Module + docs on GitHub and the Modules Directory. As always, feedback and edge cases very welcome: deep Repeater / RepeaterMatrix nesting, odd Fieldtype combos in custom-field templates, ProFields, and anything the collections manager or front-end picker trips over. Cheers, Mike
  26. Hi @ryan, first of all: thank you for creating this module. I have been doing some rigorous testing with Agent Tools, and while I have been quite productive in using this to move a wordpress site into PW, I do keep running into a couple of smaller issues. In no particular order: It seems I cannot run just a single migration from the CLI. The CLI always wants to run all that have not yet been applied. It seems I cannot simply re-run a migration from the CLI. The GUI does allow this. If I want to do this, I first have to rename the php file in assets/at/migrations. It would be very handy if there was a built-in and (agent-)documented way to add CLI --flags to the migrations. Codex has been inventing their own flags, for instance --dry-run=1, --limit=1 etc, but the implementation has been poor and inconsistent. Besides this, what I am wondering is if it will become possible to, instead of using the CLI or UI, to hook up AI directly via MCP. Or should I look at https://github.com/PeterKnightDigital/PromptWire-MCP for that?
  27. One of my testers won't be available to test as soon as they thought. If anyone else would like to test MediaHub, please shout (DM). The PW community is pretty diverse. I've had testers from a technical, UI/UX and media background. That variety of interests has really helped improve MH from multiple angles.
  28. Thanks @maximus the title format is working now! I was somehow expecting to see that the {site_name} (or whatever suffix you enter here) will be added and visible in the bulk editor window: Currently only the page title value is visible. However when viewing the page in the frontend the title format from the module settings is shown correctly. So I can confirm that this works now.
  1. Load more activity
×
×
  • Create New...