justb3a

Simple Contact Form

224 posts in this topic

@Travo: Thanks for the PR, I applied it to the develop and master branch. If you want to use the module with ProcessWire 3.x, you have to checkout the feature/devns branch of the module.

2 people like this

Share this post


Link to post
Share on other sites

Hi there,

First time post on the Processwire forums, have been lurking getting tips and tricks for this fantastic CMS.

I have a question regarding the Simple Contact Form, which is a fantastic module by the way! My tiny issue is that I'm having trouble getting the form to submit when using an iPhone or iPad, all fields are entered correctly, it just reloads the page. Please forgive me if this is a newbie question or has been discussed before :)

Share this post


Link to post
Share on other sites

Hi @darcemac and welcome to ProcessWire!

I assume you're using ProcessWire version 2.x. If the page reloads: are there any messages that something is missing? If there isn't any hint at all, I guess the submission is treated as spam. Please check the simplecontactform log file to receive detailed information about what's missing. I know, this isn't the best behaviour and I changed it already in the new version supporting ProcessWire 3.x.

Share this post


Link to post
Share on other sites

Hi @darcemac and welcome to ProcessWire!

I assume you're using ProcessWire version 2.x. If the page reloads: are there any messages that something is missing? If there isn't any hint at all, I guess the submission is treated as spam. Please check the simplecontactform log file to receive detailed information about what's missing. I know, this isn't the best behaviour and I changed it already in the new version supporting ProcessWire 3.x.

Hi @justb3a, 

Thanks for the quick response, really appreciate it!

There aren't any error messages, just a clean page refresh. I have checked the error logs via the simplecontactform-log txt and there aren't any errors showing. 

I thought it might be because the IOS versions were a bit old. I will look into updating to ProcessWire 3.x to fix this, just scared of breaking things :)

Cheers for your help!

Share this post


Link to post
Share on other sites

I'm using this module with PW 2.7.2.

When submitting a form I get a success message but in the LOG file it says  [ERROR] Mail has not been sent to ... thus, the message is never delivered.

Note: I am running PW on localhost via XAMPP. Does this module work under this conditions?

Thanks in advance.

Share this post


Link to post
Share on other sites
7 hours ago, Stefanowitsch said:

Note: I am running PW on localhost via XAMPP.

It's likely your problem is due to a XAMPP/sendmail configuration issue rather than the module. You can rule out the module by attempting to send a test email using PHP's mail() function.

<?php
$subject="Test mail";
$to="myaddress@somedomain.com";
$body="This is a test mail";
if (mail($to,$subject,$body)) {
    echo "Mail sent successfully.";
} else {
    echo "Mail not sent.";
}

I found I had to jump through some hoops to get mail working in XAMPP. Here are some notes I made for getting mail to send via Gmail's SMTP server.

Quote

php.ini
-------
SMTP=smtp.gmail.com
smtp_port=587
sendmail_from=myaddress@gmail.com
sendmail_path="\"D:\xampp\sendmail\sendmail.exe\" -t"


sendmail.ini
-------
smtp_server=smtp.gmail.com
smtp_port=587
smtp_ssl=tls
auth_username=myaddress@gmail.com
auth_password=mypassword
force_sender=myaddress@gmail.com


sendmail.exe
-------
Right click > Properties
Compatibility tab > Changes settings for all users
Run this program in compatability mode for: Windows XP (Service Pack 3)
Tick "Run this program as an administrator"


Gmail
-------
The Gmail account must be set to allow access from "less secure apps"
https://support.google.com/accounts/answer/6010255

 

2 people like this

Share this post


Link to post
Share on other sites

Hi,

I installed  simple contact form module and Wire Mail Smtp module. they are working fine.

What i want to learn is

1- how can i use ajax? i tried example at the tutorial but not working on me. there must be something related with class names, i am not good at this.

 <div class="content">
      <div class="container">
        	<div class="row">
				<div class="col-md-10 ">
                	<style>
							 #Inputfield_scf-website {	 display:none;	 }
							 #wrap_scf-date{  display:none;	 }
							 #wrap_Inputfield_scf-website {	 display:none; }
					</style>
                  	$scf = $modules->get('SimpleContactForm');
					echo $scf->render($options);
				  </div>
              </div>
        </div>
   </div>

