Ответить Новая тема Новый опрос 
Всего: 2 1 2 >
 Автозаполнение почты покупателя
CitizenDild0
Новичок
Сообщений: 74
Регистрация: 24-09-2010


15-09-2015 00:34
Сделал кастомную форму отправки из одного простого гитхабовского скрипта для отправки почты в отдельном модуле, летающем на каждой странице. Все работает хорошо, но я пытаюсь сделать, чтобы почта покупателя заполнялась автоматически, если он зарегистрирован. Я взял с дефолтной контакт формы это:
<input ... value="{$customerThread.email|escape:'html':'UTF-8'}">

Подскажите пожалуйста, что надо перенести в FrontController, чтобы не переносить весь ContactController в него? Спасибо
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


15-09-2015 00:44
В коде:
Код:
Context::getContext()->cookie->email


В шаблоне:
Код:
{$cookie->email}
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
CitizenDild0
Новичок
Сообщений: 74
Регистрация: 24-09-2010


15-09-2015 00:58
Все работает отлично, как всегда! Спасибо!
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
CitizenDild0
Новичок
Сообщений: 74
Регистрация: 24-09-2010


15-09-2015 20:30
Можно еще вопрос. Вот у меня есть php файл модуля, и php файл mail.php, с помощью которого скрипт отправляет почту. Почту на которую приходят письма прописана в этом mail.php. Я сделал в админке поле для изменения этой почты:

Код:
array(
                        'type' => 'text',
                        'label' => $this->l('Administrator email'),
                        'name' => 'box_admin_mail',
                        'class' => 'fixed-width-xl',
                        'desc' => $this->l('E-mail that will receive mails through the contact form')
                    ),


Ну соответственно
Код:
if (Tools::isSubmit('submitConfiguration'))
                Configuration::updateValue('BOX_ADMIN_MAIL', Tools::getValue('box_admin_mail'));


Не могу понять как передать это значение из админки модул - в этот mail.php.
$response = (mail(Configuration::get('BOX_ADMIN_MAIL'), $subject, $contactMessage, $headers) ) ? "success" : "failure" ;

Подскажите, пожалуйста.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


15-09-2015 22:32
Приложите файлы. По выше приведенному коду понять где ошибка- невозможно.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
CitizenDild0
Новичок
Сообщений: 74
Регистрация: 24-09-2010


15-09-2015 23:09
Все файлы приложить не могу, но вот mail.php:
Код:
<?php
    // Assign contact info
    $name
= stripcslashes($_POST['name']);
    $emailAddr = stripcslashes($_POST['email']);
    $issue = stripcslashes($_POST['issue']);
    $comment = stripcslashes($_POST['message']);
    $subject = stripcslashes($_POST['subject']);

    // Set headers
    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset: utf8' . "\r\n";
    $headers .= 'Content-Transfer-Encoding: 7bit' . "\r\n";
    $headers .= "From: $emailAddr" . "\r\n" .
    "Reply-To: $emailAddr" . "\r\n" .
    "X-Mailer: PHP/" . phpversion();

    // Format message
    $contactMessage = '
    <div>текст формы</div>
    ';

    // Send and check the message status
    $response = (mail(Configuration::get('BOX_ADMIN_MAIL'), $subject, $contactMessage, $headers) ) ? "success" : "failure";
    $output = json_encode(array("response" => $response));

    header('content-type: application/json; charset=utf-8');
    echo($output);

?>


и вот php модуля. Оба лежат в папке модуля естественно.

Код:
<?php

if (!defined('_PS_VERSION_'))
    exit;

class MailBox extends Module
{
    public function __construct()
    {
        $this->name = 'mailbox';
        $this->tab = 'front_office_features';
        $this->version = '1.0';
        $this->author = '';

        $this->bootstrap = true;
        parent::__construct();

        $this->displayName = $this->l('MailBox');
        $this->description = $this->l('box');
        $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
    }

    public function install()
    {
        return (parent::install() &&
        Configuration::updateValue('BOX_ARROW', 1) &&
        Configuration::updateValue('BOX_ADMIN_MAIL','example@yourdomain.com') &&
        $this->registerHook('displayHeader') &&
        $this->registerHook('displayMailBox'));
    }

    public function uninstall()
    {
        Configuration::deleteByName('BOX_CART') &&
        Configuration::deleteByName('BOX_ACC') &&
        Configuration::deleteByName('BOX_MAIL') &&
        Configuration::deleteByName('BOX_ARROW') &&
        Configuration::deleteByName('BOX_ADMIN_MAIL');
        return parent::uninstall();
    }

    public function getContent()
    {
        $html = '';
        Context::getContext()->cookie->email;
        if (Tools::isSubmit('submitConfiguration'))
                Configuration::updateValue('BOX_CART', (int)(Tools::getValue('box_cart_sw')));
                Configuration::updateValue('BOX_ACC', (int)(Tools::getValue('box_acc_sw')));
                Configuration::updateValue('BOX_MAIL', (int)(Tools::getValue('box_mail_sw')));
                Configuration::updateValue('BOX_ARROW', (int)(Tools::getValue('box_arrow_sw')));
                Configuration::updateValue('BOX_ADMIN_MAIL', Tools::getValue('box_admin_mail'));
                $this->_clearCache('mailbox.tpl');
                $html .= $this->displayConfirmation($this->l('The settings have been updated.'));

            $html .= $this->renderForm();

        return $html;
    }

    /**
    * Returns module content
    *
    * @param array $params Parameters
    * @return string Content
    */
    public function hookdisplayMailBox($params)
    {
        if (!$this->isCached('mailbox.tpl', $this->getCacheId()))
        $this->smarty->assign(
        array(
            'box_cart' => Configuration::get('BOX_CART'),
            'box_acc' => Configuration::get('BOX_ACC'),
            'box_mail' => Configuration::get('BOX_MAIL'),
            'box_arrow' => Configuration::get('BOX_ARROW'),
            'box_admin_mail' => Configuration::get('BOX_ADMIN_MAIL')
        ));

        return $this->display(__FILE__, 'mailbox.tpl', $this->getCacheId());
    }

    public function hookHeader($params)
    {
        if (Configuration::get('PS_CATALOG_MODE'))
            return;
        $this->context->controller->addCSS(($this->_path).'css/mailbox.css', 'all');
        $this->context->controller->addCSS(($this->_path).'css/contactable.css', 'all');
        $this->context->controller->addJS(($this->_path).'js/mailbox.js', 'all');
        $this->context->controller->addJS(($this->_path).'js/jquery.contactable.js', 'all');
    }
    
