Алексей Карташов
С нами с 04 февраля 2013; Место в рейтинге пользователей: #58Зачем нужен action.php в компонентах?
            Всем привет!
Напомните, пожалуйста, зачем нужен action.php для обработки ajax-запросов в компонентах?
Т.е. я понимаю, что некоторые компоненты врубают MODX_API_MODE, чтобы modx не запускал системный обработчик запросов (который будет проверять статус сайта, загружать необходимый ресурс, отдавать соответствующие ошибки и вот это вот всё), и можно было бы просто обработать запрос и отдать какой-то результат (закрыв сессию).
Но
        
        
        
    Напомните, пожалуйста, зачем нужен action.php для обработки ajax-запросов в компонентах?
Т.е. я понимаю, что некоторые компоненты врубают MODX_API_MODE, чтобы modx не запускал системный обработчик запросов (который будет проверять статус сайта, загружать необходимый ресурс, отдавать соответствующие ошибки и вот это вот всё), и можно было бы просто обработать запрос и отдать какой-то результат (закрыв сессию).
Но
[sql] Как добавить произвольную строку в выборку?
            Всем привет!
Пните в нужную сторону, пожалуйста. Простая вроде задачка, а решения что-то не видно.
Вот есть запрос, который выбирает, скажем, ресурсы и который собирается через newQuery. Есть несколько условий для выборки в WHERE, которые генерируются в зависимости от других условий.
Вопрос — как с учётом имеющихся в запросе условий добавить в выборку строку с произвольным id?
Проще объясню на примере:
        
        
        
    Пните в нужную сторону, пожалуйста. Простая вроде задачка, а решения что-то не видно.
Вот есть запрос, который выбирает, скажем, ресурсы и который собирается через newQuery. Есть несколько условий для выборки в WHERE, которые генерируются в зависимости от других условий.
Вопрос — как с учётом имеющихся в запросе условий добавить в выборку строку с произвольным id?
Проще объясню на примере:
Super MODx SEO-strict +ускоряем фронтенд
            Михаил задал вопрос про канонизацию урлов в MODx.
Писал ему ответ, но понял, что он слишком большой. Поэтому переписал в статью.
Поехали.
        
        
        
    Писал ему ответ, но понял, что он слишком большой. Поэтому переписал в статью.
Поехали.
Улучшения админ-меню. Раскрытие по клику и не только
            Проскочил тут вопрос про скорость раскрытия верхнего меню в админке.
И вспомнилось мне, как меня жутко бесит это hover-меню.
Сколько раз я матерился случайно нажимая на случайный пункт на внезапно раскрывшемся подменю.
Или когда оно внезапно закрывается в самый неподходящий момент, потому что курсор вышел на доли секунды на пару пикселей за его пределы и приходится заново елозить мышкой в поисках нужного пункта и ждать эти грёбанные анимации…
Короче, выбрал время и, собственно, встречайте:
        
        
        
    И вспомнилось мне, как меня жутко бесит это hover-меню.
Сколько раз я матерился случайно нажимая на случайный пункт на внезапно раскрывшемся подменю.
Или когда оно внезапно закрывается в самый неподходящий момент, потому что курсор вышел на доли секунды на пару пикселей за его пределы и приходится заново елозить мышкой в поисках нужного пункта и ждать эти грёбанные анимации…
Короче, выбрал время и, собственно, встречайте:
Возможно баг вывода tv-фильтров в mFilter2
            Сел тут посмотреть mSearch2/mFilter2, что к чему да почему и наткнулся на баг (возможно).        
        
        
        
    Залогинить юзера на фронте, если он залогинен в админке
            Всем привет!
Суть задачи описана в заголовке.
И, казалось бы, что может быть проще? В плагине пишем вот это:
Уж не знаю почему, но юзер не то чтобы на фронте не логинится, в добавок — убивается его mgr-сессия, т.е. из админки разлогинивает.
Знаю, что такой вопрос когда-то проскакивал, но найти его не смог. Помогите, пожалуйста. Может кто подобную задачу решал уже?
        
        
        
    Суть задачи описана в заголовке.
