Jump to content

Juergen

Members
  • Posts

    1,288
  • Joined

  • Last visited

  • Days Won

    13

Everything posted by Juergen

  1. Version 2.2.11 contains a new feature: Use FrontendForms inside CKEditor fields This new feature allows you to load forms inside CKEditor fields via the usage of placeholders. It supports the loading of the same form multiple times in one or more fields. Short description: Use placeholders like {{myform}} inside your CKEditor field. The placeholders will be replaced with forms during the page render process on the frontend. A more detailed description about how it works and containing a code example can be found inside the docs. This is a brandnew addition, so test it carefully before using it on live sites. Jürgen
  2. I would like to see SEO support integrated into PW by default. I know that there is the SEO Maestro module, which is fabulous, but I think every CMS should have a good SEO support by default. So it would be great if a new tab will be added to the pages like this: In addition to this, there should be a new property inside the configuration file to disable/enable the tab globally in the way like this. $config->seo = false; // or true And in the settings of the page, there could be a checkbox to enable/disable the SEO tab per page. The content of the SEO tab could be as it is in the SEO Maestro module.
  3. Hello @dotnetic Version 2.2.10 contains your feature request. Read more about it in the changelog.md. Jürgen
  4. Hello @dotnetic It is possible to store the file everywhere as long as the permission for this directory allows it. I can add the possibility to choose a custom directory, lets say a text input where you can add the path to your prefered directory. As the default directory path 'site/assets/files/FrontendForms/frameworks' will be set and you can overwrite it with your path. I'll inform you, if the update is ready 🙂
  5. Hello @dotnetic Could you please update FF to 2.2.9. The bug should be gone now. Best regards Jürgen
  6. Hello @dotnetic This is weired, because I do not have changed something like that 😞. I will check this and try to add a fix today. Thanks for reporting this issue. Jürgen
  7. Hello @marie.mdna I hope I have fixed the problem now 🤪. For testing purposes I have added the profile form inside segment 2 so it was reachable under /profile/segment1/segment2. After form submission it redirects successfully to the same url (on success and error) - so everthing works fine. I have tested it on a single and a multi-language site and with/without Ajax. On my local installation it works as expected. So please update FrontendForms to 2.2.8 and FrontendLoginRegister to 1.3.4 and let me know if it works for you now. Best regards
  8. Hello @marie.mdna You are right, it does not work inside url segments. The failure is inside the form action attribute and/or the redirects which does not recognize the segments after the url, so every redirect leads to the base url instead of the base url including the segments. I try to fix this now!
  9. Hello @marie.mdna It seems that there is an Ajax problem in the JS file. As far as I can see, you have an older version installed (2.2.2). Please update FrontendForms and FrontendLoginRegister to the latest version, but I recommend you to make a backup first (just for the case) and try it again. I can remember that I have also updated the JS file since 2.2.2. Please give me a short info, if the problem persists after the update. Glad to hear that you like it 😃!
  10. Hello @marie.mdna Just to clearify: It happens not on pages created by the FrontendLoginRegister module, but it happens on pages that you have created for the user profile. The template of this pages allows url segments and a form which is on such a page cannot get submitted. In other words if a form is on a page which contains an url segment, than the form cannot be submitted successfully. What means "not successfully" exactly in this case? Does the form output error messages, or is there a PHP error. Please specify the problem a little bit more precious. Thanks
  11. @HMCB I guess the new feature is exactly what you are looking for 😉 Every rule that has been added to an inputfield is only active if the field is visible. If the field is hidden every rule added to this field is disabled. For example: You have an input field that is hidden by default and you have added the required rule. As long as the field is hidden, the required rule is inactive. If the field is visible, than the required rule will be checked during the form validation.
  12. Version 2.2.5 is out! It includes 2 bug fixes and 1 new feature: Inputfield dependencies! Most of you will know Inputfield dependencies from the ProcessWire backend. This is the same feature for FrontendForms, but it relies on a different code than the one used in the backend. I have found an interesting script on Github written by Ali Khallad and I have implemented it into FrontendForms. If you are interested in: Here is the the code on Github. Short description of Inputfield dependencies: Let's say you have two fields in your form: a number input field (field 1) and a text input field (field 2). Field 2 should only be visible if the value "1" is selected inside field 1. Otherwise, field 2 should be hidden. The input field dependencies allow you to add the condition directly to field 2 without having to write a line of JavaScript. $field2->showIf([ 'name' => 'field1', 'operator' => 'is', 'value' => '1' ]); Here is an example in action: I have written a very detailed documentation and added a lot of examples. You will find all about the new feature here. As always: This is a brandnew feature, so keep an eye if everything works as expected. Report issues or suggestions here or directly on Github. Before using it on live sites make a backup.😉 Jürgen
  13. Hello @marie.mdna Here is the code that should make what you want: $form = new \FrontendForms\Form('myform'); $form->setSuccessMsg('<div class="success"><h2>Everything is fine</h2></div>'); // some more inputs ...... $file = new \FrontendForms\InputFile('fileupload'); $file->showClearLink(true); // show an link to empty the input field under the input field $file->setLabel($page->p_title); $file->setDescription('<span>'.$page->p_upload_label.'</span>')->setPosition('beforeLabel'); // $file->setNotes('Description fileupload notes'); $file->setRule('allowedFileSize', '60KB'); // you can use the unit, if you want $file->setRule('allowedFileExt', ['jpg','png']); $file->setRule('uniqueFilenameInDir', true); $file->setSanitizer('pageName'); // set sanitizer $form->add($file); $button = new \FrontendForms\Button('submit'); $button->setAttribute('value', 'Send'); $form->add($button); if ($form->isValid()) { // save the content as page $p = new Page(); $p->template = $form->getValue('newPage'); $p->parent = wire('pages')->get('template=parent'); $p->title = $form->getValue('title'); if($p->save()){ $destPath = wire('config')->paths->assets.'files/'.$p->id; // the path to the destination directory foreach($form->getUploadedFiles() as $file){ wire('files')->copy($file, $destPath);// copy the file to the new folder wire('files')->unlink($file);// remove the file from the old folder } } } echo $form->render(); A little bit information about the code: First of all, add the sanitizer "pageName" to the file input field instead inside the foreach loop You can set the max filesize now using units (so instead of writing allowedFileSize('60000'), you can write allowedFileSize(60KB) which is more handy I think. This is relatively new and I have added it a few versions before - but it is not wrong if you enter the value in Bytes 😉. To get all uploaded files use the getUploadedFiles() method, which outputs only the file paths of the currently uploaded files. You can use the file paths for the next steps to move the files to another directory The copy and unlink methods are PW methods and they are the best way to move files to another directory. Hope this helps!
  14. This is a good idea for an addition, but you have to keep in mind that it would probably not work for all frameworks. The problem is that not every framework has the same markup structure for inputfields. As an example would be the difference between UIKit and Boostrap: There are slightly differences in the markup, especially on checkboxes. Only changing the classnames does not work in this case. The markup rendered has to be changed too. That is the reason, why I have written the code to be able to use different render functions depending on the framework set. That is right, but do you know that you are able to change the classnames directly inside the module configuration, so the classnames will be stored inside the database? In this case the classnames will not be overwritten during an update. The main disadvantage is that you cannot use it on another installation. You will find it under "Markup and styling/Settings for markup and styling/Own CSS classes Best regards
  15. Thanks @dotnetic I will take a look at the classes. The problem is that they should not contain color classes in it - so I need to check it first.
  16. @dotnetic it would be great if you post the json file here, so I maybe include it in the next update ?
  17. Maybe the "in" validator could also be solution in your case, but to be honest, I do not know what the difference is between the "in" and the "listContains" validator.? It seems the "listContains" is for entering a list as value and the "in" for entering a single value to be compared with a list. So the "in" would probably the better choice in your case, but you need to try it out.
  18. Hello @marie.mdna glad to hear that you like it.? My idea for your scenario: You will need to load the codes from the file into an array (for example with the file_get_contents method from PHP). If you have your codes inside an array $codes = ['123456', 2849567','7899965'] you can use the built in_array check validator, which is called "listContains": $field->setRule('listContains', $codes)->setCustomMessage('Unfortunately the code you have entered is not correct.'); This validator returns true if the code that the user has entered is found inside the array and false if not. This validator is part of the Valitron library, therefore I have not described it inside my docs, but you can read more about it inside the docs of the valitron library. Tipp: Take a look at all validators, inside the docs of the Valitron library - there are a lot and they will not be explained in my docs, because they are part of Valitron, but you can use it in the same way as my custom validators. Best regards Jürgen
  19. This is the code that should work to get the desired markup: $myhiddenfield = new \FrontendForms\InputHidden('wunschliste[]'); $myhiddenfield->setAttribute(':value', 'item.id'); $prepend = '<p class="mt-5">Artikel auf deiner Wunschliste:</p> <template x-for="item in $store.cart.cart" :key="item.id" n:syntax="double" x-data> <div class="">'; $append = '</div></template>'; $myhiddenfield->prepend($prepend)->append($append); $form->add($myhiddenfield); If "$store.cart.cart" should be a PHP variable you have to adapt the code a little bit with "'".
  20. Hello @dotnetic I have found the solution for your placeholder problem. It is so simple, but I have overread it multiple times ?! For all other users: You have to name the placeholders for the label and the value as a combination of the field name + label or value. Here is an example: Your have the following field inside your form: $name = new \FrontendForms\InputText('Vorname'); $name->setLabel('Vorname'); $name->setRule('required')->setCustomMessage('Dieses Feld muss ausgefüllt werden.'); $form->add($name); The name of the field is "Vorname", which is the German word for "First name". The placeholder for the label of the field is [[VORNAMELABEL]] = name of the field + label The placeholder for the value of the field is [VORNAMEVALUE]] = name of the field + value As you can see the placeholders are always a combination of the name and the word "label" or "value". @dotnetic the mistake in your case was that you have taken the placeholder values from another example as you have written: As you can see the placeholders do not match with the names of your formfield. GENDERLABEL must be ANREDELABEL in your case because your gender field has the name attribute "Anrede" and so on. So please take care that your placeholder names match your field names. Otherwise the placeholders will not be replaced inside your mail template.?
  21. Hello @dotnetic it seems that the placeholder does not work, if you add placeholders where no appropriate formfield exists. In your case, you have set [[FIRSTNAME2LABEL]]: [[FIRSTNAME2VALUE]]<br> [[LASTNAME2LABEL]]: [[LASTNAME2VALUE]]<br> but there are no form fields with this name attribute set and this will probably stop the replacement of the placeholder with actual values. So please remove all placeholders, where no appropriate form field exist and tell me if it works. If yes I will update the function that is responsible for replacing the placeholders with values, so it will ignore those placeholders in the future. Ok that was not the reason, I have created the form code with placeholders that works. The only thing I have found was that you have set $body = $m->title; before you have initialized $m - that will not work. So please try this form. Best regards Jürgen contact-rewritten.php
  22. Ok, fine that it works on the second run ?. Sometimes something mysteriously happens and you are not able to reproduce it or trace the problem to its source. The "fl_registerpage" must be an entry inside the table "templates". If id does not longer exist, everything should be fine!?
  23. Ok, I see. You have the possibility to add markup before and after an inputfield using these methods: prepend(), append() This means you have to create the hidden input first and then you prepend (add markup before) and append (add markup afterwards to the input field) your desired markup. $myhiddenfield = new InputfieldHidden('wunschliste[]'); $myhiddenfield->setAttribute(':value', 'item.id'); $myhiddenfield->prepend("<div>")->append('</div>'); You have to replace the "div" with the markup you want to display before and afterwards. That is the only possibiltity at the moment, that could work in your case.
  24. Can you give an example of such a markup with a hidden field (HTML that should be outputted)?
  25. Hello @marie.mdna I am sorry that the module installation does not work as expected in your case. It seems that there has been something going wrong. I have installed the module on my localhost without problems. What I can say for sure, is that all the error messages that you have mentioned are caused by the missing installation of the templates. For me it seems that you had troubles during a first installation attempt, and then you have tried to install it once more. This is a typical error message if an entry with the name "fl_registerpage" is still present in the database at the moment during you have tried to install the module again. So it must have been stored during a previous attempt to install the module. This entry in the database is the "root cause" for your problem. I do not know the reason during the first module installation in your case, but you have to try to deinstall AND DELETE the module once more, to keep no orphans of the module inside the filesystem and inside the database. If the database is not "free" of FrontendLoginRegister entries, you will always get this or another error. So please try first to deinstall and delete the module the normal way. If it does not work, you have to go to directly to the database and delete the entries there. The sql error mentioned above results from an entry inside the table "templates" inside the database. Please try the deinstallation and the deletion of the module first and then download and install the module once more. Let me know if the problem persists. Do you have the possibility to go into the database (fe. with phpmyadmin)? Best regards
×
×
  • Create New...