Jump to content

Search the Community

Showing results for 'hello'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Welcome to ProcessWire
    • News & Announcements
    • Showcase
    • Wishlist & Roadmap
  • Community Support
    • Getting Started
    • Tutorials
    • FAQs
    • General Support
    • API & Templates
    • Modules/Plugins
    • Themes and Profiles
    • Multi-Language Support
    • Security
    • Jobs
  • Off Topic
    • Pub
    • Dev Talk

Product Groups

  • Form Builder
  • ProFields
  • ProCache
  • ProMailer
  • Login Register Pro
  • ProDrafts
  • ListerPro
  • ProDevTools
  • Likes
  • Custom Development

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

  1. Hello, A small utility I built for my own workflow — export any page directly from the editor as a clean Markdown file. Useful for documentation, content migration, and feeding page content to AI tools. GitHub: https://github.com/mxmsmnv/PageMarkdown What it does: Adds an Export to Markdown button to the page edit form Smart HTML conversion — CKEditor content (tables, lists, headings, links, bold/italic) → standard Markdown Supports ProFields: Table, Combo, Repeater Matrix (with type labels and nested structure) Images and files render as Markdown image/link syntax Page references render as links or titles MapMarker, Email, URL, Color fields all handled Configurable: toggle field labels as headings, ignore lists per field/type, datetime format, empty HTML cleanup Requirements: ProcessWire 3.0+, PHP 8.0+ MIT License.
  2. Hello @ all I want to share a new module with you, which makes the creation and validation of forms easy. Take a look at the following example of a simple contact form: // A very simple example of a contactform for demonstration purposes $form = new Form('contactform'); $gender = new Select('gender'); $gender->setLabel('Gender'); $gender->addOption('Mister', '0'); $gender->addOption('Miss', '1'); $form->add($gender); $surname = new InputText('surname'); $surname->setLabel('Surname'); $surname->setRule('required'); $form->add($surname); $name = new InputText('name'); $name->setLabel('Name'); $name->setRule('required'); $form->add($name); $email = new InputText('email'); $email->setLabel('E-Mail'); $email->setRule('required'); $form->add($email); $subject = new InputText('subject'); $subject->setLabel('Subject'); $subject->setRule('required'); $form->add($subject); $message = new Textarea('message'); $message->setLabel('Message'); $message->setRule('required'); $form->add($message); $privacy = new InputCheckbox('privacy'); $privacy->setLabel('I accept the privacy policy'); $privacy->setRule('required')->setCustomMessage('You have to accept our privacy policy'); $form->add($privacy); $button = new Button('submit'); $button->setAttribute('value', 'Send'); $form->add($button); if($form->isValid()){ print_r($form->getValues()); // do what you want } // render the form echo $form->render(); This piece of code creates a simple contact form and validates it according to the validation rules set. Inside the isValid() method you can run your code (fe sending an email) Highlights: 30+ validation types Support for UiKit 3 and Bootstrap 5 CSS framework SPAM protection Highly customizable Hookable methods for further customization Multi-language You can download and find really extensive information on how to use at https://github.com/juergenweb/FrontendForms. Please report errors or suggestions directly in GitHub. Best regards and happy testing ? If you have downloaded the module in the past I recommend you to uninstall the module completely and install the newest version 2.1.14. There are a lot of changes in the new version, so please test carefully.
  3. Hello @da² Thank you for your detailed explanation! Now I know what your goal is. The first problem by doing additional validations inside the "isValid()" method after all form values are valid is that the form has "status valid" and therefore the form values will be emptied to prevent double form submission. That is the reason why the form is empty. This can be prevented by adding the useDoubleFormSubmissionCheck() method with value false to the form object. The second problem is that the validation of max attempts (if enabled) will be reseted if the form is valid, but it would take further attempts if you are doing additional validations inside the isValid() method. So the max attempts validation in this case does not work. But this can be disabled by using the setMaxAttempts() method and setting the value to 0. So adding additional validations inside the isValid() method is a very dirty solution and the module is not developed to support such a scenario. So the goal you want to achive is very difficult to achive. I am afraid that the module will not be able to solve your problem, but I will wrap my head around it and maybe I have an idea.🤔
  4. Hello @da² I have added a new validation rule that could be interesting for your usecase: uniquestringvalueofpwfield It checks for the uniqueness of a value inside of a specific ProcessWire field. Lets assume you have stored your gaming usernames inside the PW field with the name "gamer_name" which you have added to the user template. Then you could validate the gaming username with the new validator like this: $gamername = new \FrontendForms\InputText('gamername'); $gamername->setLabel('Gamer name'); $gamername->setRule('required')->setCustomFieldName('This gamer name'); $gamername->setRule('uniqueStringValueOfPWField', 'gamer_name', ['user']); $form->add($gamername); As you can see, you have to add the name of the PW-field (= gamer_name) as the first parameter. The second parameter (= the name of the template") is not mandatory, but it makes sense in this case to restrict the search only for entries in the user template. Add this as an array, because it also possible to search in multiple templates). Otherwise the search will be globally on all templates where this ProcessWire field is added. To use the new validator please update to 2.2.13 Best regards Jürgen
  5. Hello @da² looks like it is not so difficult 🙂. First of all I would take a look at the following Inputfield: https://processwire.com/modules/fieldtype-text-unique/ This looks interesting and if it fits to your needs, than add it to the user template in the backend as the field containing the gamer name. Second, take a look at the uniqueEmail or uniqueUsername validators, which are already included in FrontendForms. These validators could be used as a starting point for your own validation rule. Take them as an example to create your own custom rule for gaming names.
  6. Ivan Gretsky

    I'm back

    Now when they're all pinged, we need to have something for them... Something to do or to write about... Maybe just say hello and share where they're at now...
  7. Hello @da² I have added a new method to trigger an error message to a field manually: setErrorMessageToField() Here is a small example on how to use it: $form = new \FrontendForms\Form('testform'); $form->setMaxAttempts(0); $form->setMaxTime(0); $form->setMinTime(0); $firstname = new \FrontendForms\InputText('firstname'); $firstname->setLabel('Firstname'); $firstname->setRule('required')->setCustomFieldName('The first name'); $form->add($firstname); $button = new \FrontendForms\Button('submit'); $button->setAttribute('value', 'Send'); $form->add($button); if ($form->isValid()) { $form->setErrorMessageToField($firstname, 'This is my custom message'); } echo $form->render(); If the "default validation" was successful, then the error message will be displayed under the "firstname" field in this case. You can use it to make another validations inside the isValid() function to check the submitted form values against other conditions. If the conditions fail then you can output this manually triggered error message like written above. To use the new method, you have to replace the file site\modules\FrontendForms\Formelements\Form.php with the one from Github or you simply add the new function to your Form.php. Please let me know if this helps.
  8. ProcessWire Email Obfuscation (EMO) Download | GitHub Email Obfuscation module for email addresses with 64 base crypting. This module finds all plaintext emails and email links from the document and replaces them with span elements including configurable replace text. All the addresses are encoded to 64 base strings and stored in spans data attributes. Then on client side we decode these strings back to their original state. Install Create new 'EmailObfuscation' folder into /site/modules/ and place the content of this repository into the directory. Login to processwire and go to Modules page and click 'Check for new modules'. Find 'EmailObfuscation' and click install. You can make optional configuration changes in the module admin page. Thanks This is a ProcessWire module fork from MODX Evolution plugin emo E-Mail Obfuscation. http://modx.com/extras/package/emoemailobfuscation EDITED ON: 2013-03-03 - Added description. 2020-04-16 - Fixed GitHub links and updated description. Hello all. Just found PW few days ago and it's already looking awesome! Here comes first contribute and some questions for developing it further. There was one existing email obfuscator on reposity that didn't use any crypting for addresses so I decided to do a little test run and port the one that we currenly use with MODX Evo to ProcessWire module. I'd like to make PageAutocomplete like gonfigure option to admin so that one could select and set templates to exclude module action. It looks like autocomplete is tied to pages and since templates are not set to system as pages this is option is no go, am I right?
  9. Hello, After form validation, is it possible to force the form to display an error on a given field? This is possible with the processwire core InputfieldForm and I often use it. Generally I use this to do additional and more complex checks after the basic form validation. For example the form contains a file upload field, it's a zip and I have to validate zip content, if it's not valid the form should display values entered by user with an error message on this field. I know I can create a custom validation rule, but within this validation I have to access variables that are outside the form. For example the form is to edit an ItemData instance, and within the validation I need to access this object. Can I pass variables to the validator custom rule? I looked at the documentation, what is the $params parameter, can I use it to pass variables to validator? Valitron\Validator::addRule('alwaysFail', function($field, $value, array $params, array $fields) With the core InputfieldForm I created a wrapper class and I use it this way: $onValidate = function (AccountEditionForm $form): void { // $onValidate is called only if form basic validation succeeded. if (someCondition) { // Triggering an error, $onSuccess won't be called, // form field will be red with error message, // form still filled with user values so user has only to fix the field with error. $form->setError('fieldName', 'errorMessage'); } } $onSuccess = function (AccountEditionForm $form)): void { // Form is valid (basic validation + $onValidate), use its data. }; $form->execute($onSuccess, $onValidate); Is there a way to do this kind of process, or can you recommend me another way? Thank you.
  10. Hello, Recently I did an extensive research and found https://maileroo.com/pricing to be the best value compared to similar services I found. I registered with them, but the project I will use it for has not yet reached the point where it is actually needed. The ProcessWire instance in question can also handle the initial email sending volumes using the VPN’s own SMTP service.
  11. Version 3.0.161 on the dev branch continues with the updates optimizing our support for the new selector operators introduced in last week's blog post for 3.0.160. Last week I was still kind of figuring it out and the code still needed some refactoring and optimization. This week several parts have been rewritten and it's been improved quite a bit. Though the end result is still very similar to what was demonstrated last week, but now it's a lot more performant and solid. One thing new this week that's also kind of fun: you can now use more than one operator in any "field=value" selector expression, at least from the API side. And it works anywhere that you might use a selector, whether querying the database or something in memory. I think the best way to explain it is with an example. Let's say that you want to find all pages with a title containing the phrase "hello world" — you'd do this using the "contains text/phrase" operator: *= $pages->find("title*=hello world"); But let's also say that if you don't find any matches, you want to fallback to find any pages that contain the words "hello" and "world" anywhere in the title, in any order. We'd use the "contains all words" operator "~=" to do that. So now you can add that operator to the existing one, and it'll fallback to it if the first operator fails to match. So we'll append the "contains all words" operator to the previous one: ~= $pages->find("title*=~=hello world"); Cool huh? But maybe we still aren't finding any matches, so we want to fallback to something even broader. So if the phrase match fails, and the words match fails, now we want to fallback to find any pages that contain the world "hello" OR "world", rather than requiring them both. For that we can use our new "contains any words" operator: ~|= $pages->find("title*=~=~|=hello world"); This example is getting a bit contrived now, but let's say that if we still haven't found a match, we want it to find any pages that have any words starting with "hello" or "world", so it would find pages with words like "helloes", "worlds", "worldwide", etc. That's a job for our new "contains any partial words" operator: ~|*= $pages->find("title*=~=~|=~|*=hello world"); Okay last one I promise—you probably wouldn't stack this many in real life, but stay with me here. Let's say the query still didn't find anything, and as a final fallback, we want it to find any words LIKE "hello" or "world", so that those terms can match anywhere in words, enabling us to find pages with words like in the previous example, but also words like "phellogen", "othello", "underworld", "otherworldly", etc., and that's a job for our new "contains any words like" operator: ~|%= $pages->find("title*=~=~|=~|*=~|%=hello world"); So that looks like a pretty complex operator there, but as you've seen by following the example, it's just these 5 appended operators to each other: *= Contains phrase ~= Contains all whole words ~|= Contains any whole words ~|*= Contains any partial words ~|%= Contains any words like I think a more likely scenario in a site search is that you might stack two operators, such as the *= followed by the ~|*=, or whatever combination suits your need. By the way, you can do this with any operators, not just the text searching ones. But if you didn't read the blog post last week, also be sure to check out the other new operators in addition to those above: *+=, **=, **+=, ~*=, ~+=, ~~=, ~%=, #=. I think these new operators help out quite a bit with ProcessWire's text searching abilities. But there's one thing that's kind of a common need in search engines that's not easily solved, and that's the handling of singular vs. plural. At least, that's a common issue when it comes to English (I'm assuming so for other languages, but not positive?) MySQL fulltext indexes can't differentiate between singular and plural versions of words, so they index and match them independently as completely different words. This can be unexpected as clients might type in "goose" and expect it's also going to match pages with "geese". I've already got something in the works for this, so stay tuned. Thanks for reading and hope you have a great weekend!
  12. Hello community, to my surprise and delight, my module “FrontendAutoReload”, which was previously only published on Github and used exclusively by me, was presented in the ProcessWire Weekly Newsletter #545. And because I haven't encountered any problems using it so far, I'm in the process of submitting it to the module repository. It's basically a little helper for ProcessWire template development, which automatically hits the refresh button in your browser each time a change in the template folder is detected. Not groundbreaking but a convienient timesafer. I would therefore be delighted if it could also be of some help to other developers. For information on how to use it, check out FrontentAutoReload on Github. If you have any questions, don't hesitate to ask them.
  13. Hello ProcessWire forums, I am sharing a new page I developed for cybersecurity and DevOps expert Julie Tsai. Built with ProcessWire, it includes use of ProModules FormBuilder for the contact form and ProFields for the soon to be launched Blog section, where a Repeater Matrix controls the flow of content. Always enjoy working with this CMF and learning all that it's capable of … each time something new emerges. https://julietsai.net/
  14. Hello, Interesting "topic". However, what's the site's URL?
  15. Hello @Peter Knight, we’re really impressed with your work! We’re currently using Media Manager, but unfortunately it’s no longer being developed, so we’re urgently looking for a modern alternative. Media Hub could be the solution. As an agency, we’d also like to use it commercially – do you have any thoughts on this?
  16. Hello again! I'm moving my website: Norwegian to Polish dictionary http://lizus.net (ca. 28k pages) from Glossword to ProcessWire. Everything looks great except one thing: for each page there is created empty subfolder in site/assets/files. So I've got ca. 28k empty and unused folders which takes around 4kB each on my server (sic!). The same situation is with site/assets/cache :/ Is there any solution to improve this? Best regards, Remi Turala.
  17. Hello @Mikel, thanks for your words. Of course I can only report on my experience, but people don't go shopping for fonts. The don't buy different fonts of many font-families. They just stick with one family or some styles of that family. 🙂 I know, at last, it's the same and doesn't change anything since a Stripe Payment Link was just made for one product and not 10. I thought about that limitation a bit and had some research about Stripe, and it’s API possibilities. I thought about to possibly rewrite the module to accept payments via a Checkout‑Session with dynamic line_items and metadata and a bundled download page for the buyer. Goal is that the buyer could just select more than one font style of a font family and then click to buy them. With the click it will be sent to Stripe with a checkout-session with line_items and metadata. A cart system could be added, to. After payment, the data that comes back from stripe is analysed and the buyer get its downloads. Well, I have to think about that. 🙂 I know it’s quite unusual, but we don't need a full e-commerce shop with a cart and anything. So, the bottle would be perfectly adequate for hitting the nail. 😉 Cheers, Thomas
  18. Hello, we've been working on a module to convert Microsoft Protected Links (Safe Links) so they display as their original URL. Protected links leak the email address of the person who copied the link into the page (eg. https://aus01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.antarctica.gov.au&data=05|02|EMAILADDRESS%40example.com...) This is not ideal, and we find more and more protected links turning up now that most of the Microsoft product offerings use protected links (Teams, Office, Copilot etc.) TextFormatter modules typically only reformat the text on output, leaving the page content containing the protected link. Is it acceptable for a Text Formatter module to save the formatted string back to the page? Maybe as an optional configuration in the module settings? Or, is it better to achieve this using a standard module?
  19. Hello @grewr11 Thanks for pointing out this issue. I have removed the sanitizer for names on the "Name" field, because usernames are allowed to have numbers in it. This was a thinking mistake. Now it should work as expected. Please replace the following file to get it working: https://github.com/juergenweb/FrontendComments/blob/main/FrontendCommentForm.php I have discovered another issue, with WireMail and localhost, so please replace the following file too: https://github.com/juergenweb/FrontendComments/blob/main/Notifications.php You will find all information about the changes in the changelog.md. I haven't worked on this module in a long time, so there could be more problems. Please report any problems, I will try to solve them as soon as possible. Jürgen
  20. Hello @adrian that's great, I had an older version (from 2022) on my machine, so I installed it on my local ProcessWire which I use for my French translations (so it's not necessarily representative of all situations, as it's always up to date with the latest version, ProcessWire 3.0.256 © 2026). then I commented out the module folder and replaced it with the namespaced version folder. After a short normal update time, the only thing visible was a small alert ModulesInfo: Upgrading module (TracyDebugger: 4.23.40 => 4.28.0) the site is still up and running, no errors, and Tracy seems to be working fine. tried on a php 7.4.9 and 8.1.31 hope this may be somehow useful have a nice day
  21. I'm trying to work out how to use ProcessWire, but seem to have stumbled at the first. I am copying the steps in the 'Hello Worlds' tutorial here: https://processwire.com/docs/tutorials/hello-worlds/ Having done step 3, when I click view, I don't see the html from the template, I just see the same template as the home page with 'Default content'.
  22. Hi @benbyf I just wanted to say hello because it's nice to come across a UK person (I'm in Oxford) working with ProcessWire, which I have started using in the last 2 years. Also nice to make a link with you from the Machine Ethics podcast which I've listened to.

    I'm also ethics focussed; I only work for orgs that I think increase hope, work for environmental/social justice etc. As part of that I spend a lot of my time being a pain to my clients by trying to encourage ethical web design (e.g. accessibility, avoiding dark patterns, open source (free) software and sustainability, avoiding dependency/funding problematic companies/people/systems, challenging AI use...etc.)

    I like your "written by human" badges on your site - I'm actually working with someone on that concept: badges/info to declare where content is partially or completely AI generated, or AI-free.

    It would be great to have a chat some day! But I just wanted to wave across to you. Happy 2025!

    rich (they/them)

    web: https://artfulrobot.uk
    email: hello at artfulrobot.uk
    social (fediverse): https://fosstodon.org/@artfulrobot

    1. benbyf

      benbyf

      Hi Rich!

      Nice to hear from you and your general interests we share, keep up the good fight! 🙂

      Please tell your friends about the podcast 😉 let me know if you ever want to knock heads on ethical or good design stuff. Currently trying to do less web and more AI ethics and Games stuff but still love Processwire and have a few clients I tick over on PW sites. I make all my own sites using PW too... though in my heart I would love to move to something in Python as PHP is a pain in the arse 😕 

      Anyways, let me know if you're ever in Bristol.

      Ben

  23. Hello @_Roy_, you have to add or change the styles in the module settings, so that you can see it in the editor: https://processwire.com/blog/posts/using-tinymce-6-in-processwire/#customizing-the-styles-dropdown https://processwire.com/blog/posts/using-tinymce-6-in-processwire/#adding-extra-css-styles-without-adding-to-em-styles-em-dropdown You are right, ProcessWire doesn't know what framework you are using. That is why you have to tell the editor which classes of your framework you want to use. Regards, Andreas
  24. Hello Robert, Does your plugin support filling in fields?
  25. Hello @ttbb I have tried to reproduce the issue you had described, but in my case everything works as expected. I have used Bootstrap 5 and 2 contact forms side by side using the "row" and "col" classes. This works as expected as long as the errors are form errors (wrong or missing input data). But I have discovered an issue by showing the alert box if the form has been submitted too fast. In this case it did not jump to the top of the form properly to show the alert box that informs the user that the form has been submitted too fast. Therefore I have made some changes to make this work properly. Take a look here at the changelog file. So please update to the latest version 2.3.11 and let me know if there are some problems left. Best regards Jürgen
×
×
  • Create New...