Мордынский Николай · 20 марта 2015, 17:32 Вот нашел решение // Try to find by email $modx->event->_output = $modx->getObjectGraph('modUser', '{"Profile":{},"UserSettings":{}}', array ('Profile.email' => $scriptProperties['username']));Сюда можно дописывать еще критерии поиска, можно хоть по дополнительным полям логиниться Плагин вешается на событие onUserNotFound Вопросы / Авторизация по email и номеру телефона 6 +1 6
Василий Наумкин · 18 марта 2015, 15:18 Тот класс, который я приводил выше — отлично различает планшеты и телефоны. Причем, умеет определять и производителя, и версию, и еще много чего. Можно демо погонять demo.mobiledetect.net/ Объявления о работе / Доработка Mobile Detection 12 +1 1
Rootiys · 16 марта 2015, 13:12 На сколько знаю, если просто из репы поставить — то подглючивает. Я ставил из репы, потом сверху залил эти файлы. В итоге все работает отлично: Вопросы / Как вывести превьюшку в Админке 10 +1 1
Володя · 16 марта 2015, 09:56 есть два обработчика: — ресурс — задействует метод sendForward — сниппет — обработает указанный сниппет и отдаст через exit в первом случае это ресурс (указываете в настройках обработчика), в котором вы вызываете какой либо сниппет, и в зависимости от полученных параметров у вас выводит информацию. во втором случае даже нет ресурса, просто отдача результата сниппета на страницу. Новые дополнения и их версии / [VirtualPage] - Виртуальные страницы. 183 +2 1
Василий Наумкин · 11 февраля 2015, 09:41 Если файлы уже на сервере, то можно использовать процессор загрузки через консольный скрипт: <?php define('MODX_API_MODE', true); require 'index.php'; // Скрипт лежит в корне сайта $file = MODX_BASE_PATH . 'test.jpg'; // Твоя картинка в корне сайта $modx->getService('error','error.modError'); $modx->setLogLevel(modX::LOG_LEVEL_ERROR); $modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML'); $modx->ms2Gallery = $modx->getService('ms2gallery', 'ms2Gallery', MODX_CORE_PATH . 'components/ms2gallery/model/ms2gallery/'); // Вызов процессора загрузки $response = $modx->runProcessor('gallery/upload', array( 'file' => $file, // Картинка 'id' => 1 // id ресурса с галереей ), array('processors_path' => MODX_CORE_PATH.'components/ms2gallery/processors/mgr/') ); // Вывод результата работы процессора if ($response->isError()) { print_r($response->getAllErrors()); } else { print_r($response->response); }Думаю, будет совсем нетрудно доработать для твоей задачи. Перед покупкой дополнения можно тестировать на modhost.pro Вопросы / массовый импорт фото в ms2Gallery 7 +1 2
Василий Наумкин · 06 февраля 2015, 19:22 Не нужно делать имитацию клика. Каждый клик — это событие изменения формы, и, соотвественно, загрузка результатов с сервера. Пока кликов было мало, ты этого не замечал, а теперь ситуация изменилась. Нужно пройти по чекбоксам и проставить (или снять) им атрибут checked, а потом отправить форму вручную. Например, зайди сюда и набери в консоли браузера: $('#mse2_msoption\\|tags input').each(function() {$(this).attr('checked', true)}); $('#mse2_filters').submit(); Вопросы / Как выбрать группу фильтров в mSearch2 ? 2 +1 1
Василий Наумкин · 05 февраля 2015, 22:08 Цикл не нужен: $q = $modx->newQuery('msProductData', array('article' => $article )); // Если это обновление ресурса - исключаем его из условия if ($mode == 'upd') { $q->where(array('id:!=' => $resource->get('id'))); } if ($modx->getCount('msProductData', q)) { // ... Возврат ошибки } Вопросы / РЕШЕНО! Уникальность поля артикул 10 0 1
Максим Кузнецов · 31 января 2015, 21:35 Помогу с решением. Вызываем сниппет Login: [[!Login? &loginTpl=`fastLoginTpl` &errTpl=`fastLoginError`]] Чанк формы для авторизации fastLoginTpl: <div style="display: none;" id="authErrors">[[+errors]]</div> <form class="loginForm" id="iWannaLogin" action="[[~[[*id]]]]" method="post"> <div class="login"> <input id="loginForm" name="username" class="roundInput" type="text" placeholder="Логин" title="Ваш логин"> </div> <div class="password"> <input id="passwordForm" name="password" class="roundInput" type="password" placeholder="Пароль" title="Ваш пароль"> </div> <input class="returnUrl" type="hidden" name="returnUrl" value="[[+request_uri]]" /> <input class="loginLoginValue" type="hidden" name="service" value="login" /> <div class="submit"> <a rel="nofollow" href="[[~17]]">Я - тупой, забыл пароль..</a> <input id="ajaxLoginButton" type="submit" name="Login" value="Войти" /> </div> </form> Чанк для вывода ошибки fastLoginError: [[+msg]] Скрипт js, обрабатывающий событие отправки формы (нужен подключенный jquery): <script type="text/javascript"> $(document).ready(function(){ $("#iWannaLogin").bind("submit", function() { $("#authErrors").text(""); //здесь можно допилить подсветку полей с ошибкой if ($("#loginForm").val().length < 1 && $("#passwordForm").val().length < 1) { $.jGrowl("Введите логин и пароль", {group: "m-Error"}); return false; } if ($("#loginForm").val().length < 1) { $.jGrowl("Введите логин", {group: "m-Error"}); return false; } if ($("#passwordForm").val().length < 1) { $.jGrowl("Введите пароль", {group: "m-Error"}); return false; } $.ajax({ type: "POST", cache: false, url: "[[~[[*id]]]]", data: $(this).serializeArray(), beforeSend: function(){ $("#ajaxAuth .closeBlock").css("display", "none"); $("#ajaxAuth .ajaxLoad").css("display", "block"); $("#ajaxLoginButton").prop("disabled", true); }, success: function(data) { $("#ajaxAuth .closeBlock").css("display", "block"); $("#ajaxAuth .ajaxLoad").css("display", "none"); var errMessage = $(data).find("#authErrors").text(); if(errMessage == ""){ window.location = "адрес для переадресации при успешной авторизации"; } else{ $("#authErrors").text(errMessage); $.jGrowl($("#authErrors").text(), {group: "m-Error"}); } }, complete: function(){ $("#ajaxLoginButton").prop("disabled", false); } }); return false; }); }); </script> — я еще подключил плагин jgrowl для отправления алертов. В его же вызове group: «m-Error» — класс для всплывающего бокса (красный, с ошибкой). Если jgrowl не нужен — то вместо него вставляем в поле для ошибок желаемый ответ. Пример: $("#authErrors").text("текст ошибки").css("display", "block"); #ajaxAuth .ajaxLoad — в моем примере форма с индикатором загрузки, которая появляется при обработке аякс-запроса. Вопросы / AjaxForm и Login 13 +3 5
Илья Уткин · 28 января 2015, 13:53 Для истории, вот код плагина: <?php if ($modx->event->name != "OnHandleRequest" || $modx->context->key == 'mgr') { return; } if ($_SERVER['REQUEST_URI'] != '/') { $uri = substr($_SERVER['REQUEST_URI'],1); if (substr($uri,-5) != '.html' && substr($uri,-1) != '/') { $uri .= '/'; } $resource = $modx->getObject('modResource', array('uri' => $uri)); $ctx = $resource->get('context_key'); } else { $ctx = 'web'; } if ($ctx != $modx->context->key){ $modx->switchContext($ctx); } Вопросы / Контексты для разделения страниц 27 0 1
Fi1osof · 22 января 2015, 15:42 Ставите Console. Выполняете код: ini_set('max_execution_time', 0); ignore_user_abort(true); $c = 'modResource'; $q = $modx->newQuery($c); $q->sortby('id'); $q->select(array( "{$c}.*", )); $s = $q->prepare(); $s->execute(); while($row = $s->fetch(2)) $response = $modx->runProcessor('resource/update', $row); if($response->isError()){ print_r($response->getResponse()); return; } $modx->error->reset(); }Так как у вас документов много, советую сначала прогнать только корневые документы (добавить в запрос $q->where(array('parent' => 0));), а потом по каждому разделу в отдельности, указывая соответствующий parent. Вопросы / как пересохранить 2000 ресурсов ? 16 +3 5
UiCMPGenerator дополнение для создания пакетов Ближе к сентябрю, основная загвоздка это создание нормальной документации и видео обзора, а так пакет как бы уже готов
Личный кабинет на Sendit - не удается сбросить пароль Хм, в массиве поле extended приходит пустым, временного пароля там нет. Сам тестовый юзер изначально был зареген в группу Users с правами доступа в личный кабинет (по обычной инстр...
Checkbox для модального окна Они не отключены, они платные, чтобы писали только те, кому действительно очень надо. Когда бесплатно люди начинают думать, что я им должен.
[SendIt 2.6.0] Анализ поведения пользователя для защиты от спама (невидимая капча)... Здравствуйте. Делаю личный кабинет на Sendit и со сбросом пароля возникли проблемы. Можете подсказать, в чем ошибка? Список вопросов в одноименном разделе на modx.pro пока пуст, и,...
Minishop + честный знак (продажа маркированной продукции) В нашем случае мы решили убрать всю логику по маркировке сайта.
MiniShop3 - Не выводятся товары дополнительных категорий @SYAN ваша указанная проблема исправлена еще до версии 1.2.3 @Павлик Мышкин завел: github.com/modx-pro/MiniShop3/issues/480 github.com/modx-pro/MiniShop3/issues/481Исправим в б...
MobileDetect 2.0.0-pl функция "планшеты как стандартные браузеры не работает" в 2.1.0-pl баг исправлен
msImportExport не сохраняет родителя по умолчанию Компонент не понимает кирилические домены при загрузку фото. пример: Error download. Url : https://антаресдвери.рф/upload/iblock/a50/a50b2ef45305a3c18f6e298f1e134880.jpg. Message...
Сюда можно дописывать еще критерии поиска, можно хоть по дополнительным полям логиниться
Плагин вешается на событие onUserNotFound
Можно демо погонять demo.mobiledetect.net/
Я ставил из репы, потом сверху залил эти файлы.
В итоге все работает отлично:
— ресурс — задействует метод sendForward
— сниппет — обработает указанный сниппет и отдаст через exit
в первом случае это ресурс (указываете в настройках обработчика), в котором вы вызываете какой либо сниппет, и в зависимости от полученных параметров у вас выводит информацию.
во втором случае даже нет ресурса, просто отдача результата сниппета на страницу.
Думаю, будет совсем нетрудно доработать для твоей задачи.
Перед покупкой дополнения можно тестировать на modhost.pro
Нужно пройти по чекбоксам и проставить (или снять) им атрибут checked, а потом отправить форму вручную.
Например, зайди сюда и набери в консоли браузера:
Вызываем сниппет Login:
Чанк формы для авторизации fastLoginTpl:
Чанк для вывода ошибки fastLoginError:
Скрипт js, обрабатывающий событие отправки формы (нужен подключенный jquery):
— я еще подключил плагин jgrowl для отправления алертов. В его же вызове group: «m-Error» — класс для всплывающего бокса (красный, с ошибкой).
Если jgrowl не нужен — то вместо него вставляем в поле для ошибок желаемый ответ. Пример:
#ajaxAuth .ajaxLoad — в моем примере форма с индикатором загрузки, которая появляется при обработке аякс-запроса.
Fi1osof·Выполняете код:
Так как у вас документов много, советую сначала прогнать только корневые документы (добавить в запрос $q->where(array('parent' => 0));), а потом по каждому разделу в отдельности, указывая соответствующий parent.