Денис Дыранов

Денис Дыранов

С нами с 20 февраля 2014; Место в рейтинге пользователей: #49
Денис Дыранов
30 сентября 2016, 10:33
0
Можно поподробнее?

if ($modx->event->name == 'msOnCreateOrder') {
	$modx->user->addSessionContext('web');
}
Выдаёт ошибку
673) User Group not found with key: 4
Денис Дыранов
29 сентября 2016, 12:16
0
Работает, спасибо.

Теперь я хочу вызвать окно, для подтверждения регистрации нового пользователя. Как я понял нужно пилить js и там менять auth/formLogin на auth/formRegister если пользователь не найден. Как лучше поймать этот момент?
if (response.message = 'Пользователь не найден') {...}
Можно лучше?
Денис Дыранов
29 сентября 2016, 11:49
0
Сработало так:

<div class="row" id="office-auth-form">
<form method="post">
    <input type="hidden" name="action" value="auth/formLogin"/>
    <h4>Вход</h4>
    <div class="form-group">
        <input type="email" name="email" placeholder="email">
    </div>
    <button type="submit" class="btn btn-success">Отправить</button>
</form>
</div>
Но как сделать, чтоб тут же регистрировался пользователь, email которого не найден?
Денис Дыранов
28 сентября 2016, 19:58
0
Кстати говоря, если вам все эти новшества не по душе — вы можете просто не обновлять чанк авторизации, и всё будет работать как и раньше.
Как быть, если я впервые поставил office уже с новыми чанками и эти новшества мне не по душе? :-) Хочу как на makimaki.ru, чтоб только email. Может где-то остался код старого чанка авторизации?
Денис Дыранов
28 августа 2016, 15:27
1
+1
Настройки TV вкладка «Параметры ввода» в самом низу.
Денис Дыранов
28 июня 2016, 17:15
0
Есть сайт-витрина, который становится магазином. Пытаюсь изменить modResource на msProduct. Получаю в консоли:

