Jump to content

All Activity

This stream auto-updates

  1. Past hour
  2. Working with AI in PageGrid Inspired by projects like AgentTools, I began investigating how well an AI could handle PageGrid’s native PW structure (Pages, Templates, and Fields). The results were surprisingly good and with a few targeted optimizations, the workflow has become remarkably solid. AI agents (Cursor, Claude Code, Windsurf, etc.) can build and modify PageGrid layouts, create custom block templates, and write site templates — all through natural language prompts. This approach is highly optimized to minimize token consumption, allowing even "smaller" models like GPT-4o mini or Claude Haiku to produce error-free migrations. To make this possible, I introduced dedicated Migration Functions that allow the AI to programmatically add items or set styles For CLI-based projects, I highly recommend the AgentTools Module to streamline the integration. Beyond CLI support, AgentTools also provides a native AI interface directly within the ProcessWire backend editor. Getting Started Install the lastest version of the FieldtypePageGrid module (try for free). Tell your AI agent to read the PageGrid agent guide first: That file gives the agent everything it needs to understand PageGrid and routes it to the right documentation for your task. What You Can Ask the AI to Do Build or modify a layout Create pages with blocks, apply styles, set up responsive layouts using CSS grid columns. Example prompts: "Create a landing page with a full-width hero section and a 3-column feature grid below it." "Add a text block and an image block side by side inside the first group on my homepage." "Make the hero block have a dark background and white text, with 60px padding on desktop and 24px on mobile." The core advantage here is that the AI doesn't write your frontend code from scratch. The HTML and logic are already defined in your PageGrid Block Templates. The AI simply acts as an orchestrator, assembling these blocks and applying styles. This ensures the output remains clean, semantic, and easy to maintain via drag-and-drop later on. Create a custom block template Define a new block type with custom fields and register it with a PageGrid field. Example prompts: "Create a custom block called pg_testimonial with a quote text field and an author name field." "Create a custom card block with a title, description, and link field, and add it to my homepage PageGrid field." Write a site template Render a PageGrid field inside your own PHP template file. Example prompts: "Show me how to render my PageGrid field inside my home.php template using markup regions." "Generate a site template for pagegrid-page that includes the PageGrid output between the header and footer." Docs Documentaion
  3. Today
  4. I've just updated the AdminNeo core and included two new plugins: GeminiSqlPlugin and OpenWebUiPlugin for inline prompt based SQL command generation. I haven't tested the OpenWebUiPlugin one, so if anyone has any problems with it, please let me know.
  5. is Processwire dead? After some weeks I found the answer by myself: it´s MySQL...
  6. @wbmnfktr Thanks for sending over all the info. Sorry about that, it was a bug and we were able to fix it. The issue was that we stopped auto-appending "/chat/completions" to the API URL in v10 or v11 since were were adding support for the "/responses" endpoint too (though not fully supported yet), and the fix was to append /chat/completions to the API URL. But requiring that isn't a backwards compatible strategy so now it auto-appends /chat/completions only if neither /chat/completions or /responses is present in an OpenAI compatible endpoint URL. That fixes the issue. So if you grab the latest commit, the issue should be fixed. I was able to confirm the fix using your GLM info and sent just one prompt to it, see below. (GLM seems nice!)
  7. Thank you. This could have saved me a lot of time, I appreciate your input. I will try this out.
  8. Hello @rushy, I think it only matters if you want the correct created and modified timestamp when creating or editing pages. I don't think there are any further implications. You could try this script in your config.php. It worked for me:
  9. Hi @maximus, I've been trying it out this module too and really like it! I have a couple of suggestions, if that's OK? Pages that don't have template view files (<templatename>.php) still show a view icon in the collection list, resulting in a 404 when clicked. This could be solved by adding a $page->viewable() check to the $showViewLink boolean. When a template's "Can this template be used for new pages?" setting ("noParents") is set to -1 (only one page) or 1 (no new pages), the "Add [collectionItem]" button still shows. Maybe a canAddNew() method of the Collection class to hide the button in those circumstances? [this worked for me, though there may be a more elegant way, or that suits your coding style]: /** * Whether the admin "Add" button should be shown for this collection. * Mirrors ProcessPageAdd's logic on Template::noParents: * 1 → template disallows new pages * -1 → singleton; only allowed while no page using it exists yet */ public function canAddNew(): bool { $template = wire('templates')->get($this->template); if (!$template || !$template->id) return false; $noParents = (int) $template->noParents; if ($noParents === 1) return false; if ($noParents === -1) { return $template->getNumPages() === 0; } return true; } //and then in collection-list.php: <?php if ($canCreate && $collection->canAddNew()): $addTemplate = $wire->templates->get($collection->template); $addUrl = $adminUrl . 'page/add/?template_id=' . $addTemplate->id; ?> Anyway, thanks for the great module!
  10. Thx for the kind words 😊 – and thx for the catch, I really wonder why I never noticed this before, it's kinda obvious 😅 Should be fixed in new version 1.6.1
  11. I think this may be trivial but just asking here in case.... I imported a database from a pw installation running on server hosted in France. My php time on my localhost is on UK time so now I get this warning:- Warning, the database time differs from PHP time by 59 minutes 54 seconds. 2026-05-07 09:40:52 - database time 2026-05-07 08:40:58 - PHP time Please edit your /site/config.php file and update your $config->timezone to match that of your database That is clear enough, but presumably changing the config timezone will put my local pw install on French time, which I don't really want. Does it really matter this warning....are there any further implications? Thanks for any input
  12. This is the agent export dialog's result: glm-5.1 | <key_removed> | https://api.z.ai/api/coding/paas/v4 | Z.AI GLM 5.1 config->advanced=true; is set in config.php spaces before and after the pipe "|" look weird but are PW-style, so... no. Nothing incorrect. I created a full export, including the db, and put it up for download - I send you the link via PM.
  13. Yesterday
  14. @wbmnfktr so far can't duplicate here so I may need to try and copy your settings somewhat. Can you tell me what you have for the primary agent model, label and endpoint URL? You may also want to check that config->advanced=true; in your site/config.php and the go to module config - agent tools - module info - edit raw config. See if anything looks incorrect in the raw config json ?
  15. I hope no-one minds, but I have removed dai() and bdai() in favour of adding a "copy as plain text for AI agent" button for the regular d() and bd() calls. which will put the following in your clipboard. Call: d($page); Location: site/assets/cache/TracyDebugger/consoleCode_1778105690621_f3xspie7xg.php:2 ProcessWire\Page #246 instanceID: 10 id: 3 name: 'page' path: '/admin/page/' status: 'locked, system' template: 'admin' parent: '/admin/' numChildren: 10 sort: 0 sortfield: 'sort' created: '2025-12-06 18:34:42 (5 months ago)' modified: '2025-12-06 18:34:42 (5 months ago)' published: '2025-12-07 12:34:42 (5 months ago)' createdUser: 'ajones' modifiedUser: 'ajones' isLoaded: 1 outputFormatting: 1 hooks: array (17) | '->render' => array (2) | | 0 => 'TracyDebugger->logRequests() in TracyDebugger.module.php' | | 1 => 'anonymous function() in TracyDebugger.module.php (100.1)' | 'Page::getRequestData' => 'TracyDebugger->getRequestData() in TracyDebugger.module.php' | 'Page::logRequests' => 'TracyDebugger->logRequests() in TracyDebugger.module.php' | 'Page::editable' => 'PagePermissions->editable() in PagePermissions.module' | 'Page::publishable' => 'PagePermissions->publishable() in PagePermissions.module' | 'Page::viewable' => 'PagePermissions->viewable() in PagePermissions.module' | 'Page::listable' => 'PagePermissions->listable() in PagePermissions.module' | 'Page::deleteable' => 'PagePermissions->deleteable() in PagePermissions.module' | 'Page::deletable' => 'PagePermissions->deleteable() in PagePermissions.module' | 'Page::trashable' => 'PagePermissions->trashable() in PagePermissions.module' | 'Page::restorable' => 'PagePermissions->restorable() in PagePermissions.module' | 'Page::addable' => 'PagePermissions->addable() in PagePermissions.module' | 'Page::moveable' => 'PagePermissions->moveable() in PagePermissions.module' | 'Page::sortable' => 'PagePermissions->sortable() in PagePermissions.module' | 'Page::cloneable' => 'PagePermissions->cloneable() in PagePermissions.module' | 'after Page::render' => 'anonymous function() in FrontendMatrixEdit.module.php' | 'before Wire::trackException' => 'anonymous function() in TracyDebugger.module.php' data: array (2) | 'title' => 'Pages' | 'process' => 'ProcessPageList' I feel like this is the best of both worlds.
  16. AgentTools version 0.1.1 in ProcessWire 3.0.259 and 3.0.260 broke all agents in my current setups. Asking the Engineer only returns: ProcessAgentTools: API error (404): Not Found Added new agents (OpenAI-compatible and Anthropic/Claude): still no success. Only difference is, the ones with Anthropic (Claude) won't return the error message, yet no output or anything as far as I can see and tell. Update: Used the backup of version 0.0.9 - works in both instances with all agents.
  17. I did not know that, never clicked a link in the title column, always on an upgrade link, if available...
  18. I do not strive for balance. I think that's just not a reality to achieve that. Maybe if you join some monks, then you can find it, but you'll need to give up everything else then. I focus on goals, and when I achieve one, well, that is satisfying. That might sound simple, but it's not. Of course, it's hard to stay focused, and it is also hard to keep the priorities. But I try not to miss the most important: family, health/sport, work, friends (in that order, and that's the order of importance, and not the order I spend time with/on, which is a different story..., but generally, I am just trying to be flexible with time as much as I can.) And when I am feeling blue, I just need to remind myself: https://youtu.be/uAzwji5Cfmk?list=RDuAzwji5Cfmk&t=24
  19. But all you have to do is click the ProcesWire Core (Dev) link in the first column and it will upgrade to the latest commit anyway.
  20. Hm. I have this in my version of PW upgrade just for the case I need latest bleeding edge:
  21. Hello, everyone. I was wondering if it wouldn't just be better to switch TinyMCE with SunEditor instead as the "official" WYSIWYG editor of ProcessWire. It's licensed under MIT and it outputs cleaner code. I'm not a developer, so I'm afraid I cannot create a module and implement it myself. I don't need it personally, but I'm sure there are people (clients) who do need a WYSIWYG editor.
  22. Thank you for your advises and corrections. I think we're done with this issue.
  23. Ok glad Tracy is fixed, but I would strongly advise against using PHP 8.0 - no security updates isn't worth it. Just report the issues to those module authors and deal with the deprecation warnings until they are fixed (or fix them yourself locally in the meantime).
  24. Sorry, you are too fast for me... Now, I uploaded your new version and went back to PHP8.030. Everything looks fine. Plus, other modules stopped complaining with this PHP version.
  25. Did my commit yesterday (https://github.com/adrianbj/TracyDebugger/commit/b1f784a669f24b8b7409d192c7e4659ca1b0618f) not fix this? You will see some deprecations in other modules, but that's just part of the process - please report these to the module authors.
  26. Quick test with PHP versions: PHP8.0.30 -- test <?php echo "<p>que chatice</p>" ?> -- result: "Exception: Cannot access non-public property Tracy\FileSession::$file on line: 95 in C:\wamp64\www\cadpp.org\site\modules\TracyDebugger\includes\CodeProcessor.php" PHP8.5.6 -- seems to work ok in general and with Tracy, but some modules seem to need adaptation to the new PHP version: Errors resulting from deprecated instructions in some modules: Deprecated: mb_convert_encoding(): Handling HTML entities via mbstring is deprecated; use htmlspecialchars, htmlentities, or mb_encode_numericentity/mb_decode_numericentity instead in ...\TextformatterFluidImages\TextformatterFluidImages.module:52 Deprecated: Use of "self" in callables is deprecated in ...\TextformatterSoundmanager\TextformatterSoundmanager.module:582 Deprecated: mb_convert_encoding(): Handling HTML entities via mbstring is deprecated; use htmlspecialchars, htmlentities, or mb_encode_numericentity/mb_decode_numericentity instead in ...\TextformatterFluidImages\TextformatterFluidImages.module:52 Once again, thank you for your titanic effort to adapt Trac to PW!
  27. Hi Robert & everyone else Great module, I use it in every project ❤️ A thing I just stumbled on: Ampersands (&) in plain TextareaLanguage fields get encoded to &amp; after translation, regardless of the field settings (html entity sanitizer, text/html etc.). Cause: tag_handling is set to 'html' in translate() for all field types. Could this be applied only to RTE fields? Or am I missing something in the field or module settings? Thanks, Nuél
  28. I not owned module. I think not good idea storage 3 files 🙂
  1. Load more activity
×
×
  • Create New...