Recently Updated Topics
Showing topics posted in for the last 7 days.
- Past hour
-
In this post I wanted to talk a little bit about the state of ProcessWire and AI. I'll share what my experience has been so far and where I think ProcessWire should focus going forward. This new world of AI can be both exciting and concerning, but it's the world that we've found ourselves in. As far as ProcessWire and web development goes, I think there's a lot to be excited and enthusiastic about— https://processwire.com/blog/posts/processwire-and-ai/
-
Enables AI coding agents to access ProcessWire’s API. Also provides a content migration system. This module provides a way for Claude Code (or other AI helpers) to have full access to the ProcessWire API via a command-line interface (CLI). Once connected to your site, you can ask Claude to create and modify pages, templates and fields, or do anything that can be done with the ProcessWire API. It's even possible for an entire site to be managed by Claude without the need for ProcessWire's admin control panel, though we're not suggesting that just yet. While working with Claude Code, I asked what would be helpful for them in working with ProcessWire, and this module is the result. Claude needed a way to quickly access the ProcessWire API from the command line, and this module provides 3 distinct ways for Claude to do so. Claude collaborated with me on the development of the AgentTools module, and the accompanying ProcessAgentTools module was developed entirely by Claude Code. Admittedly, a big part of the purpose of this module is also to help me learn AI-assisted development, as I'm still quite new to it, but learning quickly. This module aims to add several agent tools over time, but this first version is also somewhat of a proof of concept. Its first feature is basic migrations system, described further in this document. Please note that this module should be considered very much in 'beta test' at this stage. If you do use it in production (such as the migrations feature) always test locally and have backups of everything that can be restored easily. While I've not run into any cases where I had to restore anything, just the nature of the module means that you should use extra caution. Continue reading in the GitHub README Agent Tools in the modules directory
-
- 1
-
- Today
-
My experience is the opposite. It's especially helpful with things I don't know and start to learn 🙂 But yeah, a basic understanding of web development definitely helps...
- Yesterday
-
Thanks, great suggestions. Being still kind of new to this, I've found myself overwhelmed by all agents tools and options. So having Claude code as the base is what I feel helped me to finally get into this stuff. It's like my key into this world. And I think it's working so well right now that I'm not concerned about whether a file is named Claude or agents, but it's good to know about for sure. If we start adding this type of file to the core then no doubt we'd want it to be an agents file, so that a broader audience can benefit from it. At the moment I'm loving the commit messages, claude attributions and GitHub replies. Feels like I have a coworker working with me at my computer all day now, which is something I've never had. but if it gets to be too much it's definitely helpful to know that this stuff is configurable. New PW AI updates coming tomorrow too.
-
After taking a look at the code, I guess the best approach would be to go with a custom validation rule, because there is so much going on inside the isValid() function that must be checked in the setErrorMessageToField() method too. Can you explain which kind of validation you need in this case. Maybe I can help you to create the custom rule. You can also send me a PM with the code you have so far.
-
InviteAccess — restrict staging site access with invite codes
howdytom replied to maximus's topic in Modules/Plugins
Thank you. It is a great module and works perfectly. Sometimes it would be cool to password protect individual pages instead of locking the complete sites. It just the opposite use case.- 1 reply
-
- 1
-
-
Hey everyone, on a recent client project we had to deal with a large number of Markdown files that needed to end up as regular HTML content on ProcessWire pages. Converting them manually or piping them through external tools wasn't an option – too many files, too tedious, and the content had to be stored as actual HTML in rich textfields, not just formatted at runtime. So we built a small module that handles this directly inside ProcessWire. How it works The module creates a file upload field (md_import_files) and a Repeater field (md_import_items) with a standard title field and a richtext body field (md_import_body) inside. The body field automatically uses TinyMCE if installed, otherwise CKEditor. You add both fields (md_import_files,md_import_items) to any template, upload your .md files, hit save – each file gets converted to HTML via PW's core TextformatterMarkdownExtra and stored as a separate Repeater item. The source filename goes into the items title, processed files are removed from the upload automatically. Template output The Repeater items are regular PW pages, so output is straightforward: foreach ($page->md_import_items as $item) { echo "<section>"; echo "<h2>{$item->title}</h2>"; echo "<div>{$item->md_import_body}</div>"; echo "</section>"; } Tag mappings One thing we needed right away: control over how certain Markdown elements end up in HTML. For example, #headings in Markdown become <h1> – but on most websites <h1> is reserved for the page title. The module has a simple config (Modules → Configure → Markdown Importer) where you define tag mappings, one per line: h1:h2 h2:h3 strong:b blockquote:aside hr:br This performs a simple 1:1 tag replacement after conversion, preserving all attributes. Works well for standalone or equivalent elements like headings, inline formatting, blockquotes, or void elements like hr:br. Note that it doesn't handle nested structures – mapping table:ul for example would only replace the outer <table> tag while leaving thead, tr, td etc. untouched. Requirements ProcessWire 3.0.0+ FieldtypeRepeater (core) TextformatterMarkdownExtra (core) GitHub: github.com/frameless-at/MarkdownImporter Modules Directory: https://processwire.com/modules/markdown-importer/ Happy to hear if anyone finds this useful or has suggestions for improvements. Cheers, Mike
-
- 4
-
- Last week
-
Further to above, there was an issue with the sitemap handling urlsegments with the canonical link. Another hook solved it for me:
-
Hi friends! And thanks for this useful module 😉 I'm not (actually) pretending to become this module supporter but I've found a bug which broke a couple of pages in my PW admin, so I had to make a fix. The problem is that Activity Log module cannot handle the situations when a data field has been deleted. I did a quick fix, feel free to use it 😉 MarkupActivityLog.module
-
Context Module - AI-Optimized Site Documentation with TOON Format
maximus replied to maximus's topic in Modules/Plugins
It's always great to hear feedback, it makes modules a must-have for every developer! -
☁️ Duplicator: Backup and move sites
Peter Knight replied to flydev's topic in Module/Plugin Development
Is Duplicator aware that some environments can contain symlinked Modules of remote repos? I can set the excluded files and folders to: .git .github .cursor .DS_Store .gitattributes .gitignore otherwise I recently had PHP warnings on some hosts about open_basedir restrictions. Cheers P -
module Image Classes — a CSS class picker for images in richtext editors
szabesz replied to Mikel's topic in Modules/Plugins
Nice solution! @Mikel Thanks for sharing! I will surely try it out. I used the style's menu for solving this, but your module is sure a lot more user-friendly.- 1 reply
-
- 1
-
-
@Soma a massive welcome back. I followed you on Twitter and absolutely loved your art journey but then it just seemed to disappear. As I hate social media I am not really on anything else, and certainly don't use X anymore. I always wondered what happened to a forum legend. As somebody mentioned earlier, you probably don't realise how much your posts have and still do help people.
-
If anyone is interested in being able to set script-src-attr to "none" on the frontend of their sites, the namespaced branch of Tracy now uses eventListeners everywhere - no more inline handlers.
-
Found it out myself. As a test case, I set up a vanilla multi-language site and created a custom TextLanguage field "custom1" for the images on "home". I wanted to change and save a single language value directly, e.g. $mlFieldValues->setLanguageValue("de", "new Value") ; $p->of(false); $p->save(); But this deletes all other language values. Instead, I have to 1. read in all current values, 2. change whatever language value has to be changed and 3. save the entire object. $newValues = ["de"=>"DE overwritten by script", "fi"=>"FI overwritten by script"]; $p = $pages->get(1); $img = $p->images->first(); $mlFieldValues = $img->custom1; print "\n\nBEFORE:\n";print_r($mlFieldValues); print "\n\nNEW VALUES:\n"; print_r($newValues); $p->of(false); foreach($newValues as $lang => $newValue){ $mlFieldValues->setLanguageValue($lang, $newValue) ; } $img->custom1 = $mlFieldValues; $p->save(); print "\n\nAFTER:\n";print_r($mlFieldValues); Output: BEFORE: ProcessWire\LanguagesPageFieldValue Object ( [default] => previous english value [de] => previous german value [fi] => previous finnish value ) NEW VALUES: Array ( [de] => DE overwritten by script [fi] => FI overwritten by script ) AFTER: ProcessWire\LanguagesPageFieldValue Object ( [default] => previous english value [de] => DE overwritten by script [fi] => FI overwritten by script )
-
Thanks @szabesz My comparison would be based strictly on licensing and 3rd party dependencies, so it wouldn't be fair. I didn't want to inject any processwire modules/jquery, etc. into the frontend. I leave processwire to do what it does best. I found sundeditor while working on a forum project a few years back. The source css/js files are fairly easy to update/customize, and the plain javascript, MIT license, and source were big selling points. So I can't really offer a comparison as I haven't tried modifying tinymce/ckeditor.