Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


Posts posted by Chris-PW

  1. 4 hours ago, nurkka said:

    @Chris-PW Many thanks for contributing this module. That was really a much needed missing feature.

    I am using the module with Chrome (Iron) under Windows 11, where in TinyMCE fields, pressing CTRL-S saved the page twice. It seems, that Chrome/Windows reacts also to "meta-s". I then went to quicksavetinymce.js and commented out the block for "ctrl+s". Now, pressing CTRL-S within a TinyMCE field saves the page only once.

    Thanks again for this great module!

    P.S.: This also works with Firefox/Windows


    Thank you for your feedback and that you like my module.
    It seems that the meta+s shortcuts are also triggered in Windows or only from Windows 11. Unfortunately I have no way to test the module on Windows.

    It would be great if you could remove ctrl+s in quicksavetinymce.js and just put meta+s.
    It's best to clear the cache.

    I would be very interested to know whether only Meta+s are actually sufficient for Windows in TinyMCE.
    Thank you in advance for your feedback

    meta+S is only integrated so that it can be saved even when Caps Lock is active. You could actually leave that in.

  2. On 4/14/2024 at 12:28 PM, Ivan Gretsky said:

    @Chris-PW, the module looks pretty cool. But using it without github and modules repository is kind of hard and limits the possible audience for it. And it is harder to contribute.

    Could you please reconsider @netcarver's advice?

    Yes, of course I like to do it, as described in the post above. But first I have to register on Github and see how things work there. Then I also have to read here for Processwire how to get into the module directory. As soon as I find time for it, I'll definitely do it.

    • Like 1
  3. 3 hours ago, Chris-PW said:

    Great and thank you, we had similar thoughts about the need for jQuery and further optimization. I just installed the JS version and have already adapted the TinyMCE plugin. For me, your version doesn't work optimally with the keyboard shortcut and text fields (see video). I have to press the combination twice and it looks like it then jumps to the button at the bottom of the page.

    I hope to find some time soon to take a closer look at it and try to combine my unpublished pure JS version with yours.


    It now also works on Mac with Firefox. Some other changes are also included.

    The new optimized and vanilla-js QuickSave version 0.1.7 is available as a new download in the first post.

    • Like 4
  4. 11 hours ago, gebeer said:

    Great module.

    This really improves UX a lot, especially on larger page edit screens.

    I can confirm that Ctrl+s is working on Linux Firefox & Chromium (with improved JS version from @dotnetic).

    Great, thanks for the feedback that it also works under Linux. Can you also save directly from an active TinyMCE-RTE field using a keyboard shortcut under Linux without the optional TinyMCE plugin? It doesn't work for me on the Mac without the optional TinyMCE plugin.

    I already mentioned a complete implementation better without jQuery at our meeting yesterday. Now, without knowing it, @dotnetic converted it to “Vanilla JS” almost at the same time. I think pure JS is great. (Whether the file size is really that relevant, if so, I can integrate a completely minimized file into the final module version.) The pure JS version doesn't work optimally for me yet - see post above.
    I had already started replacing jQuery with JS in an unpublished version. I also had a change for the scroll position, because from what I read, you should tell the newer browsers that you want to determine the position yourself, etc. I will compare and combine and then put a new version in the first post above . I would like to avoid that we end up with a jumble of versions of module downloads. I hope I'll find the time to do it soon, but at the moment both versions seem to be working quite well.

    Short feedback from you too, about the direct shortcut saving from the activated text in a TinyMCE or CKE field under Linux would be great. Really interesting that operating systems and browsers handle this differently. (If it really only doesn't work on Mac, I would also like to adapt the module description in the new version).

    Greetings to everyone and have a nice weekend.

  5. 20 hours ago, dotnetic said:

    Please find attached an improved version in vanilla javascript which is much smaller 2.4 kb instead of 6.75 kb and more efficient without using a scroll listener. Tested in Firefox and chromium based browsers on windows. Please report if it does not work somewhere else.

    I didn't change the TinyMCE plugin, so I don't now if it still works.

    QuickSave.zip 2.6 kB · 4 downloads

    Great and thank you, we had similar thoughts about the need for jQuery and further optimization. I just installed the JS version and have already adapted the TinyMCE plugin. For me, your version doesn't work optimally with the keyboard shortcut and text fields (see video). I have to press the combination twice and it looks like it then jumps to the button at the bottom of the page.

    I hope to find some time soon to take a closer look at it and try to combine my unpublished pure JS version with yours.




  6. 15 minutes ago, dotnetic said:

    Works fine on Windows in Chromium-based browsers and Firefox. I didn't even have to use the plugin for TinyMCE, it just works out of the box.

    Thank you for the feedback and the test in the browser under Windows. 😀  In my Mac environment (Sonoma with Safari, Firefox, Chrome) I need the extra plugin for TinyMCE and the keyboard shortcut cmd+s combination.

  7. 1 hour ago, netcarver said:

    @Chris-PW Welcome to the plugin-author's club 🙂

    Would you be able to create a github account and create a repository for this? It's the next step to getting this published in the PW modules DB.

    I haven't bothered with Github yet other than downloading a zip there. But as soon as I find time for it, I will gladly publish the module there.

    • Like 3
  8. Following the advice of some PW-forum members @gebeer @dotnetic @bernhard @sebibu, I would like to share my first Processwire module with all members.

    QuickSave: My first attempt at developing a PW module to quickly save a page.

    What can the module QuickSave do:    
    Quickly save a page edit in the admin and return to the last activity. Adds an extra save button AND shortcuts CMD+s and CTRL+s. QuickSave includes an additional plugin for TinyMCE. The plugin for TinyMCE must be assigned and activated specifically for these textarea fields. (Keyboard input shortcut does not yet work in an iFrame - RTE/iFrame, CKE, etc.)


    To install the module, it simply needs to be copied into the Processwire module directory and then activated in the Processwire admin.
    Anyone who uses TinyMCE can activate the keyboard input shortcuts via the configuration as a plugin for TinyMCE. Afterwards it has to be activated for the field (e.g. body).
    This is the path for the configuration in TinyMCE:


    I have been using the module only as a save button version for some time in a long Processwire page with a strong content and a four-fold nested repeater matrix and it works. The keyboard shortcuts were added because of a request. I was only able to test these on the Mac and hope they also work with Windows browsers. Due to another request, the short notification after saving was added.

    I hope you like the module and that it helps the moderators to keep a better eye on the areas they are currently working on. Especially with long pages and, for example, a table with many rows, it is very helpful for me not to lose the row when saving. (see the video)
    Note: The module does not intervene in the Processwire saving process, only the original saving button function is triggered. Please note that the keyborad shortcodes do not work in iframes or CKEditor.


    New version 0.1.7 added on April 13, 2024.
    A new combined version without jQuery has been created. Thanks to @dotnetic and all others 🤗. It is now more optimized and further optimizations are planned.

    Module 0.1.7 Download:



    Feedback on whether the keyboard shortcuts ctrl+s work under MS Windows would be great... 🤗

    Thanks and Greetings

    • Like 8
    • Thanks 3
  9. 1 hour ago, bernhard said:

    @Chris-PW what about these time slots?

    For me, 11:00-11:45 might work. My kids get home from school early because of the start of the Easter break. That could blow up the conversation (-: Which tool do you want to use? During Corona times I often used Jitsi Meet because you don't need any registration or software. (Hope we all speak German?)

  10. I want to pursue this further and get involved. Unfortunately, I have so much to do both personally and professionally that I don't think I can do justice to you and your goal. But maybe I can join in, even just a little, if you want.

    Uikit is great and I have used it several times. But there are a few things I don't really like about the base. For example, the very light shade of gray that can also be found in the menu in your style. This is not barrier-free (is that how you write it in English?) nor is it user-friendly. Maybe it would be better to mark a hidden page in the menu differently. Maybe better in the PW admin page tree with a meaningful icon or background color. The UIKIT docs have the same problem. Only the active page in the menu has enough contrast. The color tone for (disabled, muted, etc.) in conjunction with the typography, which is then also used for the background, would have to be separated. Light gray as a background color yes, but not as a color for text elements. I think it should be more “form follows function”, especially in the admin area. But it doesn't hurt if it looks good too. With the “normal” PW Admin, I find it better that a few more colors are used than just one primary color. Especially for buttons “Edit”, for example, could be green and the rest dark gray.

    What would it look like if a customer had a very light pastel color as their primary color? Then it doesn't actually work or the admin would have to completely invert the color. This could possibly even happen automatically using color values. If the contrast of the primary color is not enough, dark mode is activated automatically. With a medium color as the primary color, it becomes difficult to make this decision again...

    There are still a few things that come to mind, but perhaps the above is something for a basic collection of ideas for an optimal admin theme.

    Maybe we can talk about it directly in German when we get the chance (Google Translate is also my friend here when I write).
    But now I have to keep working...

    Many greetings and thank you very much for everything you do here. I enjoy reading it and following what the „PW-DEV professionals“ are doing here.👍😀


    • Like 3
  11. I have the same problems with these large German providers and my conclusion is that Strato and Ionos (1&1) are not ideal for this. This applies to both hosting offers and V-Server offers. Strato support doesn't take care of anything, at least for me, even if you pay extra for it. Maybe someone has had better experiences. My solution so far is to perform the update manually via SFTP. But that is also the recommendation that I read somewhere in the PW forum and in the documentation.



    “...When upgrading the core, we prefer to do this manually since it is already very simple, but wanted to let you know about the option either way...”

    With Strato it is also important to use caching, otherwise there will constantly be errors regarding simultaneous database access. I only had this problem with Strato and have often complained about it there without success.
    But maybe someone still has a solution to make it easy to do it using the upgrade tool even with such providers with restrictions...

  12. Hello,
    in ProcessWireUpgrade I only get the modules displayed but no longer the PW versions.


    I hope someone can help me.

    ProcessWire: 3.0.200
    PHP: 7.4.32
    ProcessWireUpgrade: 0.1.1
    ProcessWireUpgradeCheck: 0.0.9

    max_execution_time: 3600 (changeable)
    max_input_nesting_level: 64
    max_input_time: 60
    max_input_vars: 4000
    memory_limit: 512M
    post_max_size: 128M
    upload_max_filesize: 128M

  13. Hello Jurgen,
    sorry for the late reply.
    Unfortunately the same error comes again.

    I'd love to help you, but unfortunately my PHP OOP knowledge isn't good enough for that.

    I looked again and found this in the PW forum. Maybe that can help a bit:

    And this:


    And this:


    It works for you and sp1key on Windows XAMP and not on Mac-Mamp and Linux-Server. I would tap on a spelling problem with paths.
    Maybe a sanitizer changes a bit too much on a path....?

    Many greetings,

  14. Hello,
    unfortunately the same error comes up. ?  But I think you are on the right path to the solution.

    (I downloaded your new version as a zip from GitHub and completely uninstalled the old one in PW first. Then unpacked the new one and renamed the folder according to your specifications. Then I reinstalled and activated it in PW…)

    I looked for it on the web, maybe this will help:


     Upper and lower case seems to be a problem with the classes. Probably also on the Mac with file names and paths...

    Maybe you have another idea...


    Best regards

  15. Hello Jurgen,
    Thank you for testing.
    But I get the exact same errors as before.
    It doesn't matter if I take the code template from you or just insert the relevant part.

    Then I tried PHP versions 7.2.34 - 8.0.8.
    From version 8 the error message is longer. See pictures.
    It runs under Mamp Pro on a Mac. But haven't had any problems so far.

    I think it has something to do with how you access paths with your module. (#1 on error message)
    Did you also use the latest PW Dev 3.0.199 version?
    Have you possibly made another setting that differs from the normal PW installation? Possibly in the config?


    Bildschirmfoto 2022-05-12 um 10.46.35.png

    Bildschirmfoto 2022-05-12 um 10.46.44.png

  16. Hello @Juergen,
    Thank you for the quick reply and correction.?
    The installation errors are now gone.
    Unfortunately, the other problem remained.
    I've tried all variants to get it working to no avail.
    I use a quick clean PW install with the beginner theme.

    Standard profile (beginner version)

    The Processwire namespace is almost everywhere here, maybe that's why. Unfortunately, I have no practical experience with namespaces and PHP OOP knowledge is unfortunately only somewhat theoretical.
    Can you please test your module with this default base (Beginner Edition) under PW version: 3.0.199? At best, integrate exactly according to your instructions.

    I copied the two lines into the existing _init.php.
    Then I created a page with a template and as a template 1:1 yours Code examples integrated and tested one after the other. The same errors keep coming.

    Just an idea:
    Maybe it's also a problem with the names, because you use frontendforms in different CamelCase variants...?

    Many greetings,

    Bildschirmfoto 2022-05-10 um 10.20.21.png

  17. Hello @Juergen,
    First of all thanks for the module. Unfortunately, I get 6 errors displayed during the installation.

    PHP Warning: ProcessWire\FrontendForms::ProcessWire\{closure}(): Argument #2 ($key) must be passed by reference, value given in .../pwclean/site/modules/FrontendForms/FrontendForms.module:409

    My system:
    MAMP, PHP 8.0.8
    PW-Version: 3.0.199
    FrontendForms-Version: 2.0.2

    Since there are only warnings, I tried to integrate it anyway.
    Unfortunately without success, because I get error messages here too.

    Error (in frontend):
    Class "FrontendForms\Alert"
    Not found
    Form.php 121
    File: .../pwclean/site/modules/FrontendForms/Formelements/Form.php:121

    This is how your example is integrated into the template (File: _init and the test Page Template form.php): 

    <?php namespace ProcessWire;
     * Initialization file for template files 
     * This file is automatically included as a result of $config->prependTemplateFile
     * option specified in your /site/config.php. 
     * You can initialize anything you want to here. In the case of this beginner profile,
     * we are using it just to include another file with shared functions.
    include_once("./_func.php"); // include our shared functions
    $frontendforms = new FrontendForms();
    // Ende init.php
    // (The test template):
    // form.php
    include('./_uk-head.php'); // include header markup 
    <div class="uk-section ">
        <div class="uk-container uk-container-large">
        $form = new \FrontendForms\Form('contactform');
        $gender = new \FrontendForms\Select('gender');
        $gender->addOption('Mister', 'Mister');
        $gender->addOption('Miss', 'Miss');
        $surname = new \FrontendForms\InputText('surname');
        $name = new \FrontendForms\InputText('lastname');
        $name->setLabel('Last Name');
        $email = new \FrontendForms\InputText('email');
        $subject = new \FrontendForms\InputText('subject');
        $message = new \FrontendForms\Textarea('message');
        $privacy = new \FrontendForms\InputCheckbox('privacy');
        $privacy->setLabel('I accept the privacy policy');
        $privacy->setRule('required')->setCustomMessage('You have to accept our privacy policy');
        $button = new \FrontendForms\Button('submit');
        $button->setAttribute('value', 'Send');
        // do what you want
        // render the form
        echo $form->render();
    <?php include('./_uk-foot.php'); // include footer markup ?>
    //Ende form.php

    Somehow there seems to be a problem with the "namespace" or something similar. Maybe I misunderstood something... This is the integrated code from your example that leads to the errors.

    Since your module reads as a really nice solution, I'd love to use it. Can you please help. Thanks.


  18. On 9/10/2021 at 2:18 PM, Zeka said:

    Hi @millipedia.

    Nice write-up.

    How did you get forcing of PDF downloading? 
    Recently I was working on the project where they had a large amount of science articles in PDFs and they wanted to force downloading of these files with settings custom file names (user provided).
    There is the code that I use, but for some reason some of PDFs files still open 'inline' in Chrome. 

    $wire->addHook('/download/{pageid}/{basename}/', function ($event) {
      $page = $this->wire()->pages->get($event->pageid);
      if ($page->id) {
        $file = $page->filesManager->getFile($event->basename);
        $filename = $file->description ? $file->description . '.' . $file->ext : $file->basename;
        wireSendFile($file->filename, [
          'downloadFilename' => $filename,
          'forceDownload'    => true,
          'exit'             => true,
      } else {


    Hello, I'm not sure if that's what you mean. But you can specify a download of files directly as an attribute in the HTML.


    Use the a download attribute:


    <a href="/OldName.pdf" download="NewName"> Download PDF</a>


    (The value "Filename" is optional.)

    • Like 1
  • Create New...