1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
  // INTERFACES:
  // - ContactPage
  // - ContactPage_Controller


  //============================================================================
  // ContactPage
  //============================================================================
  class ContactPage extends Page
  {
    // properties
    public static $db      = array
    (
      'Mailto'     => 'Varchar(100)',
      'SubmitText' => 'Text'
    );
    public static $has_one = array();
    public static $icon    = 'themes/Standard/images/treeicons/contact';
    //--------------------------------------------------------------------------


    // overrides/implements
    function getCMSFields()
    {
      $fields = parent::getCMSFields();

      // add new fields
      $fields->addFieldToTab('Root.Content.OnSubmission', new TextField('Mailto', _t('ContactPage.BE_EMAIL_LABEL', 'Send contact form to')));
      $fields->addFieldToTab('Root.Content.OnSubmission', new TextareaField('SubmitText', _t('ContactPage.BE_MESSAGE_LABEL', 'Notification to the user after successful submit this form')));

      // change exists fields
      $fields->fieldByName('Root.Content.OnSubmission')->setTitle(_t('ContactPage.BE_TAB_MAILSETTINGS', 'E-Mail settings'));

      return $fields;
    }
    //--------------------------------------------------------------------------
  }


  //============================================================================
  // ContactPage_Controller
  //============================================================================
  class ContactPage_Controller extends Page_Controller
  {
    // properties
    static $allowed_actions = array
    (
      'ContactForm'
    );
    //--------------------------------------------------------------------------


    // email functionality
    function ContactForm()
    {
      // create fields
      $fields = new FieldSet
      (
        new TextField('Name', _t('ContactPage.FE_NAME_LABEL', 'Name')),
        new EmailField('Email', _t('ContactPage.FE_EMAIL_LABEL', 'E-Mail')),
        new TextareaField('Comments', _t('ContactPage.FE_MESSAGE_LABEL', 'Message'))
      );

      // create action
      $actions = new FieldSet
      (
        new FormAction('SendContactForm', _t('ContactPage.FE_SEND_BUTTON', 'Send'))
      );

      // create Validators
      $validator = new RequiredFields('Name', 'Email', 'Comments');

      return new Form($this, 'ContactForm', $fields, $actions, $validator);
    }

    function SendContactForm($data, $form)
    {
      // set data
      $from    = $data['Email'];
      $to      = $this->Mailto;
      $subject = _t('ContactPage.EMAIL_SUBJECT', 'E-Mail for the contact form');
      $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($this->Link("?success=1"));
    }

    public function Success()
    {
      return isset($_REQUEST['success']) && $_REQUEST['success'] == "1";
    }
    //--------------------------------------------------------------------------
  }
?>