И, казалось бы, что может быть проще? В плагине пишем вот это:
switch ($modx->event->name) {
  сase 'OnHandleRequest':
    if ($modx->context->key == 'mgr') { return; }
    // если залогинен в 'mgr' и не залогинен в текущем контексте
    if ($modx->user->hasSessionContext('mgr') && !$modx->user->hasSessionContext($modx->context->key)) {
      // логиним юзера в текущем контексте
      $modx->user->addSessionContext($modx->context->key);
    }
   
    // die(var_dump($modx->user->hasSessionContext('mgr')).' '.var_dump($modx->user->hasSessionContext($modx->context->key)));
    break;
}Но чот не работат.Уж не знаю почему, но юзер не то чтобы на фронте не логинится, в добавок — убивается его mgr-сессия, т.е. из админки разлогинивает.
Знаю, что такой вопрос когда-то проскакивал, но найти его не смог. Помогите, пожалуйста. Может кто подобную задачу решал уже?
Наследуемость полей у расширяемых xPDO-классов
            Всем привет!
Смотрите, когда в своих компонентах мы наследуемся от, допустим, modResource, то в схеме мы пропишем следущее:
Теперь то, что хочу сделать я.
У меня есть пара десятков сущностей (и, соответственно, таблиц), у каждой из которых должен быть определённый набор полей, вроде «кем создан», «когда создан», «активно», «удалено» и т.д.
Так вот по аналогии с расширением класса modResource подумалось мне сделать вот так:
Так вот.
        
        
        
    Смотрите, когда в своих компонентах мы наследуемся от, допустим, modResource, то в схеме мы пропишем следущее:
<model package="myPackage" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" phpdoc-package="myPackage" phpdoc-subpackage="" version="1.1">
  <object class="myObject" extends="modResource">
  </object>
</model>И, собственно, всё — объект myObject унаследует все поля, их свойства и методы от класса modResource.Теперь то, что хочу сделать я.
У меня есть пара десятков сущностей (и, соответственно, таблиц), у каждой из которых должен быть определённый набор полей, вроде «кем создан», «когда создан», «активно», «удалено» и т.д.
Так вот по аналогии с расширением класса modResource подумалось мне сделать вот так:
<model package="myPackage" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" phpdoc-package="myPackage" phpdoc-subpackage="" version="1.1">
  <object class="myObjectTemplate" extends="xPDOSimpleObject">
    <field key="active"                  dbtype="tinyint" precision="1"    attributes="unsigned" phptype="integer"   null="false" default="0" />
    <field key="deleted"                 dbtype="tinyint" precision="1"    attributes="unsigned" phptype="integer"   null="false" default="0" />
    <field key="createdby"               dbtype="int"     precision="10"   attributes="unsigned" phptype="integer"   null="false" default="0" />
    <field key="createdon"               dbtype="int"     precision="20"   attributes="unsigned" phptype="timestamp" null="false" default="0" />
    <field key="deletedby"               dbtype="int"     precision="10"   attributes="unsigned" phptype="integer"   null="false" default="0" />
    <field key="deletedon"               dbtype="int"     precision="20"   attributes="unsigned" phptype="timestamp" null="false" default="0" />
    <!-- в действительности будет ещё десяток таких полей + индексы к ним -->
  </object>
  <object class="myObjectOne" table="my_object_one" extends="myObjectTemplate">
    <field key="my_object_one_field"     dbtype="int"     precision="10"   attributes="unsigned" phptype="integer"   null="false" default="0" />
  </object>
  
  <object class="myObjectTwo" table="my_object_two" extends="myObjectTemplate">
    <field key="my_object_two_field"     dbtype="int"     precision="10"   attributes="unsigned" phptype="integer"   null="false" default="0" />
  </object>