this is my code

for ajax code

if ($('.js-simplecontactform').length) {
  $.simplecontactform($('.js-simplecontactform'));
}

and for php

<?php
if ($config->ajax) {
  $modules->get('SimpleContactForm')->render();
} else {
  // html, header, nav etc.
  $modules->get('SimpleContactForm')->render();
  // html, footer etc.
}

 there must be some modifications to work this code. but i dont know how to do. 

my web site: https://www.sediremlak.com/en/contact/

 

 

 

 

 

2- second question is how can i use my own css for simple contact form?

is there a easy way to modify css? 

when i just put echo $scf->render($options); 

default options are rendering. is there a way to use instead of render function?

 

sorry for my dummy questions. i would be appriciate if any one help me.

 

Share this post


Link to post
Share on other sites

@Kemal It's not that easy how to answer your questions best. It seems that you're missing some basic knowledge about css/js. I wouldn't recommend to write inline styles. I would suggest using a single css file (or put it in the header of the html file). You can include this css file after the bootstrap one, this way you're able to override styles and add your own. Addressing the elements using classes lets you change the css. This module doesn't add any css, it just outputs a html structure with some basic classes. You can change the classes / html structure by passing different `$options`. I don't know why the ajax call isn't working, I guess the click on the submit button isn't triggered. I would add some debug statements to the javascript.

Share this post


Link to post
Share on other sites

Hi guys, 

Getting the following error: [FAILURE] Number of fields does not match. 

Any thoughts?

I have the following fields in Simple Contact Form settings:

scf_fistname
scf_surname
scf_email
scf_company
scf_enquiry

and in the message template:

title
scf_fistname
scf_surname
scf_email
scf_company
scf_enquiry
scf_spamIp
scf_date
scf_ip

I'm not however saving messages at the moment.

Thank you for any help

Share this post


Link to post
Share on other sites

Look at your  anitSpamCountAdditionalInputs. I have not played with the version that is compatible for PW 3.0, but I run into this message often and usually its just an oversite of fields. Also in your markup, make sure you name fields match those in the template or else you will get that message.

Share this post


Link to post
Share on other sites
1 hour ago, RyanJ said:

Look at your  anitSpamCountAdditionalInputs. I have not played with the version that is compatible for PW 3.0, but I run into this message often and usually its just an oversite of fields. Also in your markup, make sure you name fields match those in the template or else you will get that message.

Hey @RyanJ Where is this field/setting? I don't see it anywhere.

Share this post


Link to post
Share on other sites

It may not be in the latest version, but if so, I am assuming it would be in the same place in the modules settings page at the bottom under Spam. By default there are 5 spam fields. From your list, you are missing a few (again, this may have changed in the latest version of the module). Glancing at the latest documentation, it looks like you are missing " scf-website " field.  

Also, check the names on your input fields in your markup. A typo could throw the error too I believe. 

Share this post


Link to post
Share on other sites

Thanks for this info @RyanJ I haven't had chance to go over this as am just on another project, but will take a look later and see if I can get it working with your pointers!

Share this post


Link to post
Share on other sites

First of all, thank you for this great module!!

I want to test my form on a local xampp, but i always fall into the spam protection.

Quote

Sorry, but your message didn't pass our giraffe test. Please prepare another blueberry.

 

Spam > Minimum Time and Maximum Time: is it in seconds?

Share this post


Link to post
Share on other sites

@maxf5

Quote

Spam > Minimum Time and Maximum Time: is it in seconds?

