Александр Туниеков

Александр Туниеков

С нами с 19 декабря 2015; Место в рейтинге пользователей: #15
Александр Туниеков
01 марта 2019, 17:26
+1
Без понятия :) красивости это не ко мне. А так вообще-то у вас обычный ява-скрипт. Навешать лоадер, например, без проблем можно. Прогресс-бар уже сложнее. Там как то степень готовности получать надо. Можно сделать MODX.console https://yadi.sk/i/8hgGFbfMkIQfnA https://github.com/touol/EmailQueue/blob/b41f3e445f97b9b277dcc890c66b2ee101a61dbf/assets/components/emailqueue/js/mgr/widgets/items.grid.js#L341
Александр Туниеков
01 марта 2019, 12:07
+1
Ну вы похоже коносолью браузера не очень умеете пользоваться :(.
Так вот ошибка 500 пропала потому, что она теперь показывается. Шелкаете на этой строке и там показывается ответ от сервера. Смотрите что в ответе.
https://yadi.sk/i/sthHH3XOTbCjsw
Александр Туниеков
01 марта 2019, 11:55
+1
А показ ошибок пхп включили?
Александр Туниеков
01 марта 2019, 04:52
+1
Залил на GitHub github.com/SequelONE/PayPanel
что-то мне не сильно охота дебажить чужой компонент :)
в консоли ругается на setAction.
Когда научитесь собеседников уважать? Ошибку сразу надо писать. Я не телепат же :)
выдаёт 500ую ошибку
То есть запрос в network уже есть?! В коннектор компонента PayPanel/assets/components/paypanel/connector.php в начало вставьте
error_reporting(E_ALL);
ini_set('display_errors', 1);
И смотрите ошибку в network response. Если что там не понятно, ошибку сюда.
Александр Туниеков
28 февраля 2019, 19:49
+1
Явных ошибок не вижу. Раз запроса не проходит ищи этап на каком срывается. Для начала вставь console.log(«test»); в начало этой функции и проверь консоль браузера. Или алертом можешь проверять. Я с телефона сижу счас. Не удобно набирать.
Александр Туниеков
28 февраля 2019, 15:43
+1
хм… или эта функция save_action должна вызвать? что-то такого варианта я не встречал…
Александр Туниеков
28 февраля 2019, 14:18
+1
покажи эту функцию this.setAction('importapi', 'false', 0);
Александр Туниеков
28 февраля 2019, 06:04
+1
А что не так то пошло? :) Какая ошибка? В коносоле разработчика в Network что говорит?
Александр Туниеков
23 февраля 2019, 21:36
0
Какие 5к р.)) о чем речь
Я другу, на его последнее предложение, так и сказал, что нормальный сайт от 50т.р. делается.
Ты как разработчик вообще гарантировать какую то прибыль не можешь, и об этом надо говорить клиенту.
Ясно, что не могу, но вопрос в том, что клиенты же не за красивые глазки бегут заказывать у тебя сайт. Нужно чтоб разработанный сайт их как-то устраивал. Приносил прибыль или моральное удовлетворение :)
Александр Туниеков
23 февраля 2019, 20:11
0
Как минимум плюс в том, что вам не приходится общаться с неадекватными, агенство их для вас фильтрует.
Агентствам бывает пофиг. Они берут заказы от неадекватных и просто скидывают тебе, которые фиг знает как делать.
Херня. Как сказать «хочу быть богатым».
Аргумент весомый :(. Только меня не совсем устраивает текущее положение, заработки и то что мало пользы от работы. Хотя конечно 90% фирм закрываются в первые 3 года работы. Может и для сайтов такая-же судьба…
Александр Туниеков
23 февраля 2019, 19:10
0
Не вопрос не в предоплате. Пример не слишком удачный :(. Вопрос какие сайты эффективны и восстребованны? Как это определять? Какие суммы для эффективного сайта приемлемы? Как подобрать клиенту нужный ему сайт и объяснить его стоимость?
Вопросы может и дурацкие. Типа «смысла жизни» :), но по крайней мере меня такие вопросы развивают :)
Александр Туниеков
29 января 2019, 10:43
0
Разобрался :) В общем в modExtra менять ничего не нужно.
Александр Туниеков
29 января 2019, 08:04
0
Для проверки установил Tickets. На modAction ругается 3 раза. А должно 1 раз на это
if ($action = $modx->getObject('modAction', array('namespace' => 'tickets'))) {
                $action->remove();
                /** @var modMenu $menu */
                if ($menu = $modx->getObject('modMenu', array('text' => 'tickets'))) {
                    $menu->remove();
                }
Похоже наши гуру и сами не знают, что там такого нужно поменять, чтоб не ругалось :)
Александр Туниеков
28 января 2019, 06:21
0
квест найди отличия этого
<?php
/** @var modX $modx */
/** @var array $sources */

