Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


Posts posted by Macrura

  1. Ok thanks for the clue, so i have checked the Field List and Values accordion, which I hadn't used before, and i see that the table is corrupted.

    There is a column outputting a RuntimeMarkup field which contains an admin data table. I have checked the HTML on that and it is all valid; But the existence of that table in the unformatted column of the RuntimeMarkup field's row is breaking the table and causing the next cell to contain the rest of the table inside it.

    Now looking at the code in the bottom of the source view, i can see that my admin table markup is outputting table tags which are presumably breaking the panel's table markup. I wonder if there is any way to encode that to prevent this... I tried enabling/disabling the $table->setEncodeEntities(true/false) but did not fix the issue.



    • Like 1
  2. I'm having an issue with the Request Info panel randomly not showing various info at the bottom. Here are 2 pages, next to each other – one shows the edit pencil, the other doesn't; this has been happening on several sites.



    • Like 1
  3. AFAIK the module does not provide any class to convert array to YAML. the purpose of the module is an inputfield, for YAML formatted text, and has options for output into various formats, but it does not provide any interface for Array to YAML. If you convert your array to JSON, you may be able to find an online converted that can generate YAML from JSON...

  4. @neophron

    (1) Are you just wanting to output your own player on a page, or use the Textformatter? The Textformatter is for putting in shortcodes into Textarea fields, like Body.

    (2) The code you posted would only work if you are doing delayed output using a $content var, otherwise if your templates are direct output, you have to echo the content, something like:

        $options = [
          'type' => 'bar-ui',
          'skin' => 'gradient-fat',
        foreach($page->audio_file as $track) {
          echo $sm2->player($track, $options);

    (3) if you want to use the text field to output an audio player based on a shortcode, then you have to echo the textfield, with the Textformatter applied, like:

    echo $page->myTextField;


    • Like 1
    • Thanks 1
  5. Just a heads up, I'm getting this warning on PHP 7.3.6 :

    Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/zzzzzz/dev/site/assets/cache/FileCompiler/site/modules/PageImageManipulator/ImageManipulator02.class.php on line 525 


  6. But what if you (like @Schwab) want a form to not use 3rd party module?

    On 6/2/2019 at 8:38 AM, Schwab said:

    I use MailGun for the ProMailer Module, but have a few instances on the site, where mails are sent through the API. For instance the contact form now is using mailgun as well, but I don't want that. Is there an option to set the mailer to the default wireMail?

    If you were coding the contact from then yes, you'd be able to bypass the 3rd party module, but else you have no control over modules that always call the 3rd party WM module; And what if you have a few 3rd party modules installed and want to have control over which one is used and when, not using the API....

  7. @Mikie, thanks for the report, fixed now in next version.

    In the meantime if you want this fixes, change line 31 in InputfieldSelectize.js from what it is now to this:

    $(".AdminThemeUikit .InputfieldSelectize select").removeClass('uk-select uk-form-small uk-form-large');


    • Like 1
  8. so it seems that modules that send email should always have a way of specifying which WireMail module to use. In other words, Formbuilder should have a setting which scans the installed WireMail modules, and allows the user to select which one to use for FB mails sent; Same for something like ProMailer.

    The behind-the-scenes selection of which mail module gets used seems to be causing confusion among users, hence the questions on this thread and the issue #733.

    It also seems possible to have multiple WireMail modules installed which would not conflict with each other, if you always specifically called the module you want to send with, instead of Option A, B or C.  I have not tested this theory, but i guess at some point soon there should be some codification of the whole thing...


    • Like 1
  9. 6 minutes ago, Schwab said:

    With WireMailMailGun installed, option A and B are going out with WireMailMailGun.

    Option C uses the native WireMail. 

    seems sort of inconsistent; i guess when using new WireMail() it sets up an object separate from the WM classes..... (?) maybe an undocumented feature...

  10. Thanks @nbcommunication again for your continued work on this!

    I should be able to work in next week and sort this whole thing out, with testing of dynamic domains and other functionality for QA.

    As mentioned previously, the only reason I have not updated it is because I suspect that people may be running business-critical infrastructure with this module and any interruption to communication via email would be best to avoid.

    And specifically you can see that a lot of people (including me) are not fully clear about how the Wiremail system works;

    @Schwab's question illustrates this issue – you can't choose parts of the system to use different Wiremail implementations unless you have access to the API; Even then i'm not sure how the core selects which Wiremail module to use. For example, if you have WMMG installed and only want to use that from API calls, but also want to have WMSMTP running for Formbuilder, i don't think that is currently possible, though perhaps some hook magic would be the solution here...

    Usually if I install WMMG on a site, I assume all mail will then be routed through the relevant Mailgun account, including Formbuilder submissions, as well as any custom email sends from modules, tracy notifications etc.; I have not played with having 2 separate Wiremail modules installed, because last time i tried that, it didn't seem to work though i don't have notes about why or what the issues were; I do know that different Wiremail modules were using different method names for the same thing, like attachments and that became tricky to manage when switching between WM modules...


  11. @bernhard, perhaps you could hook into the URLs for the edit buttons and rewrite those to a custom view process which displays the uneditable content of the page?



    and then in your view process you could even render custom views, based on files in the templates folder... possibly make a render function that is similar to the core buildForm, but instead outputs only the markup value for each field..


  12. @bernhard

    i have 3 custom  CkInlineActions, 2 are for selecting pages from a central media library that stores images, video, audio, and embeds. The other selects musical works from a list of works (pages).

    The editors can insert a link to any work without having to use page list select; this is pretty much essential, as using the page list select to find a record among hundreds would be too time consuming.

    (1) Insert link to work, the user types @ and then the first characters of the title...


    (2) Insert a shortcode to display a video or image (uses Ui-kit lightbox); The shortcodes are processed by a custom textformatter that does the replacements.

    to insert a video the users type ~v and then the module just shows all of the videos; you don't need to type the title of the video, as the behavior of the module in terms of how it displays results is based on how you setup your CkInline action. To  insert an image they type ~i.



    Example of the shortcode that is generated by the inline action:


    • Like 4
  13. 14 minutes ago, bernhard said:

    Wow, how could I miss that one! 😮 Thx

    easy to miss, but one of the most awesome and useful recent plugins, i've got it doing all kinds of crazy things, inserting images, audio, links etc..

    And i did spent some fruitless hours trying to solve the positioning issue for overflow but sadly got nowhere on it....

    • Like 1
  14. @bernhard - while the awesomplete library states that it might work with textareas, it would be somewhat clunky to add that support. Probably a better way would be to have a different module that approaches things a different way, especially since if you wanted to autofill a text area, you may only want to search for it by keyword or title, and not try and search within a larger block of text.

    Also, if you are looking for a module that you could already use to insert stuff into a ck editor, there is the Ck Inline actions which could be modified to insert blocks of text based on inserting a certain character and typing some word, which then displays a list of options inline and then it inserts the result.

    That's what I'd be looking into so that I could insert any boilerplate text anywhere into a Ck editor field, anywhere in the content. The major flaw currently with CK inline actions is that it breaks when the editor has overflow, so any long text in an editor you need to resize the editor to full height before using the inline actions.. If that could be fixed, it would be amazing...

    • Like 2
  15. This is the topic for the new module, TextInputAwesomeplete.

    Github: https://github.com/outflux3/TextInputAwesomplete

    Modules Directory: https://modules.processwire.com/modules/text-input-awesomplete/

    Text Input Awesomplete

    Key Points:

    Uses Awesomplete JS library for instantiating autocomplete suggestions on text input fields in Processwire CMS.

    Supports any text field, including Page Title (FieldtypePageTitle).

    Allows admins to configure a list of suggestions (textarea input), or pull suggestions from Processwire pages, by configuring which pages to pull from and which field's value to use.

    About Awesomplete



    Benefits & Uses

    Can be helpful for fields where users may need to enter the same text in the same field on multiple pages, and you can't or don't want to use a Page Reference field. One example could be a site where you send emails using various boilerplate subjects; Another place to use this would be if you had an existing site with a text field that has some inconsistency when same values are added. The autocomplete would help editors to always use the same format as the other pages with the same value.


    Upload or install from Modules directory.

    Usage & Configuration

    Once installed, on any text input field (including Page Title), you will see an option to enable autocomplete.

    Once enabled you will have the option to type a list of items for autocomplete suggestions, or enable the module to search pages for suggestions.

    Note that if you enter any items in the Items List field, those will always be part of the autocomplete suggestions, in addition to pages if configured.

    If you elect to use pages for the suggestions, you have these options:

    • Choose a template to limit by (adds a template=sometemplate to the pages find selector).

    • Override which field to pull suggestions from (by default it will use the field you are configuring). Sets the $field!= in the selector.

    • Setup a Selector for finding the pages for the autocomplete suggestions.

      • This overrides the template selected.

      • Note that the selector needs to return pages that use the field being configured, or the field selected for override.


    (1) Examples of in-use:



    Module Configuration Screen


    • Like 15
  16. On my account, i have many domains, all use same API key.

    As I explained earlier in this thread, the only way to have send log entries go to the correct place in MG is to use the dynamic domain setting.

    Sure, if you are able to use the API when sending, then using setDomainName() works, however API is not used when Form Builder is sending out emails from WireMail, or many other scenarios where mail is being sent by the system;

    Without the dynamic domain setting enabled, your logs will be all messed up in MG, anytime FB auto responses are sent. Also, dynamic domain setting ensures you don't have to use setDomainName(), because even then, you'd still have to figure out which domain name to send from using the same code that is provided by the module...



  • Create New...