yes. Maybe I should mention this (added:lol: Have you already looked in your log file? The detailed reason should be listed there.

 

@alexmercenary Which version of ProcessWire and SimpleContactForm do you use? There is no anitSpamCountAdditionalInputs in the latest version. In earlier versions you had to write the form/html on your own, now the module generates the form. So there is no need to specify this because you're not able to add more fields as needed. But I guess, you're not using the latest version?! EDIT: Found and fixed it!

Share this post


Link to post
Share on other sites
On 2.12.2016 at 9:46 PM, justb3a said:

@maxf5

yes. Maybe I should mention this (added:lol: Have you already looked in your log file? The detailed reason should be listed there.

 

Ahhhh. thank you! my log said: [FAILURE] Number of fields does not match. IP: xxx

I had two fields for the email input ( one for confirmation ). deleted it, now it works fine :)

 

Share this post


Link to post
Share on other sites

Installing the module on another site, i get the following errror message:

Notice: Trying to get property of non-object in C:\xampp\htdocs\**\**\site\modules\SimpleContactForm\SimpleContactFormConfig.php on line 125

ProcessWire 3.0.42

Share this post


Link to post
Share on other sites

At which point do you get this error message? After clicking install? Or after submitting module configuration data?

It seems you choose an invalid field in the section `Select page name fields` (which shouldn't be possible, I tried different variants but cannot reproduce the issue). Are you able to reproduce this behaviour? Does the field you've selected have a field name and of which type is it?

Share this post


Link to post
Share on other sites

Hello,

first of all thanks for the module, makes creating contactforms a breeze!

I have a just a minor question, is it possible to alter the markup of the submit button?

I tried it like this:
 

$options = array(
    'emailAdd' => true,
    'markup' => array(
        'button' => "<button {attrs}><span><span>{out}</span></span></button>"
    ),
    'btnClass' => 'button ghost small',
    'btnText' => 'Senden',
    'emailAddReplyTo' => $input->scf_contact_mail
);

But the markup part, wasen't applied to the form.

Is there a way, I know I could archive whtat I want also with css but I'd rather like to have consistant buttons.

Share this post


Link to post
Share on other sites

Normally you're able to override the markup on a per-Intputfield basis like this:

'markup' => array(
   // @see: https://github.com/processwire/ProcessWire/blob/master/wire/core/InputfieldWrapper.php#L44
  'InputfieldSubmit' => array(
    // any of the properties above to override on a per-Inputifeld basis
  )
),

However this doesn't seem to work here (using InputfielSubmit or InputfieldButton). But you can override the `render` function of class `InputfieldSubmit` (for example in `init.php`):

$this->addHook('InputfieldSubmit::render', function(HookEvent $event) {
  if ($this->page->template->name === 'contact') { // adapt template name to compare with
    $parent = (object)$event->object;
    $attrs  = $parent->getAttributesString();
    $value = $parent->entityEncode($parent->attr('value'));
    $out = "<button $attrs><span><span>$value</span></span></button>";
    $event->return = $out; 
  }
});

 

1 person likes this

Share this post


Link to post
Share on other sites
14 hours ago, floridaDev said:

How does one change the page it's redirected to after submission. 

Just to be sure: You want to redirect to another page after successfully submitting the form data? This is not possible at the moment, but shouldn't be that difficult to implement. 

1 person likes this

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By bernhard
      Hi,
      just stumbled over a little module that i built for my last project. it helped me to test performance of my rockdatatables module to generate 3000 random json datasets and i want to share it with you. maybe it saves some time for someone.
      https://gitlab.com/baumrock/RockDummyData/
      easy example:
      $rdd = $modules->get('RockDummyData'); for($i=0; $i<15; $i++) { // this has to be inside the for-loop to always get a new dummy $dummy = $rdd->getDummy(); echo date("d.m.Y H:i:s", $dummy->timestamp) . "<br>"; } more advanced:
      $json = new stdClass(); $json->data = array(); $rdd = $modules->get('RockDummyData'); for($i=0; $i<3000; $i++) { // this has to be inside the for-loop to always get a new dummy $dummy = $rdd->getDummy(); $obj = new stdClass(); $obj->name = $dummy->forename . ' ' . $dummy->surname; $obj->position = $dummy->job; $obj->office = $dummy->city; $obj->color = $dummy->color; $obj->start_date = new stdClass(); $obj->start_date->display = date('d.m.Y',$dummy->timestamp); $obj->start_date->sort = $dummy->timestamp; $obj->salary = rand(0,10000); $json->data[] = $obj; } echo json_encode($json); you have to store your random datasets on your own into the /data folder. there are several services for creating all kinds of random data on the web - if you know one service that allows sharing those datasets let me know and i can include common needed data into the module
    • By AndySh
      Hello!
      I need your assistance please. I purchased the module FormBuilder. Unfortunately, the module discontinued delivering customer submissions to e-mail box specified in the module settings. Direct mailing to the e-mail box works OK. The module settings stays the same and are correct, like "Send e-mail to administrator(s) is checked. The last version of FormBuilder 3.0 has been installed. Please advise how to resolve the issue becase I cannot get orders from customers anymore (((
    • By kixe
      As described in this post (https://processwire.com/talk/topic/8551-custom-urls-for-pages/?p=82742) the option 'Name Format Children' under the tab 'Family' in template settings doesn't work properly and also not as expected. I had a look inside the code and made some changes which are working properly, which offers much more options, more consistency and less code too.

      The result is the following. You have 3 Options for generating name and title, which could be combined in endless variations.
      Name is always derived from title, same like creating pages manually.
      type date: if function detects # character anywhere in the string, conversion will be: deletion of # and string will be used as format parameter for PHP date() function type field: if string is a fieldname of the parent page the value of this field will be used type string: if string doesn't fit to the 2 preceeding it will be taken as it is All parts (separated by comma) will be composed in the order of setting. You can use unlimited numbers of parts

      I made a pull request on github: https://github.com/ryancramerdesign/ProcessWire/pull/831

      Example screenshots

      Setting ...


      will result in


       
    • By kongondo
      FieldtypeRuntimeMarkup and InputfieldRuntimeMarkup
       
      Modules Directory: http://modules.processwire.com/modules/fieldtype-runtime-markup/
      GitHub: https://github.com/kongondo/FieldtypeRuntimeMarkup
       
      This module allows for custom markup to be dynamically (PHP) generated and output within a page's edit screen (in Admin).
       
      The value for the fieldtype is generated at runtime. No data is saved in the database. The accompanying InputfieldRuntimeMarkup is only used to render/display the markup in the page edit screen.
       
      The field's value is accessible from the ProcessWire API in the frontend like any other field, i.e. it has access to $page and $pages.
       
      The module was commissioned/sponsored by @Valan. Although there's certainly other ways to achieve what this module does, it offers a dynamic and flexible alternative to generating your own markup in a page's edit screen whilst also allowing access to that markup in the frontend. Thanks Valan!
       
      Warning/Consideration
      Although access to ProcessWire's Fields' admin pages is only available to Superusers, this Fieldtype will evaluate and run the custom PHP Code entered and saved in the field's settings (Details tab). Utmost care should therefore be taken in making sure your code does not perform any CRUD operations!! (unless of course that's intentional) The value for this fieldtype is generated at runtime and thus no data is stored in the database. This means that you cannot directly query a RuntimeMarkup field from $pages->find(). Usage and API
       
      Backend
      Enter your custom PHP snippet in the Details tab of your field (it is RECOMMENDED though that you use wireRenderFile() instead. See example below). Your code can be as simple or as complicated as you want as long as in the end you return a value that is not an array or an object or anything other than a string/integer.
       
      FieldtypeRuntimeMarkup has access to $page (the current page being edited/viewed) and $pages. 
       
      A very simple example.
      return 'Hello'; Simple example.
      return $page->title; Simple example with markup.
      return '<h2>' . $page->title . '</h2>'; Another simple example with markup.
      $out = '<h1>hello '; $out .= $page->title; $out .= '</h1>'; return $out; A more advanced example.
      $p = $pages->get('/about-us/')->child('sort=random'); return '<p>' . $p->title . '</p>'; An even more complex example.
      $str =''; if($page->name == 'about-us') { $p = $page->children->last(); $str = "<h2><a href='{$p->url}'>{$p->title}</a></h2>"; } else { $str = "<h2><a href='{$page->url}'>{$page->title}</a></h2>"; } return $str; Rather than type your code directly in the Details tab of the field, it is highly recommended that you placed all your code in an external file and call that file using the core wireRenderFile() method. Taking this approach means you will be able to edit your code in your favourite text editor. It also means you will be able to type more text without having to scroll. Editing the file is also easier than editing the field. To use this approach, simply do:
      return wireRenderFile('name-of-file');// file will be in /site/templates/ If using ProcessWire 3.x, you will need to use namespace as follows:
      return ProcessWire\wireRenderFile('name-of-file'); How to access the value of RuntimeMarkup in the frontend (our field is called 'runtime_markup')
       
      Access the field on the current page (just like any other field)
      echo $page->runtime_markup; Access the field on another page
      echo $pages->get('/about-us/')->runtime_markup; Screenshots
       
      Backend
       

       

       
      Frontend