[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP Fatal error:  Maximum function nesting level of '1000' reached, aborting! in /http/rada2/core/xpdo/xpdo.class.php on line 595
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP Stack trace:
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP   1. {main}() /http/rada2/connectors/index.php:0
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP   2. modConnectorRequest->handleRequest() /http/rada2/connectors/index.php:59
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP   3. modConnectorRequest->prepareResponse() /http/rada2/core/model/modx/modconnectorrequest.class.php:69
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP   4. modConnectorResponse->outputContent() /http/rada2/core/model/modx/modconnectorrequest.class.php:82
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP   5. modX->runProcessor() /http/rada2/core/model/modx/modconnectorresponse.class.php:131
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP   6. modProcessor->run() /http/rada2/core/model/modx/modx.class.php:1690
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP   7. modObjectUpdateProcessor->process() /http/rada2/core/model/modx/modprocessor.class.php:173
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP   8. modObjectUpdateProcessor->saveObject() /http/rada2/core/model/modx/modprocessor.class.php:822
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP   9. msProduct->save() /http/rada2/core/model/modx/modprocessor.class.php:837
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  10. modResource->save() /http/rada2/core/components/minishop2/model/minishop2/msproduct.class.php:158
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  11. modAccessibleObject->save() /http/rada2/core/model/modx/modresource.class.php:645
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  12. xPDOObject->save() /http/rada2/core/model/modx/modaccessibleobject.class.php:172
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  13. xPDOObject->_saveRelatedObjects() /http/rada2/core/xpdo/om/xpdoobject.class.php:1353
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  14. xPDOObject->_saveRelatedObject() /http/rada2/core/xpdo/om/xpdoobject.class.php:1536
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  15. msProductData->save() /http/rada2/core/xpdo/om/xpdoobject.class.php:1585
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  16. xPDOObject->save() /http/rada2/core/components/minishop2/model/minishop2/msproductdata.class.php:23
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  17. xPDOObject->_saveRelatedObjects() /http/rada2/core/xpdo/om/xpdoobject.class.php:1353
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  18. xPDOObject->_saveRelatedObject() /http/rada2/core/xpdo/om/xpdoobject.class.php:1536
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  19. msProduct->save() /http/rada2/core/xpdo/om/xpdoobject.class.php:1588
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  20. modResource->save() /http/rada2/core/components/minishop2/model/minishop2/msproduct.class.php:158
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  21. modAccessibleObject->save() /http/rada2/core/model/modx/modresource.class.php:645
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  22. xPDOObject->save() /http/rada2/core/model/modx/modaccessibleobject.class.php:172
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  23. xPDOObject->_saveRelatedObjects() /http/rada2/core/xpdo/om/xpdoobject.class.php:1353
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  24. xPDOObject->_saveRelatedObject() /http/rada2/core/xpdo/om/xpdoobject.class.php:1536
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  25. msProductData->save() /http/rada2/core/xpdo/om/xpdoobject.class.php:1585
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  26. xPDOObject->save() /http/rada2/core/components/minishop2/model/minishop2/msproductdata.class.php:23
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  27. xPDOObject->_saveRelatedObjects() /http/rada2/core/xpdo/om/xpdoobject.class.php:1353
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  28. xPDOObject->_saveRelatedObject() /http/rada2/core/xpdo/om/xpdoobject.class.php:1536
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  29. msProduct->save() /http/rada2/core/xpdo/om/xpdoobject.class.php:1588
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  30. modResource->save() /http/rada2/core/components/minishop2/model/minishop2/msproduct.class.php:158
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  31. modAccessibleObject->save() /http/rada2/core/model/modx/modresource.class.php:645
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  32. xPDOObject->save() /http/rada2/core/model/modx/modaccessibleobject.class.php:172
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  33. xPDOObject->_saveRelatedObjects() /http/rada2/core/xpdo/om/xpdoobject.class.php:1353
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  34. xPDOObject->_saveRelatedObject() /http/rada2/core/xpdo/om/xpdoobject.class.php:1536
[28-Jun-2016 18:59:37 Asia/Yekaterinburg] PHP  35. msProductData->save() /http/rada2/core/xpdo/om/xpdoobject.class.php:1585

php 5.6.10. Кэш чистил. Только у меня так? Раньше вроде работало. Причём замена на msProduct происходит, если обновить страницу, но после никакие изменения у товара не сохраняются.
Денис Дыранов
23 мая 2016, 10:35
0
Мой пока что кривой и недоделанный Builder решает проблему отображая все script в виде блока codemirror рядом с rte: modx.pro/solutions/7881-content-editor-tools-0-8-and-subject-to-adminki/. Кроме того, насколько мне помнится и в TinyMCE и в CKEditor можно указать список возможных тегов.
Денис Дыранов
19 мая 2016, 12:11
+1
На данный момент только в файле /core/components/assetstv/elements/tv/input/tpl/assetstv.tpl Потом будет вынесено в словари.
Денис Дыранов
29 апреля 2016, 15:46
0
Пока решение такое.
1. На странице товара, добавил dropzone в отдельной форме. То есть в шаблоне у меня есть такое:

<script src="/assets/js/dropzone.js"></script>
<link rel="stylesheet" href="/assets/js/dropzone.css">
<form action="/upload.php" class="dropzone">
  <div class="fallback">
    <input name="file" type="file" multiple />
  </div>
</form>

2. Сделал тупой загрузчик upload.php:
<?php
session_start();
$ds          = DIRECTORY_SEPARATOR;  //1
 $ses = session_id();
$storeFolder = 'uploads/'.$ses;   //2

if (!is_dir($storeFolder))
    mkdir($storeFolder);
 
if (!empty($_FILES)) {
     
    $tempFile = $_FILES['file']['tmp_name'];          //3             
      
    $targetPath = dirname( __FILE__ ) . $ds. $storeFolder . $ds;  //4
     
    $targetFile =  $targetPath. $_FILES['file']['name'];  //5
 
    move_uploaded_file($tempFile,$targetFile); //6
     
}
?>
Загруженный файл сохраняется в папку /uploads/session_id/.

3. В /core/components/minishop2/model/minishop2/minishop2.class.php изменил функцию sendEmail, следующим образом:

public function sendEmail($email, $subject, $body = 'no body set') {
		if (!isset($this->modx->mail) || !is_object($this->modx->mail)) {
			$this->modx->getService('mail', 'mail.modPHPMailer');
		}
		$this->modx->mail->set(modMail::MAIL_FROM, $this->modx->getOption('emailsender'));
		$this->modx->mail->set(modMail::MAIL_FROM_NAME, $this->modx->getOption('site_name'));
		$this->modx->mail->setHTML(true);
		$this->modx->mail->set(modMail::MAIL_SUBJECT, trim($subject));
		$this->modx->mail->set(modMail::MAIL_BODY, $body);
		$this->modx->mail->address('to', trim($email));
		$storeFolder = MODX_BASE_PATH .'uploads/'.session_id();
		if (is_dir($storeFolder)){
			$files = scandir($storeFolder);
			foreach($files as $file) {
			  $attachment = $storeFolder.'/'.$file;
			  $this->modx->mail->attach($attachment);
			}
		}

		if (!$this->modx->mail->send()) {
			$this->modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$this->modx->mail->mailer->ErrorInfo);
		}
		$this->modx->mail->reset();
		
		if($files){
		    foreach ($files as $file) {
		            unlink($storeFolder.'/'.$file);
		    }
		    rmdir($storeFolder);
		    }
	}