    public function renderForm()
    {
        $fields_form = array(
            'form' => array(
                'legend' => array(
                    'title' => $this->l('Settings'),
                    'icon' => 'icon-cogs'
                ),
                'input' => array(
                    array(
                        'type' => 'switch',
                        'label' => $this->l('Display Cart box?'),
                        'name' => 'box_cart_sw',
                        'values' => array(
                            array(
                                'id' => 'active_on',
                                'value' => 1,
                                'label' => $this->l('YES')
                            ),
                            array(
                                'id' => 'active_off',
                                'value' => 0,
                                'label' => $this->l('NO')
                            )
                        ),
                    ),
                    array(
                        'type' => 'switch',
                        'label' => $this->l('Display Account box?'),
                        'name' => 'box_acc_sw',
                        'values' => array(
                            array(
                                'id' => 'active_on',
                                'value' => 1,
                                'label' => $this->l('YES')
                            ),
                            array(
                                'id' => 'active_off',
                                'value' => 0,
                                'label' => $this->l('NO')
                            )
                        ),
                    ),
                    array(
                        'type' => 'switch',
                        'label' => $this->l('Display Mail box?'),
                        'name' => 'box_mail_sw',
                        'values' => array(
                            array(
                                'id' => 'active_on',
                                'value' => 1,
                                'label' => $this->l('YES')
                            ),
                            array(
                                'id' => 'active_off',
                                'value' => 0,
                                'label' => $this->l('NO')
                            )
                        ),
                    ),
                    array(
                        'type' => 'text',
                        'label' => $this->l('Administrator email'),
                        'name' => 'box_admin_mail',
                        'class' => 'fixed-width-xl',
                        'desc' => $this->l('E-mail that will receive mails through the contact form')
                    ),
                    array(
                        'type' => 'switch',
                        'label' => $this->l('Display Up arrow box?'),
                        'name' => 'box_arrow_sw',
                        'values' => array(
                            array(
                                'id' => 'active_on',
                                'value' => 1,
                                'label' => $this->l('YES')
                            ),
                            array(
                                'id' => 'active_off',
                                'value' => 0,
                                'label' => $this->l('NO')
                            )
                        ),
                    ),
                ),
                'submit' => array(
                    'title' => $this->l('Save'),
                )
            ),
        );
        
        $helper = new HelperForm();
        $helper->show_toolbar = false;
        $helper->table =  $this->table;
        $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT'));
        $helper->default_form_language = $lang->id;
        $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0;
        $helper->identifier = $this->identifier;
        $helper->submit_action = 'submitConfiguration';
        $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name;
        $helper->token = Tools::getAdminTokenLite('AdminModules');
        $helper->tpl_vars = array(
            'fields_value' => $this->getConfigFieldsValues(),
            'languages' => $this->context->controller->getLanguages(),
            'id_language' => $this->context->language->id
        );
        return $helper->generateForm(array($fields_form));
    }
    
    public function getConfigFieldsValues()
    {        
        return array(
            'box_cart_sw' => Tools::getValue('box_cart_sw', Configuration::get('BOX_CART')),
            'box_acc_sw' => Tools::getValue('box_acc_sw', Configuration::get('BOX_ACC')),
            'box_mail_sw' => Tools::getValue('box_mail_sw', Configuration::get('BOX_MAIL')),
            'box_admin_mail' => Tools::getValue('box_admin_mail', Configuration::get('BOX_ADMIN_MAIL')),
            'box_arrow_sw' => Tools::getValue('box_arrow_sw', Configuration::get('BOX_ARROW'))
        );
    }

}

В принципе остальные файлы значения не имеют.

