Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 03/29/2023 in all areas

  1. TextformatterFootnotes Github: https://github.com/eprcstudio/TextformatterFootnotes Modules directory: https://processwire.com/modules/textformatter-footnotes/ This textformatter adds footnotes using Markdown Extra’s syntax, minus Markdown About This textformatter was primarly created to ease the addition of footnotes within HTML textareas (CKEditor or TinyMCE) using Markdown Extra’s syntax. It will also retain any inline formatting tags that are whitelisted. Usage To create a footnote reference, add a caret and an identifier inside brackets ([^1]). Then add the footnote in its own line using another caret and number inside brackets with a colon and text ([^1]: My footnote.). It will be put automatically inside the footnotes block at the end of the text. Notes the identifier has to be a positive number (int) if a reference has no corresponding footnote (or vice-versa) based on their identifier, both will be ignored and left as is by default references/footnotes are sequenced per field, meaning if you are outputting several fields with this textformatter each footnotes group will start from 1 block elements are not guaranteed to work in footnotes and are thus removed by defaut Options In the module settings you have some options regarding the generated markup: you can change the icon (string) used for the backreference link you can change the classes used for the wrapper, the reference and backreference links you can decide to sequence the footnotes from different fields continuously, instead of restarting from 1 you can edit the list of whitelisted HTML tags that won’t be removed in the footnotes Hook Dynamically change options If you want to have a more granular control over the footnotes (e.g. per field), you can use this hook: $wire->addHookBefore("TextformatterFootnotes::addFootnotes", function(HookEvent $event) { $str = $event->arguments(0); $options = $event->arguments(1); $field = $event->arguments(2); if($field != "your-field-name") return; // Say you want to change the icon for a <svg> $options["icon"] = file_get_contents("{$event->config->paths->templates}assets/icons/up.svg"); // Or change the wrapper’s class $options["wrapperClass"] = "my-own-wrapper-class"; // Put back the updated options array $event->arguments(1, $options); }); Check the source code for more options. Group all footnotes in a page Since a textformatter is applied per field, its footnotes are appended right after its content. If you have multiple fields and want to ouput all footnotes in the same place you can use the outputAsArray option: // in init/ready.php $wire->addHookBefore("TextformatterFootnotes::addFootnotes", function(HookEvent $event) { $options = $event->arguments("options"); $options["outputAsArray"] = true; $event->arguments("options", $options); }); $wire->addHookAfter("TextformatterFootnotes::addFootnotes", function(HookEvent $event) { if(empty($event->return["footnotes"])) return; $footnotes = setting("footnotes") ?: []; $footnotes = [ ...$footnotes, ...$event->return["footnotes"] ]; setting("footnotes", $footnotes); }); // in your template file echo $modules->get("TextformatterFootnotes")->generateFootnotesMarkup(setting("footnotes")); Note: if you are using this method to output your footnotes and want to dynamically change the markup/icon, please use the TextformatterFootnotes::generateFootnotesMarkup hook instead of TextformatterFootnotes::addFootnotes
    5 points
  2. HTMX will see the hx- attributes on your element and send a GET request to yourdomain.at/trigger_delay with the value of the input named “q” whenever it is triggered. Whatever the server sends as a response, HTMX will put in the div at the bottom (HTMX calls this “swapping“). Or something like that. I’m not familiar enough with HTMX’s defaults and the trigger syntax to be sure that your code will definitely work. Looks good though. The important parts happen in /trigger_delay, obviously. That is in keeping with HTMX’s whole raison d’être of mostly sticking to doing things on the server. What’s sticking out to me is the url of your endpoint “/trigger_delay”. It looks like this is supposed to be a page that returns search results or type-ahead suggestions, so I would expect something like “/search”.
    2 points
  3. This module allows you to integrate hCaptcha bot / spam protection into ProcessWire forms. hCaptcha is a great alternative to Google ReCaptcha, especially if you are in the EU and need to comply with privacy regulations. The development of this module is sponsored by schwarzdesign. The module is built as an Inputfield, allowing you to integrate it into any ProcessWire form you want. It's primarily intended for frontend forms and can be added to Form Builder forms for automatic spam protection. There's a step-by-step guide for adding the hCaptcha widget to Form Builder forms in the README, as well as instructions for API usage. Features Inputfield that displays an hCaptcha widget in ProcessWire forms. The inputfield verifies the hCaptcha response upon submission, and adds a field error if it is invalid. All hCaptcha configuration options for the widget (theme, display size etc) can be changed through the inputfield configuration, as well as programmatically. hCaptcha script options can be changed through a hook. Error messages can be translated through ProcessWire's site translations. hCaptcha secret keys and site-keys can be set for each individual inputfield or globally in your config.php. Error codes and failures are logged to help you find configuration errors. Please check the README for setup instructions. Links Github Repository and documentation InputfieldHCaptcha in the module directory Screenshots (configuration) Screenshots (hCaptcha widget)
    1 point
  4. Lol, indeed! ? If you enable trailing slashes you get redirected from non-slash to slash urls ? Thx for the quick help!
    1 point
  5. There is this setting, but I’m not sure whether it will redirect or 404 if the undesired option is requested.
    1 point
  6. Thanks @DV-JF just fixed it to make things easier.
    1 point
  7. Hey @flydev thank you for providing this module, it's really helpful to me an safes a ton of time! Just want to mention that there seems to be something wrong with the version number on PW: Also when trying to update the module (obviously) Cheers !
    1 point
×
×
  • Create New...