$menus = array();

$tmp = array(
    'emailqueue' => array(
        'description' => 'emailqueue_menu_desc',
        'action' => 'home',
        //'icon' => '<i class="icon icon-large icon-modx"></i>',
    ),
);

foreach ($tmp as $k => $v) {
    /** @var modMenu $menu */
    $menu = $modx->newObject('modMenu');
    $menu->fromArray(array_merge(array(
        'text' => $k,
        'parent' => 'components',
        'namespace' => PKG_NAME_LOWER,
        'icon' => '',
        'menuindex' => 0,
        'params' => '',
        'handler' => '',
    ), $v), '', true, true);
    $menus[] = $menu;
}
unset($menu, $i);

return $menus;
от этого
Александр Туниеков
28 января 2019, 06:03
0
Я это читал перед тем как тему создать :(, но увы нефига не понял :(. Какие-то ссылки на коммиты Tickets, в которые я смотрю и не вижу никаких modAction. Смотрю код build modExtra и тоже не нахожу никаких modAction.
Я в том как генерируется и устанавливается транспортный пакет внутри кода MODX практически ничего не знаю. Просто тупо брал modExtra переименовывал и писал что нужно в нем :). А теперь прямо засада.
Александр Туниеков
28 декабря 2018, 21:21
0
Недавно делал сайт обучения по недвижимости
Вопрос первый — как закрыть доступ к платным курсам?
Делал компонент — регистр курсов. Табличка ид курса, ид юзера, зарегистрирован, куплен, пройден. На странице курса сниппет который проверяет платный ли курс, куплен ли курс этим юзером и выдает плейсхолдеры в шаблон на феноме где на плейсхолдеры ставится {if $placeholder}. То есть в зависимости от плейсхолдеров активируются разные части шаблона. (а можно, проще, в сниппете возвращать просто разные чанки на куплен и не куплен. У нас было просто много мест где менять поведение надо.)
Вопрос второй — на каждом курсе будет по 5-6 видео разделов, планируется делать проверку домашнего задания.
Допустим мы зарегистрировались, зашли на бесплатный или купили платный курс, и попадаем в раздел lesson1, смотрим видео — сдаем домашнее задание посредством чата. Такой чат будет подразумеваться на каждом видео.
У нас задания сдавались тестами, а не чатами.
Нормального чата под MODx нет. Это надо сторонний юзать наверно.
Александр Туниеков
22 декабря 2018, 16:52
0
Я предпочитаю не обновлять кроном цену товаров, а пересчитываю ее в плагине на событие msOnGetProductPrice. В price цена в долларах, а показываются пересчитанные в рублях. Курсы получаю с помощью CurrencyRate. Мне кажется что так надежнее :). Крон не повиснет при пересчете и если много товаров, то нагрузка на сервер меньше (цена персчитывается каждый раз при показе товара, но не надо пересчитывать ее для всех товатов. Только те что посмотрели).
Не знаю как способ лучше. Кому какой способ больше нравиться? Пересчитывать при показе товара или пересчитывать кроном ночью все товары? И почему?
Александр Туниеков
17 декабря 2018, 19:04
0
Нет не планируется. В принципе, скрипт написать что рассылку делает не сложно. Примерно так:
if (!$Orgs = $modx->getService('organizations', 'Organizations',$modx->getOption('organizations_core_path', null, $modx->getOption('core_path') . 'components/organizations/') . 'model/organizations/', $scriptProperties)) {
	return 'Could not load Organizations class!';
}
$orgs = $modx->getCollection('Orgs');
foreach($orgs as $org){
    ...//здесь пишете отправка письма на $org->email, если это поле заполняется.
    //если не заполняется, то можно отправить на письма на пользователей организации
    $c = $modx->newQuery('OrgsUsersLink');
    $c->leftJoin('modUserProfile', 'modUserProfile', "modUserProfile.internalKey = OrgsUsersLink.user_id");
    $c->select(array(
      'modUserProfile.email'
    ));
    $c->where(array(
        'OrgsUsersLink.org_id' => $org->id,
        'OrgsUsersLink.user_group_id' => 1, //администраторам
        'OrgsUsersLink.active' => 1,
    ));
    $users = $modx->getCollection('OrgsUsersLink', $c);
    foreach($users as $user){
        ...//отправка письма на $user->email
    }
}
Отправлять письма как здесь https://ilyaut.ru/reposts/sending-mail-through-modmail/, либо через EmailQueue если на сервере ограничение по числу писем за раз.