Вот мне нужно как-то в mail.php в этой строке:
$response = (example@example.com, $subject, $contactMessage, $headers) ) ? "success" : "failure" ;
вместо example@example.com вызвать значение box_admin_mail, я пробовал mail(Configuration::get('BOX_ADMIN_MAIL') но ничего.

Спасибо.

 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


15-09-2015 23:15
В файл mail.php, после:
Код:
<?php
добавьте:
Код:
require_once(dirname(__FILE__).'/../../config/config.inc.php');
require_once(dirname(__FILE__).'/../../init.php');
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
CitizenDild0
Новичок
Сообщений: 74
Регистрация: 24-09-2010


15-09-2015 23:32
Большое спасибо,когда добавляешь эти строки вверху - скрипт выдает ошибку, но письма доходят. Вот скрипт.
Код:
/*
* contactable 1.5 - jQuery Ajax contact form
*
* Copyright (c) 2009 Philip Beel (http://www.theodin.co.uk/)
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
*
* Revision: $Id: jquery.contactable.min.js 2012-05-26 $
*
*/

(function(jQuery){

    // Define the new for the plugin ans how to call it
    jQuery.fn.contactable = function(options) {
        // Set default options
        var defaults = {
            url: 'mail.php',
            header: '',
            name: 'Name',
            email: 'Email',
            customermail:'',
            dropdownTitle: '',
            dropdownOptions: ['General', 'Website bug', 'Feature request'],
            message : 'Message',
            subject : 'A contactable message',
            submit : 'SEND',
            recievedMsg : 'Thank you for your message',
            notRecievedMsg : 'Thank you for your message',
            footer: 'Please feel free to get in touch, we value your feedback',
            hideonsubmit: true
        };

        var options = jQuery.extend(defaults, options);

        return this.each(function() {

            // Create the form and inject it into the DOM
            var dropdown = ''
            ,    filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/
            ,    dropdownLen = options.dropdownOptions.length
            ,    i;

            // Add select option if applicable
            if(options.dropdownTitle) {
                dropdown += '<p><label for="contactable-dropdown">'+options.dropdownTitle+' </label><br /><select name="dropdown" id="contactable-dropdown" class="contactable-dropdown">';

                for(i=0; i < dropdownLen; i++) {
                    dropdown += '<option value="'+options.dropdownOptions[i]+'">'+options.dropdownOptions[i]+'</option>';
                }

                dropdown += '</select></p>';
            }
            // Form layout
            /*
            *    <div id="contactable-inner"></div>
            *    <form id="contactable-contactForm" method="" action="">
            *          <div id="contactable-loading"></div>
            *        <div id="contactable-callback"></div>
            *         <div class="contactable-holder">
            *            <p class="contactable-header">Header text</p>
            *             <p>
            *                <label for="contactable-name">Name<span class="contactable-green"> * </span></label><br />
            *                <input id="contactable-name" class="contactable-contact contactable-validate" name="name" />
            *            </p>
            *            <p>
            *                <label for="contactable-email"> Email address <span class="contactable-green"> * </span></label><br />
            *                 <input id="contactable-email" class="contactable-contact contactable-validate" name="email" />
            *            </p>
            *             <p>
            *                <label for="contactable-message"> Message <span class="contactable-green"> * </span></label><br />
            *                 <textarea id="contactable-message" name="message" class="contactable-message contactable-validate" rows="4" cols="30" ></textarea>
            *            </p>
            *            <p>
            *                <input class="contactable-submit" type="submit" value="Submit"/>
            *            </p>
            *            <p class="contactable-footer">Footer text</p>
            *        </div>
            *    </form>
            */

            jQuery(this).html('<div id="contactable-inner"></div><form id="contactable-contactForm" method="" action=""><div id="contactable-loading"></div><div id="contactable-callback"></div><div class="contactable-holder"><p class="contactable-header">'+options.header+'</p><p>'+'<input id="contactable-name" class="contactable-contact contactable-validate" name="name" placeholder="'+options.name+'" /></p><p>'+'<input id="contactable-email" class="contactable-contact contactable-validate" name="email" placeholder="'+options.email+'" value="'+options.customermail+'" /></p>'+dropdown+'<p>'+'<textarea id="contactable-message" name="message" class="contactable-message contactable-validate" rows="4" cols="30" placeholder="'+options.message+'" ></textarea></p><p><input class="contactable-submit" type="submit" value="'+options.submit+'"/></p><p class="contactable-footer">'+options.footer+'</p></div></form>');

            // hide header or footer when empty
            if(options.header.length === 0) {
                jQuery(this).find(".contactable-header").hide();
            }
            if(options.footer.length === 0) {
                jQuery(this).find(".contactable-footer").hide();
            }

            // Toggle the form visibility
            jQuery.fn.toggleClick = function() {
                var functions = arguments, iteration = 0
                return this.click(function() {
                    functions[iteration].apply(this, arguments)
                    iteration = (iteration + 1) % functions.length
                })
            }

            jQuery('#contactable-inner').toggleClick(function() {
                jQuery('#contactable-overlay').css({display: 'block'});
                jQuery(this).animate({"marginLeft": "-=5px"}, "2000");
                jQuery('#contactable-contactForm').animate({"marginLeft": "-=0px"}, "2000");
                jQuery(this).animate({"marginLeft": "-=5px"}, "2000");
                jQuery('#contactable-contactForm').animate({"marginLeft": "+=0px"}, "4000");
            },
            function() {
                jQuery('#contactable-contactForm').animate({"marginLeft": "-=0px"}, "4000");
                jQuery(this).animate({"marginLeft": "-=5px"}, "4000").animate({"marginLeft": "+=5px"}, "2000");
                jQuery('#contactable-overlay').css({display: 'none'});
            });

            // Submit the form
            jQuery("#contactable-contactForm").submit(function() {

                // Validate the entries
                var valid = true
                ,    params;

                //Remove any previous errors
                jQuery("#contactable-contactForm .contactable-validate").each(function() {
                    jQuery(this).removeClass('contactable-invalid');
                });

                // Loop through required field
                jQuery("#contactable-contactForm .contactable-validate").each(function() {

                    // Check the min length
                    if(jQuery(this).val().length < 2) {
                        jQuery(this).addClass("contactable-invalid");
                        valid = false;
                    }

                    //Check email is valid
                    if (!filter.test(jQuery("#contactable-contactForm #contactable-email").val())) {
                        jQuery("#contactable-contactForm #contactable-email").addClass("contactable-invalid");
                        valid = false;
                    }
                });

                if(valid === true) {
                    submitForm();
                }
                return false;
            });

            function submitForm() {
                // Display loading animation
                jQuery('.contactable-holder').hide();
                jQuery('#contactable-loading').show();

                // Trigger form submission if form is valid
                jQuery.ajax({
                    type: 'POST',
                    url: options.url,
                    data: {
                        subject:options.subject,
                        name:jQuery('#contactable-name').val(),
                        email:jQuery('#contactable-email').val(),
                        issue:jQuery('#contactable-dropdown').val(),
                        message:jQuery('#contactable-message').val()
                    },
                    success: function(data) {
                        // Hide loading animation
                        jQuery('#contactable-loading').css({display:'none'});

                        // Check for a valid server side response
                        if( data.response === 'success') {
                            jQuery('#contactable-callback').show().append(options.recievedMsg+'<br /><span class="try_again">Send another message</span>.');
                            if(options.hideonsubmit === true) {
                                //hide the tab after successful submition if requested
                                jQuery('#contactable-inner').click();
                            }
                            $(".try_again").click(function() {
                                $('.contactable-holder').show();
                                $('#contactable-callback').hide().html('');
                            });
                        } else {
                            jQuery('#contactable-callback').show().append(options.notRecievedMsg+'<br /><span class="try_again">Send another message</span>.');
                            setTimeout(function(){
                                jQuery('.contactable-holder').show();
                                jQuery('#contactable-callback').hide().html('');
                            },2000);
                            $(".try_again").click(function() {
                                $('.contactable-holder').show();
                                $('#contactable-callback').hide().html('');
                            });
                        }
                    },
                    error:function(e){
                        jQuery('#contactable-loading').css({display:'none'});
                        jQuery('#contactable-callback').show().append(options.notRecievedMsg+'<br /><span class="try_again">Send another message</span>.');
                        $(".try_again").click(function() {
                            $('.contactable-holder').show();
                            $('#contactable-callback').hide().html('');
                        });
                    }
                });
            }
        });
    };

})(jQuery);


В принципе на крайняк, я могу заменить текст error'a на текст что все хорошо, и оставить так, но все же странно.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


15-09-2015 23:59
1. В параметры ajax добавить dataType : 'json'.
2. Открыть консоль и выполнить скрипт.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
CitizenDild0
Новичок
Сообщений: 74
Регистрация: 24-09-2010


16-09-2015 00:32
Добавил в js:
Код:
// Trigger form submission if form is valid
                jQuery.ajax({
                    type: 'POST',
                    url: options.url,
                                        dataType: 'json',
                    data: {
                        subject:options.subject,
                        name:jQuery('#contactable-name').val(),
                        email:jQuery('#contactable-email').val(),
                        issue:jQuery('#contactable-dropdown').val(),
                        message:jQuery('#contactable-message').val()
                    },


Открыл консоль, отправил почту, результат тот же - почта приходит, но пишется ошибка. Консоль чистая.



Изображения:
cc3715260f5a3689310a75f05f06ce4b.png - Размер файла27.57KB, Скачиваний: 310 (Нажмите для увеличения)
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос 
Всего: 2 1 2 >