Jump to main content Jump to doc navigation

Что такое MODx.Console?

MODx.Console - это специальный виджет Ext, созданный для работы в качестве консоли вывода в виде терминала для процессоров, которые должны возвращать более подробную информацию. Его можно найти в Управлении пакетами, очистке кэша или в других областях MODX:

Как это работает

Консоль использует два параметра для работы:

  • register - Реестр, из которого извлекается
  • topic - Тема в реестре для чтения

Прежде всего, консоль запускает панель опроса, которая запрашивает реестр с этими двумя переменными. Она будет продолжать опрашивать реестр до тех пор, пока для объекта JS Console не будет запущено событие завершения или отправлено сообщение «COMPLETED». Как только это произойдет, консоль прекратит опрашивать реестр, и ее кнопка «ОК» будет включена. Пользователь может затем закрыть консоль или загрузить вывод в файл. Как только пользователь нажмет кнопку «ОК», на консоли будет запущено событие «shutdown».

Использование

Консоль может быть легко подключена практически к любому процессору и пользовательскому приложению JS в MODX. Просто создайте экземпляр нового объекта консоли:

var topic = '/mytopic/';
var register = 'mgr';
var console = MODx.load({
   xtype: 'modx-console'
   ,register: register
   ,topic: topic
   ,show_filename: 0
   ,listeners: {
     'shutdown': {fn:function() {
         /* выполнить код здесь, когда вы закроете консоль */
     },scope:this}
   }
});
console.show(Ext.getBody());

Обратите внимание, что вы запускаете консоль, а затем загружаете нужную тему (не забудьте включить начальную и конечную косую черту).

Когда вы это загрузите, тогда сможете отправить запрос на ваш процессор:

MODx.Ajax.request({
    url: URL_TO_MY_CONNECTOR
    ,params: {
        action: MY_ACTION
        ,register: register
        ,topic: topic
    }
    ,listeners: {
        'success':{fn:function() {
            console.fireEvent('complete');
        },scope:this}
    }
});

Вам нужно будет указать URL-адрес вашего коннектора, а также действие, которое вы хотите загрузить (процессор). В вашем процессоре вы можете вывести данные на консоль, используя $modx->log :

$modx->log(modX::LOG_LEVEL_INFO,'Информационное сообщение нормального цвета.');
$modx->log(modX::LOG_LEVEL_ERROR,'Ошибка в красном цвете!');
$modx->log(modX::LOG_LEVEL_WARN,'Предупреждение в голубом цвете!');

Как только вы закончите с вашим процессором, вы должны сделать две вещи. Во-первых, запустите сообщение лога просто с текстом "COMPLETED" в теле:

$modx->log(modX::LOG_LEVEL_INFO,'COMPLETED');

Это говорит консоли прекратить опрос и включает кнопку «ОК», которая закрывает консоль.

Для MODX Revolution 2.1.0-rc2 и более поздних версий вам не нужно отправлять сообщение «COMPLETED» в реестр - просто сработает событие «complete» для объекта консоли JS. Все предыдущие версии требуют сообщения COMPLETED.

После этого, когда пользователь нажимает кнопку «ОК», MODx.Console запускает событие «shutdown» (выключение). Вы можете запустить любой код, который вы хотите сделать в это время.

Modx.Ajax.request ожидает возврата значения ключа 'success' в json, поэтому вы должны вернуть 'success' в процессоре. Иначе событие успеха никогда не запустится.

Чтобы вернуть текст, html или что-либо, кроме json, можно использовать собственный Ext.Ajax.request

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • modmore
  • Jens Wittmann – Gestaltung & Entwicklung
  • Raffy
  • eydolan
  • Digital Penguin
  • Fabian Christen
  • Dannevang Digital
  • deJaya
  • Sepia River Studios
  • Following Sea
  • Anton Tarasov
  • Lefthandmedia
  • Nick Clark
  • Chris Fickling
  • Murray Wood
  • YJ
  • CrewMark
  • Richard

Budget

$305 per month—let's make that $500!

Learn more