Jump to content

Recently Updated Topics

Showing topics posted in for the last 7 days.

This stream auto-updates

  1. Past hour
  2. Just created a new test project and added the module. One thing I noticed immediately was that in my DDEV environment I needed to prefix the commands in order to run them in the actual container. // non-DDEV environment php index.php --at-eval 'echo wire()->pages->count() . " pages\n";' // DDEV environment ddev exec php index.php --at-eval 'echo wire()->pages->count() . " pages\n";'
  3. This is a bit off-topic (however related to Caddy), but I have been re-doing my internal development setup, which is now powered by a dedicated Proxmox server (on a Minisforum MS-01) and uses LXC containers for ProcessWire sites. On some containers, I just have one ProcessWire site, and on others, I have multiple. Previously, I just had one bare-metal, dedicated server with all my sites on it, which is very convenient but I lose having parity with my production environments (which isn't a big deal with a typical website, but more-so for mission critical webapps; also I am trying to avoid using Docker). So my internal infrastructure might look like this: lxc1 site1.domain.com site2.domain.com site3.domain.com lxc2 site4.domain.com Since I want some of my development sites to be accessible from the outside on a dedicated subdomain like shown above, this requires the need of a reverse proxy since my internet connection has only 1 IP address. Therefore, I set up another LXC which runs Caddy as a reverse proxy (also set up fail2ban to deal with stupid hackbots) which works so well and it's ridiculously easy to set up and takes care of SSL automatically. I did this just a couple days ago, after not having played with Caddy for a couple years, so maybe this bit of excitement will get me back into using it directly as well.
  4. Today
  5. szabesz

    I'm back

    @tpr @Martijn Geerts @renobird @cstevensjr @Wanze @pwired @Mike Rockett @Zeka @SiNNuT @DaveP @justb3a @nik @MadeMyDay and so many others...
  6. Thanks @ryan for the "$20/month" vs "pay-as-you-go plan" comparison. Since my experience is very similar (using Cline Bot's "pay-as-you-go" credits), it appears that Anthropic does prefer to employ a vendor lock-in strategy. "Wow this sounds like a really good deal." It was a Black Friday deal, their standard prices are higher, but still affordable (currently $84 for a year). I prefer OpenAI compatible APIs, and IDE plugins that support it. That way I can pay for the subscription I can afford, and use that. That is why currently my favorite tool is the Cline plugin, available for, quote: "VS Code, Cursor, Windsurf, Antigravity, a JetBrains IDE, or Node.js 20+ (for CLI)". Thanks @gebeer for drawing my attention to AGENTS.md, I have so far overlooked it. There is so much to learn. Just like Ryan, I have also recently started testing/using AI-assisted development tools, and Cline for ProcessWire development is what I am most comfortable with at the moment. Now reading the docs for Cline's Rules page, I see that it also supports AGENTS.md, and optionally others as well. So my understanding is that AGENTS.md should be the general guide for AI that comes with the ProcessWire core (or currently through the Agent Tools module), but I can augment it with my other rule files, like the ones I already have: processwire-project.md. This file should only contain project-specific default guidelines that are in addition to the ProcessWire official AGENTS.md. I will need to refactor my rules and skills, cleaning them for contradictions and redundancy. Cline extends that with its Memory Bank feature. I've just started to use it, but I don't have much experience yet. Seems to be a good tool, though.
  7. Yesterday
  8. Hi @PWaddict - I have fixed that in 1.4.0 but I have also created a new 2.0 branch if you'd like to test it. It contains a lot of bug fixes along with removing the need for DOMDocument and eval() Please let me know if you find any issues in 2.0
  9. Last week
  10. 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...
  11. 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.
  12. 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.
  13. 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.
  14. 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
      • Like
  15. Untested... and just a starter idea for your use case, but maybe via a hook in site/ready? if ($input->urlSegments->count > 0 && $input->urlSegment(1) === 'sitemap.xml) { rtrim($input->urlSegmentStr() '/'); };
  16. psy

    SeoMaestro

    Further to above, there was an issue with the sitemap handling urlsegments with the canonical link. Another hook solved it for me:
  17. 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
  18. It's always great to hear feedback, it makes modules a must-have for every developer!
  19. 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
  20. 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. Load more activity
Γ—
Γ—
  • Create New...