Андрей

Андрей

С нами с 09 апреля 2015; Место в рейтинге пользователей: #68
Андрей
05 января 2019, 16:27
3
0
ох, давно это было… я может что-то еще там менял.
вот рабочий итог
[[!FormIt?
            &pdfTpl=`tpl.PDF1`
            &hooks=`formit2file, SendFilePDF, redirect`
            &author=`www.ru`
            &title=`Заявка`
            &emailTpl=`sentEmailTpl`
            &validate=`contact_email:required`
            &store=`1`
            &redirectTo=`108`
            ]]
formit2file
<?php
// initialize output;
$output = true;
$counter = 1;
 
// valid extensions
$ext_array = array('jpg', 'png', 'gif', 'JPG', 'zip', 'rar', '7z', 'rar5');
 
// create unique path for this form submission
$uploadpath = 'assets/pdf/';
 
// get full path to unique folder
$target_path = $modx->config['base_path'] . $uploadpath;
 
// get uploaded file names:
$submittedfiles = array_keys($_FILES);
 
// loop through files
foreach ($submittedfiles as $sf) {
 
    // Get Filename and make sure its good.
    $filename = basename( $_FILES[$sf]['name'] );
 
    // Get file's extension
    $ext = pathinfo($filename, PATHINFO_EXTENSION);
    $ext = mb_strtolower($ext); // case insensitive
 
    // is the file name empty (no file uploaded)
    if($filename != '') {
         
        // is this the right type of file?
        if(in_array($ext, $ext_array)) {
     
            // clean up file name and make unique
            $filename = $counter . '.' . $ext; 
            $filename = str_replace(' ', '_', $filename); // spaces to underscores
            $filename = date("G-i-s_") . $filename; // add date & time
             
            // full path to new file
            $myTarget = $target_path . $filename;
             
            // create directory to move file into if it doesn't exist
            mkdir($target_path, 0755, true);
             
            // is the file moved to the proper folder successfully?
            if(move_uploaded_file($_FILES[$sf]['tmp_name'], $myTarget)) {
                // set a new placeholder with the new full path (if you need it in subsequent hooks)
                $myFile = $uploadpath . $filename;
                $hook->setValue($sf,$myFile);
                // set the permissions on the file
                if (!chmod($myTarget, 0644)) { /*some debug function*/ }
                 
            } else {
                // File not uploaded
                $errorMsg = 'There was a problem uploading the file.';
                $hook->addError($sf, $errorMsg);
                $output = false; // generate submission error
            }
         
        } else {
            // File type not allowed
            $errorMsg = 'Type of file not allowed.';
            $hook->addError($sf, $errorMsg);
            $output = false; // generate submission error
        }
     
    // if no file, don't error, but return blank
    } else {
        $hook->setValue($sf, '');
    }
$counter = $counter + 1;
}
return $output;
SendFilePDF
<?php
$fields = $hook->getValues(); //поля из формы
$NF = $fields['filesToUpload'];//получаем имя и путь загруженного файла
$fields['filesToUpload'] = str_replace('assets/pdf/','',$fields['filesToUpload']);
$mail_z = $fields['contact_email'];
$message = $modx->getChunk('sentEmailTpl', $fields);

//формируем PDF
$pdo = $modx->getService('pdoFetch'); 
$pdfTpl = $modx->getOption('pdfTpl', $formit->config, '', true);
$content = $pdo->getChunk($pdfTpl, $fields);

$config = array();
$config = array_merge($config, $fields, array(
    'content' => $content,
    'author' => $author,
    'title' => $title,
));
// формируем ссылку на PDF
$result = $modx->runSnippet('PdfCreate', $config);
 
$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->set(modMail::MAIL_BODY, $message);
$modx->mail->set(modMail::MAIL_FROM, $modx->getOption('emailsender'));
$modx->mail->set(modMail::MAIL_FROM_NAME, $modx->getOption('site_name'));
$modx->mail->set(modMail::MAIL_SUBJECT, 'Поступила заявка');
$modx->mail->address('to', 'xxx@gmail.com');
$modx->mail->address('to', 'xxx@mail.ru');
$modx->mail->address('to', $mail_z);
$modx->mail->address('reply-to', $modx->getOption('emailsender'));
$modx->mail->attach($modx->getOption('base_path').'assets/pdf/'.$result.'.pdf');
$modx->mail->attach($modx->getOption('base_path').$NF);
$modx->mail->setHTML(true);

if (!$modx->mail->send()) {
  $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
}

$modx->mail->reset();

return true;
PdfCreate
<?php
$date = date('Y-m-d_H-i-s', time()) . '_' .rand(1, 100);

$corePath = $modx->getOption('pdfresource.core_path', null, $modx->getOption('core_path') . 'components/pdfresource/');
$pdfresource = $modx->getService('pdfresource', 'PDFResource', $corePath . 'model/pdfresource/', array(
    'core_path' => $corePath
));

$content = $modx->getOption('content', $scriptProperties, '', true);
$title = $modx->getOption('title', $scriptProperties, '', true);
$author = $modx->getOption('author', $scriptProperties, '', true);

$aliasPath = MODX_ASSETS_PATH . 'pdf/';
$site_url = $modx->getOption('site_url');

// настройки PDFResource (подробнее почитать здесь: http://jako.github.io/PDFResource/usage/)
$pdfresource->initPDF(array(
    'mode' => 'utf-8',
    'format' => 'A4',
    'defaultFontSize' => intval(13),
    'defaultFont' => '',
    'mgl' => intval(30),    // margin left
    'mgr' => intval(10),    // margin right
    'mgt' => intval(30),     // margin top
    'mgb' => intval(10),     // margin bottom
    'mgh' => intval(10),    // margin header
    'mgf' => intval(10),    // margin footer
    'orientation' => 'P',   // ориентация PDF
    'customFonts' => '[]',
));

$pdfresource->pdf->SetTitle($title);
$pdfresource->pdf->SetAuthor($author);
$pdfresource->pdf->SetCreator($modx->getOption('site_url'));

$pdfresource->pdf->WriteHTML($content, 2);

$file_name = $date;
$pdfresource->pdf->Output($aliasPath . $file_name . '.pdf', 'F');

return $file_name;
Евгений Борисов
22 октября 2018, 07:01
3
+5
SELECT * FROM modx_site_content ORDER BY IF(pagetitle REGEXP "^[А-Яа-я]", 0, 1), pagetitle
Володя
19 октября 2018, 15:29
1
+1
Добрый день.
Предусмотренного варианта нет, можно например использовать уведомления minishop
<script>
    $(document).ready(function () {
        if (typeof msFavorites != 'undefined' && typeof miniShop2 != 'undefined') {
            msFavorites.addMethodAction('success', 'name_action', function(){
                miniShop2.Message.initialize();
                var self = this; 
                if (self.data && self.data.method == 'add') {
                    miniShop2.Message.success('add');
                }
                if (self.data && self.data.method == 'remove') {
                    miniShop2.Message.info('remove');
                }
            });
        }
    });
