Recently Updated Topics
Showing topics posted in for the last 7 days.
- Past hour
-
I did not know that, never clicked a link in the title column, always on an upgrade link, if available...
-
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
- Today
-
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.
-
Thank you for your advises and corrections. I think we're done with this issue.
-
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 & 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
-
module Fluency - The complete translation enhancement suite for ProcessWire
maximus replied to FireWire's topic in Modules/Plugins
I not owned module. I think not good idea storage 3 files 🙂- 318 replies
-
- 1
-
-
- translation
- language
-
(and 1 more)
Tagged with:
-
@AndZyk Uiii, very nice. Was just wondering if it could get official that the core files are inside the vendor directory.
-
@ryan the AgentTools module looks really promising. Really interested to see how this develops. I wanted to share that I tried it out today with a fresh Claude API token and the response was quite strange and weirdly formatted. (See screenshots). This was in a local dev environment using MAMP/localhost
- Yesterday
-
Collections — Airtable-style data management for ProcessWire
elabx replied to maximus's topic in Modules/Plugins
This looks amazing. Thanks for sharing! -
Hi everyone, Built this for a financial news site that needed live stock quotes embedded inline in editorial content. Drop a ticker into any text field and it renders as a live badge with price, change, and direction - clicking opens a full detail popup. GitHub: https://github.com/mxmsmnv/Stocks What it does: Live price badges - ticker, price, change amount/%, direction arrow; click opens a popup with open/high/low, 52-week range, P/E, volume, market state Three data providers - Yahoo Finance (free, no key needed), Finnhub, Alpha Vantage TextFormatter with three parse modes: Explicit [stock:AAPL] tags Cashtag/hashtag - $AAPL, #TSLA Auto-detection by company name and aliases in text Company Manager - tracked companies with names, aliases, enable/disable toggles, bulk CSV import Four CSS frameworks - Vanilla CSS (built-in), Tailwind, Bootstrap 5, UIkit 3; auto-detected or manually set File-based cache with configurable TTL and per-ticker clear from admin Circuit breaker - pauses API calls after repeated failures, serves stale cache with ~ marker Custom provider API - add any data source by extending StocksProviderBase $stocks = $modules->get('Stocks'); echo $stocks->renderBadge('AAPL'); echo $stocks->renderBadgeAs('TSLA', 'bootstrap'); Requirements: ProcessWire 3.0+, PHP 8.2+ MIT License.
-
- 5
-
- Last week
-
The Tracy core now supports some new AI agent tools: https://github.com/nette/tracy/releases/tag/v2.12.0 I have included this new version, but also extended it so there is now a new bluescreen panel with the Agent Markdown version for easy copying into your AI deity of choice. I also added a copy MD to clipboard button for those exception files generated by guest users (in production mode):
-
https://demo.processwire.com/
-
-
Hello @Peter Knight To be clear, FrontendForms doesn't send any form data by default – it just checks whether a form is valid or not. Inside the isValid() method, you can send form data — or do whatever you want (e.g., store the values on a page). So it's not a "Email Form" module by default. Informing about what went wrong So in this case, it's a bit more complicated. The validator can only set the form validation to true or false (without sending information to an administrator). Of course, it could happen that a real person uses some characteristics of a SPAM text and the text is therefore declared as SPAM. This risk always exists, but it is very low. For this reason, it is necessary to inform the user about which mechanisms were responsible for the failure of validation. But I agree with you: too much detailed information (e.g., word 1 and word 2 are SPAM words) could give a human spammer too much information. My Opinion: In this case you have to make a compromise. You can't stop SPAMMERS completely. If it's a bot, it should post a fixed text in a text box – it will fail and can't react the way it changes the SPAM text it's going to pass. When you have real human SPAMMERS, it becomes much harder to stop them, because they can react much different than a bot. At the moment, the information in the error message is very general and doesn't contain too much detailed information. Yes the danger is always there, especially with AI - so I guess I leave it general. You can also change the error message to your own by asking the user to call you by phone if the message fails validation. Another option would be to set the threshold lower (e.g. from 50 to 30) so that more SPAM properties are accepted and the entered text is more likely to pass validation. I don't know what the "best practice" scenario is in this case. Maybe someone has an idea how best to deal with messages that have been falsely declared as SPAM, even though they are not.
-
Hi @nbcommunication - I've actually set up my own report endpoint which logs to PW log files (csp-report and csp-report-only). I also ping via slack for any enforced violations. The only thing I still have in report-only mode now is "require-trusted-types-for". I have actually reported to a few open source projects I integrate about the changes to support "require-trusted-types-for" and they've actually been very responsive so I am hoping to be able to enforce this option very soon also. Note that I do exclude violations from browser plugins and the like, so my csp-report log is actually almost completely silent now. I do have separate policies for frontend vs PW admin which helps because PW still has various inline scripts and no nonce (yet). I am using Cloudfront but all my CSP and nonce logic is handled locally in my /site/init.php file - it's very different and much stricter than what I posted earlier above. I have Cloudfront enabled caching for all assets, but I am not using Procache for a variety of reasons, but performance with Cloudfront asset caching is a pretty good middle-ground.
-
Context Module - AI-Optimized Site Documentation with TOON Format
maximus replied to maximus's topic in Modules/Plugins
Context v1.5.0 — AI Gateway Hi, just pushed a new release. The main addition is a centralized AI Gateway — a ContextAI class that any ProcessWire module can use to make AI requests through a single shared configuration: $ai = wire('context')->ai(); // Simple $text = $ai->complete('Summarize: ' . $page->title); // Full options $result = $ai->chat([ 'messages' => [['role' => 'user', 'content' => '...']], 'model' => 'openai/gpt-4o-mini', 'caller' => 'MyModule', ]); // Gateway entry point for third-party modules $result = $ai->gateway(['caller' => 'MyModule', 'messages' => [...]]); Supported providers: OpenRouter (200+ models via one key), OpenAI, or any OpenAI-compatible endpoint. New settings fieldset: provider, API key, default model, temperature, max tokens, timeout, global system prompt, and a Test Connection button that fires a live request and shows the response time. The idea is that modules don't need to implement their own HTTP clients or manage API keys — they just call wire('context')->ai() and everything is configured in one place. GitHub: https://github.com/mxmsmnv/Context -
Hey NEO in this instance is more aligned to “new” than any acronym or AI /LLM technology. I guess the upper case letters suggests an acronym but, honestly, I just liked the visual rhythms of both words. Not sure if this answers your question or if I misunderstood?
-
I’m using the core FieldtypeComments in ProcessWire and everything works correctly on the frontend and in the database. Comments are saved properly and displayed without issues. However, in the admin I get a one-time SQL error after a new comment is submitted: SQLSTATE[HY000]: General error: 1525 Incorrect TIMESTAMP value: '1777649215' Observations: Difference between “error value” and stored value is consistently +3600 seconds No data corruption or functional issues occur Environment: PHP timezone and $config->timezone both set to Europe/Brussels The warning only appears once per comment submission and does not affect saving or rendering. Has anyone seen this behavior before with FieldtypeComments?
-
Start - Personal quick-access dashboard with visual link editor
maximus replied to maximus's topic in Modules/Plugins
Yes, I know it well — great Dashboard module! I've used it on almost every project to keep the admin from feeling bare. But as projects grew, I kept hitting the same wall: customizing Dashboard meant writing PHP for each install, and the widget lists got unwieldy. Start (and its companion module Collections) came out of that frustration — the goal was a fully visual, no-code editor where you just drag, drop, and pick icons without touching any config files. -
Hi. I have set up a 301 redirect in the host webspace to redirect to a pw site on to my other host server. I simply have these 2 lines in .htaccess and nothing else. (There is no pw on this webspace) RewriteEngine On RewriteRule (.*) https://my-otherdomain.com/mysub [R=301,L] On this other server I have pw installed in a folder www/mysub This works in so far the home page is shown as expected but internal links give internal server error. I suspect because url slugs are referencing the wrong server. Do I need to add rules for this and any idea what rules to add ? Thanks for any help-
-
Mm picture tags could work but then that means creating portrait-oriented edits for every corresponding desktop slide image - and that's not always possible depending on what design will be shown, especially when I begin uploading the rest of my projects. If I'm querying mob vs desktop based on tagged images won't that impact caching regardless? Maybe I misunderstood. In the end I may end up doing extra edits but it's a bit of a pain. Maybe excluding the slideshow from Procache might be another idea...if possible
- 12 replies
-
- beginner portfolio
- masonry
-
(and 3 more)
Tagged with:
-
You need an M5 Mac with 128GB RAM, I think (see: https://www.youtube.com/watch?v=SmuX-Al7DUs&t=173s) I have a M4 Pro Mac Mini with 24GB RAM. I cannot run anything more demanding than Qwen3-VL-8B, as the model must be kept in memory (you don’t want to wait for a model to load, I load it before starting to work on something and unload it at shutdown). I do not use Qwen3-VL-8B for coding, instead I use GLM, Gemini subsriptions (and recently, for that given project only, the client pays for Claude subscription so that I can use it). I also like the image descriptions Qwen3-VL-8B generates. IMHO, strangely, it is better than any other LLM I’ve ever tried in this use case. My only issue with Qwen3-VL-8B was that in chat mode it spits out emojis by default all the time, which I hate, but the “NEVER use emojis!” system prompt in LM Studio solved that.
-
Determine if current request is url/path hook
adrian replied to Ivan Gretsky's topic in API & Templates
I actually came across the need for this as well. @ryan - could we perhaps have: $page->isUrlHook In my case I have url segments enabled on the homepage and some logic to process them, but that logic can't tell if it's a urlsegment or a path created by a URL hook. I ended up with this for now: $urlHookSegments = []; $pathHooks = $wire->hooks->pathHooks ?? (new \ReflectionProperty($wire->hooks, 'pathHooks'))->getValue($wire->hooks); foreach ((array) $pathHooks as $hook) { $match = $hook['match'] ?? ''; if (preg_match('#^/([^/{(]+)#', $match, $m)) { $urlHookSegments[$m[1]] = true; } } if ($input->urlSegment1 && !isset($urlHookSegments[$input->urlSegment1])) {- 1 reply
-
- 1
-
-
PromptWire is now at v1.9 and includes a few new features and fixes. The list below is AI-generated... Diagnostics can run against production The eight read tools (pw_health, the four pw_db_* ones, pw_logs, pw_last_error, pw_clear_cache) now accept site: local | remote | both. Previously site: remote was silently ignored and queried the local database instead. Bulk page push to remote or both pw_pages_push accepts targets: local | remote | both. Pages go in parent-first order so newly-created parents exist before their children try to attach. Pull pages back from production pw_page_pull source: remote fetches a page that was edited directly in the production admin and writes it into your local sync tree, so you can re-edit and push back without touching the live admin. Phantom diffs eliminated from pw_site_compare Page content is now hashed deterministically across environments. Identical content produces identical hashes regardless of timezone, page-array storage order, or whether a date field has an output format set. pw_modules_list Lists installed modules with version, file path, and install state. Pass site: both to compare local vs production install state in one call. pw_users_list Lists users with id, name, email, roles, and any member_* fields. Pass includeAll: true for every non-system field on the user template. pw_resolve Bulk name-to-id lookup for fields, templates, pages, roles, permissions, users, or modules. Translates names into the equivalent IDs on the target site without one round trip per name. pw_inspect_template Like pw_get_template but each field comes back as {name, type, label}. Designed for spotting fieldgroup differences before pushing changes. File inventories include .module files and symlinked module directories Previously the file sync silently skipped any modules developed in symlinked sibling repos. pw_modules_list bugfix (v1.9.1) The default call with no classes filter was returning null class names. Caught during release validation and patched the same day.
-
FieldtypeDimensions – product dimensions and weight field
adrian replied to maximus's topic in Modules/Plugins
There is nothing good about imperial 😜