Функция цепляет все файлы из папки /uploads/session_id/ к отправляемому письму и удаляет папку.

Ясно, что нужно расширять класс, а не править minishop2.class.php. Что удалять папку нужно в другом месте (сейчас аттачи приходят только менеджеру). Но, вроде работает. Попробую допилить дальше. Хотя есть сомнения в правильности такого способа. Как я уже 100 раз говорил, я дизайнер, а не программист. Хотелось бы услышать мнение программистов.
Денис Дыранов
28 апреля 2016, 19:36
0
хммм… стоит попробовать. Спасибо.
Денис Дыранов
28 апреля 2016, 19:11
0
Это слишком геморойно для менеджеров. Почта практически бесконечна, в отличии от хостинга. Нужно чтоб файлы именно аттачились к письму, а не были ссылкой на файл, который в скором времени исчезнет, пусть даже это случится через месяц. Заставлять манагеров удалять файлы самостоятельно (пусть даже ссылкой) — гиблое дело. Забьют.
Денис Дыранов
28 апреля 2016, 19:02
0
Это понятно. Осталось решить две «простецких» задачи: аккуартно и безопасно загрузить файл куда-то и как-то приаттачить его к письму менеджеру. А потом ещё удалить, чтоб не создавать помойку на хостинге.
Денис Дыранов
28 апреля 2016, 18:46
0
Задача, в моём случае — увеличить стоимость товара при загрузке файла пользователем. Файл — фотка. Делаем продукт с фоткой пользователя — увеличиваем его стоимость. Так что загружаться файл должен ещё до добавления товара в корзину.
Денис Дыранов
28 апреля 2016, 18:29
0
У меня пока идея: грузить файлы куда-то в tmp и как-то аттачить к заказу, после чего удалять. Пока кажется что это реально. Попробую.
Денис Дыранов
28 апреля 2016, 12:59
0
Та же задача. Похоже этот вопрос везде игнорируется. Нашли решение?
Денис Дыранов
12 апреля 2016, 11:40
0
Пытаюсь сделать ровно то же самое. Не могли бы более подробно рассказать о вашем решении? Реализовать изменение веса в корзине не пробовали?
Денис Дыранов
04 апреля 2016, 13:24
0
На данный момент никак. Я занят основной своей работой. Тем не менее, в процессе этой работы придумались некоторые небольшие улучшения, но говорить о них пока рано.

Я не забил, но времени на доработки пока нет. Когда оно появится, в первую очередь я собираюсь исправить ошибки, привести в порядок код и выложить компоненты в репозитории. На данный момент связка AssetsTV и Builder решает все те проблемы, которые у меня возникали, и добавления каких-то серьёзных новых фитч не планируется — только полировка существующих.

Конечно, у компонентов появится своя страница с документацией и примерами. Но я занимаюсь этим только в свободное время, которого сейчас не так много.

Если вам не хватает каких-то плюшек, пишите здесь или на гитхабе. Если хотите поучаствовать в развитии компонентов — опять же гитхаб.

Последние, на данный момент, версии выложены здесь: modx.pro/solutions/7881-content-editor-tools-0-8-and-subject-to-adminki/ Ссылки на гитхаб там же.
Денис Дыранов
21 марта 2016, 09:39
+1
<img src="[[phpthumbon? &input=`[[+atv.url]]` &options=`w=78&h=52&zc=1`]]" />
или можете вызвать assetsTV с пареметром &tmb_max_height, и он посчитает вам размеры превьюшек:

[[!assetsTV? &tv=`assets`&tpl=`assetsTV-tpl-foto-tmb` &tmb_max_height=`52`]]
Тогда в чанке:

<img src="[[phpthumbon? &input=`[[+atv.url]]` &options=`w=[[+atv.thumb_width]]&h=[[+atv.thumb_height]]`]]" />
Денис Дыранов
19 февраля 2016, 09:03
0
Плохо понял, но путь к файлам хранится только в настройках TV. Так что после переноса вам достаточно будет его поменять в одном месте. Перезаливать ничего не нужно. Но если вы вставляете картинки в контент, то там, возможно, нужно будет править.