</script>
Володя
12 октября 2018, 08:35
2
0
Доброе утро.
Где то уже писал, можно сделать примерно так
<script>
$(document).on('msoptionsprice_product_action', function (e, action, form, r) {
    if (action == 'modification/get' && r.success && r.data) {
        var m = r.data.modification || {};

        var thumbs = m.thumbs || {main:['default.png']};
        var fotorama = $(form).closest(msOptionsPrice.Product.parent).find('.fotorama').data('fotorama');

        if (fotorama) {
            var images = [];
            (thumbs.main || []).filter(function (href) {
                images.push({img: href, caption: ''})
            });
            fotorama.load(images);
        }
    }
});
</script>
Евгений Борисов
05 сентября 2018, 14:12
3
0
DatabaseCustomURL http://www.rfxn.com/downloads/rfxn.ndb
DatabaseCustomURL http://www.rfxn.com/downloads/rfxn.hdb
DatabaseCustomURL http://ftp.swin.edu.au/sanesecurity/junk.ndb
DatabaseCustomURL http://ftp.swin.edu.au/sanesecurity/phish.ndb
DatabaseCustomURL http://ftp.swin.edu.au/sanesecurity/rogue.hdb
DatabaseCustomURL http://ftp.swin.edu.au/sanesecurity/foxhole_filename.cdb
DatabaseCustomURL http://ftp.swin.edu.au/sanesecurity/foxhole_generic.cdb
DatabaseCustomURL http://ftp.swin.edu.au/sanesecurity/foxhole_js.cdb
DatabaseCustomURL http://ftp.swin.edu.au/sanesecurity/badmacro.ndb
DatabaseCustomURL http://ftp.swin.edu.au/sanesecurity/scam.ndb
DatabaseCustomURL http://ftp.swin.edu.au/sanesecurity/sanesecurity.ftm
DatabaseCustomURL http://ftp.swin.edu.au/sanesecurity/sigwhitelist.ign2
DatabaseCustomURL http://cdn.malware.expert/malware.expert.ndb
DatabaseCustomURL http://cdn.malware.expert/malware.expert.hdb
DatabaseCustomURL http://clamav.bofhland.org/bofhland_cracked_URL.ndb
DatabaseCustomURL http://clamav.bofhland.org/bofhland_malware_URL.ndb
DatabaseCustomURL http://clamav.bofhland.org/bofhland_malware_attach.hdb
DatabaseCustomURL http://clamav.bofhland.org/bofhland_phishing_URL.ndb
Туда же
Володя
21 августа 2018, 10:19
1
+1
Добрый день.
Не думаю что данную задачу нужно решать с помощью данного компонента.
Вам стоит на странице товара — линза выводить две формы продукта и кнопку по которой вызывать сабмит у этих форм. В корзине будет то что в итоге пользвоатель выбрал.

пример
<!-- форма 1 -->
<form class="form-horizontal ms2_form col-md-4" method="post" data-group="product">
    <input type="hidden" name="id" value="[[*id]]"/>
    <input type="submit" name="ms2_action" value="cart/add" style="display:none"/>
    
    [[msOptions?options=`color,size`]]
</form>

<!-- форма 2 -->
<form class="form-horizontal ms2_form col-md-4" method="post" data-group="product">
    <input type="hidden" name="id" value="[[*id]]"/>
    <input type="submit" name="ms2_action" value="cart/add" style="display:none"/>
     
    [[msOptions?options=`color,size`]]

</form>

<button class="btn btn-default" onclick="product_submit()">
    <i class="glyphicon glyphicon-barcode"></i> [[%ms2_frontend_add_to_cart]]
</button>

<script>
    function product_submit() {
       $(miniShop2.form).filter('[data-group="product"]').submit();
    };
</script>
Баха Волков
26 июля 2018, 22:12
1
+2
Включаете тогда fenom и погнали:

{var $resources = $_modx->runSnippet('pdoResources', [
    'parents' => 1,
    'includeTVs' => 'image',
    'prepareTVs' => 1,
    'proccessTVs' => 1,
    'tvPrefix' => '',
    'return' => 'json'
])}

{foreach $resorces | fromJSON as $res}
    {$res.image | pthumb : 'w=270&h=270&zc=1'}
{/foreach}
Володя
02 июля 2018, 12:03
2
+4
$c = $modx->newQuery("modUser");
$alias = $modx->getTableName("modUser");
$c->setClassAlias($alias);
$c->where(array(
    "{$alias}.active" => 0,
    "{$alias}.createdon:<"  => strtotime('-365 day')
    
));
$c->query['command']= "DELETE {$alias}";
$c->prepare();
$c->stmt->execute();
nuraksha
29 июня 2018, 14:47
1
0
Спасибо за помощь!
Сделал вот так:
requirejs(["app", "app/ajaxform"], function () {
        require(['ajaxform'], function (e) {
            e.initialize({$_modx->getPlaceholder('AjaxForm.params')});
        });
    });
В ajaxform.js
define('ajaxform', ['jquery','jgrowl','jqueryform'], function ($,jGrowl,ajaxSubmit) {
....
return AjaxForm;