</model>Таким образом, имеем объект-«шаблон», у которого прописаны определённые поля и не прописана таблица. И остальные классы, которые расширяют этот класс-«шаблон» и добавляют в себя собственные столбцы (коряво выразился, знаю).Так вот.
На post запросах отваливается php5-fpm
            Всем привет!
Если обычно в вопросах, касаемых linux, у меня кривые руки и сам всё ломаю, то теперь я не при чём :-)
В общем, система debian 7.
Добавил dotdeb-репозитории и обновился:
Всё прошло нормально. Т.е. по сути обычный апдейт.
Но вот после этого
        
        
        
    Если обычно в вопросах, касаемых linux, у меня кривые руки и сам всё ломаю, то теперь я не при чём :-)
В общем, система debian 7.
Добавил dotdeb-репозитории и обновился:
sudo apt-get updateПочему-то не всё смогло скачаться (это вывод в консоли):{здесь список скачавшихся пакетов}
Err http://ppa.launchpad.net wheezy/main Sources
  404  Not Found
Err http://ppa.launchpad.net wheezy/main i386 Packages
  404  Not Found
{здесь список скачавшихся пакетов}
W: Failed to fetch http://ppa.launchpad.net/nginx/stable/ubuntu/dists/wheezy/main/source/Sources  404  Not Found
W: Failed to fetch http://ppa.launchpad.net/nginx/stable/ubuntu/dists/wheezy/main/binary-i386/Packages  404  Not Found
E: Some index files failed to download. They been ignored, or old ones used instead.Ну, думаю, ладно. Проапгрейдимся:sudo apt-get upgradeВсё прошло нормально. Т.е. по сути обычный апдейт.
Но вот после этого
nginx периодически отдаёт 404 на тяжёлых скриптах
            Всем привет!
В общем, nginx периодически отваливается на тяжёлых скриптах.
Т.е. есть у меня сниппет, который ресайзит одну (но большую) картинку. И раз-через-раз страница открывается с 404 ошибкой. При чём я бы понял, если бы дело было в таймаутах, но тут ведь как — nginx может через 2 секунды отдать 404, а может думать секунд 10 и потом спокойно открыть страничку с отресайзенной картинкой. Магия.
        
        
        
        
    В общем, nginx периодически отваливается на тяжёлых скриптах.
Т.е. есть у меня сниппет, который ресайзит одну (но большую) картинку. И раз-через-раз страница открывается с 404 ошибкой. При чём я бы понял, если бы дело было в таймаутах, но тут ведь как — nginx может через 2 секунды отдать 404, а может думать секунд 10 и потом спокойно открыть страничку с отресайзенной картинкой. Магия.
Актуализация данных в mysql-таблице. Много данных.
            Всем привет!
Ситуация такая.
Есть в базе таблица, скажем, с десятью тысячами строк. Их будет и 100 тысяч, и миллион, и гораздо больше.
И есть внешний источник этих данных, т.е. api стороннего сайта, откуда эти данные по крону вытягиваются.
Количество данных увеличивается постоянно. И с каждым разом с внешнего сайта нужно вытягивать всё больше и больше.
Задача — держать данные в таблице в актуальном состоянии, в соответствии с этим внешним источником.
Вопрос — как такое лучше провернуть?)
Какие я вижу варианты:
        
        
        
        
    Ситуация такая.
Есть в базе таблица, скажем, с десятью тысячами строк. Их будет и 100 тысяч, и миллион, и гораздо больше.
И есть внешний источник этих данных, т.е. api стороннего сайта, откуда эти данные по крону вытягиваются.
Количество данных увеличивается постоянно. И с каждым разом с внешнего сайта нужно вытягивать всё больше и больше.
Задача — держать данные в таблице в актуальном состоянии, в соответствии с этим внешним источником.
Вопрос — как такое лучше провернуть?)
Какие я вижу варианты: