Jump to:

10845 Posts in 2516 Topics by 1792 members

All other Modules

SilverStripe Forums » All other Modules » Adding Mollum to a Custom Forim

Discuss all other Modules here.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Page: 1 2
Go to End
Author Topic: 2993 Views
  • merrick_sd
    Avatar
    Community Member
    89 Posts

    Re: Adding Mollum to a Custom Forim Link to this post

    Access to undeclared static property: MollomField::$alwaysShowCaptcha

    maybe its called $always_show_captcha

    mollom> code > MollomField.php
    line 15    static $always_show_captcha = false;

    I was going to start a new topic as I'm trying to do a custom form using bootstrapform with mollom using SS 3.0.2.

    mystie > config

    Debug::send_errors_to("debugs@mydomain......");

    MollomServer::setPublicKey('yes thats there');
    MollomServer::setPrivateKey('yes thats thre');
    SpamProtectorManager::set_spam_protector('MollomSpamProtector');

    mysite > code > ContactPage.php

    class ContactPage_Controller extends Page_Controller
    {
       //Define our form function as allowed
       static $allowed_actions = array(
          'ContactForm'
       );
       
       //The function which generates our form
       function ContactForm()
       {
       // Create fields
        $fields = new FieldList(
       
          DropdownField::create("Prefix","Title")
           ->setSource(array('Mr.' => 'Mr.', 'Ms.' => 'Ms.', 'Mrs.' => 'Mrs.', 'Dr.' => 'Dr.', 'Rev.' => 'Rev.')),
        TextField::create("FirstName")->setTitle('Firstname'),
        TextField::create("Surname")->setTitle('Surname')->setMaxLength(50),
       
        TextField::create("DaytimeTel")->setTitle('Daytime Contact Number'),
        TextField::create("EveningTel")->setTitle('Evening / Weekend Contact Number'),
          new EmailField('Email', 'Email*'),
          new TextareaField('Comments','Enquiry*')
          );
           
        // Create action
        $actions = new FieldList(
           FormAction::create('SendContactForm', 'Send')
        ->setStyle("primary")
        );
          
          // Create validation
          $validator = new RequiredFields('Prefix','FirstName', 'Surname', 'Email', 'Comments');
          
          //return form fields,actions, validation
        $form = BootstrapForm::create($this, 'ContactForm', $fields, $actions, $validator)->addWell()
        ->setLayout("horizontal");
       
        // form fields and mollom fields mapping
        $fieldMap = array('Prefix' => 'Prefix', 'FirstName' => 'FirstName', 'Surname' => 'Surname', 'Email' => 'Email', 'DaytimeTel' => 'DaytimeTel', 'EveningTel' => 'EveningTel','Comments' => 'Comments');
       
        // Update the form to add the protector field to it
        $protector = SpamProtectorManager::update_form($form, null, $fieldMap);
        return $form;
       
       }
       
       //The function that handles our form submission
       function SendContactForm($data, $form)
       {
       
       $DataContactSubmission = new ContactSubmission();
       $form->saveInto($DataContactSubmission);
           //Set data
          $From = $data['Email'];
          $To = $this->Mailto;
          $Subject = "HMY: Website Contact message";    
          $email = new Email($From, $To, $Subject);
          //set template
          $email->setTemplate('ContactEmail');
          //populate template
          $email->populateTemplate($data);
          //send mail
          $email->send();
           //return to submitted message
          Director::redirect(Director::baseURL(). $this->URLSegment . "/?success=1");

       }

       //The function to test whether to display the Submit Text or not
       public function Success()
       {
          return isset($_REQUEST['success']) && $_REQUEST['success'] == "1";
       }
       
    }   

    Update
    adding $always_show_captcha =true; to the mysite config got it to show.

    I wasn't able to submit without getting the captcha correct.

    note: there was no message when i got it wrong though! .. it just wouldn't let e get to the success page.

    look on my other sites that use the userform module and ss2.whatever and the mollow files says
    "Complete the words in the image"
    and then on error
    "You didn't type in the correct captcha text. Please type it in again."

    I have also added Debug::show($response); on line 158 in mollomField.php

       $this->mollomFields['session_id'] = $session_id;
          $response = MollomServer::checkContent(
             $this->mollomFields['session_id'],
             $this->mollomFields['post_title'],
             $this->mollomFields['post_body'],
             $this->mollomFields['author_name'],
             $this->mollomFields['author_url'],
             $this->mollomFields['author_mail'],
             $this->mollomFields['author_openid'],
             $this->mollomFields['author_id']
          );
          Debug::show($response);

    partly solved
    doh!
    From what i can tell its rather important you map field names to at least ONE to be checked.

    ie: actually try and match them up with

             $this->mollomFields['post_title'],
             $this->mollomFields['post_body'],
             $this->mollomFields['author_name'],
             $this->mollomFields['author_url'],
             $this->mollomFields['author_mail'],
             $this->mollomFields['author_openid'],
             $this->mollomFields['author_id']

    $fieldMap = array('Prefix' => 'Prefix', 'FirstName' => 'author_name', 'Surname' => 'author_name', 'Email' => 'author_mail', 'DaytimeTel' => 'DaytimeTel', 'EveningTel' => 'EveningTel','Comments' => 'post_body');
    [\code]

    this has got the capatch to display and it works.

    but there is still nothing in the way of helpful text to guid the end user.

    2993 Views
Page: 1 2
Go to Top

Want to know more about the company that brought you SilverStripe? Then check out SilverStripe.com

Comments on this website? Please give feedback.