All Activity
- Past hour
-
module Image Library — edit every image across your whole site in one table
adrian replied to Mikel's topic in Modules/Plugins
Awesome, thanks! -
module Image Library — edit every image across your whole site in one table
Mikel replied to Mikel's topic in Modules/Plugins
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 - Today
-
module Image Library — edit every image across your whole site in one table
adrian replied to Mikel's topic in Modules/Plugins
@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? -
@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.
-
module Image Library — edit every image across your whole site in one table
Mikel replied to Mikel's topic in Modules/Plugins
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 -
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.
-
Leonard joined the community
-
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.
-
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.
-
module Image Library — edit every image across your whole site in one table
eelkenet replied to Mikel's topic in Modules/Plugins
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? -
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
-
Nice illustration too 🙂 Did you need this module developed for your forums?
-
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
-
It's not possible to upload a profile picture in the forum
maximus replied to David Karich's topic in General Support
Confirm this problem. https://streamable.com/ukewz6 I have same green avatar 🙂 -
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
- Yesterday
-
module Image Library — edit every image across your whole site in one table
Mikel replied to Mikel's topic in Modules/Plugins
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 -
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?
-
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.
-
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.
- Last week
-
Hi @Stefanowitsch, thanks for the screenshots — they helped a lot. You found a real inheritance bug. The JSON example itself was correct: { "meta_title": "field:title", "meta_description": "field:summary|truncate:160" } The problem was that empty page-level SEO fields could block the global defaults with an empty custom value. That is why {site_name} was added by the Title Format, but {meta_title} stayed empty, and the Audit / Bulk Editor still showed missing values. Now: flat defaults like meta_title and meta_description resolve correctly meta.title and nested JSON defaults are also supported empty page-level source fields inherit from template/global defaults empty Bulk Editor title/description fields are saved as inherited values instead of empty custom overrides After updating, rebuild the audit index again and the title/description values should appear. Hi @adrian, thanks for catching both of these. I added separate Rendering settings: - Render hreflang alternate links - Render JSON-LD schema Both remain enabled by default for backwards compatibility, but can now be disabled independently. So in your case, you can disable hreflang when ProcessWire languages are only used internally, and disable JSON-LD completely if your templates already generate the exact structured data you need.
-
Hi everyone, Needed a way to embed polls and quizzes directly into page content — shortcode in any text field, renders as a cache-safe interactive widget. Built it, it works well, sharing it. GitHub: https://github.com/mxmsmnv/Pulse Screenshot: What it does Polls and quizzes embedded via shortcode into any text field: [[pulse:poll name="my-poll"]] [[pulse:quiz name="my-quiz"]] Polls — voting with live results, multi-select, allow-other option, duplicate protection (cookie+IP, user session, or soft). Quizzes — three modes: graded — points, pass/fail threshold, answer review personality — options award points to outcomes, winning outcome shown at end exam — graded plus timer, attempt limit, question bank, certificate Visual questions — question-level images and image-option layouts. Admin workspace — Setup → Pulse with full CRUD, analytics, CSV/JSON export, import, clone, and demo installer. Security: All scoring server-side — is_correct / outcome_points never reach the client before submission CSRF mandatory on all submissions (token from /pulse/state) Honeypot + rate limiting by hashed IP Voter cookies and IPs stored as salted hashes only Exam HMAC-signed question sets, server-enforced timeouts, signed certificates Cache-safe: renders a static shell, hydrates via JS — works with ProCache. Requirements: ProcessWire 3.0+, PHP 8.2+ MIT License.
-
- 10
-
-
-
I messed up and upgraded the module without upgrading the old version of PHP that I have installed. (7.something) Is there a way for me to downgrade the module (install an older version)? Upgrading to PHP 8, while recommended and necessary, isn't an easy task at this point and in the meantime the mailing function of the website is broken. 😞
-
strandoo started following GeoIP — MaxMind GeoLite2 geolocation module
-
This looks great! Any way to install it without Composer?
-
Are you hosting the htpasswd protected folder within the site/ folder, or beside it? PWSITE: - /site/ - /wire/ - /index.php - /.htaccess (PW root htaccess) I have placed folders at root (the same level as site and wire), and haven't had any issues with similar situations, so long as the file name(s) are correctly typed and matching the case sensitivity. Any PW-specific subfolders would also be subject to whatever htaccess rules those subfolders possess, so it's easier to just have separate-need folders at root level.
-
floko started following htaccess protected folder
-
Hi everyone, I just set up a very simple htaccess password protection for a folder on our website (which is run by PW of course). To be specific, I placed a .htaccess file within that folder, referencing a .htpasswd file in the same folder. However, somehow the PW mechanics redirect to the standard PW 404 page of our website whenever I try to open any file within that folder (instead of prompting the htaccess login and password fields). Thanks in advance for any hints!
-
Ok, I uploaded a 4.9.6 version manually in wire/modules but it wasn't recognised there. Then I uploaded in site/modules and it got recognised. So now it's working while it's still in site/modules. Also recognised in the upgrades module. After that the module information page said there's two versions and now they're both 4.9.6. A bit of a mystery to me but anyway, ProcessWire managed to get everything in order sort of by itself.