Console-2.1.0-beta

В продолжение этой и этой тем, публикую свежую версию консоли с пулл-реквестами от Сергея Шлокова, за которые ему отдельное спасибо.

Сохранение/чтение в/из сниппета/файла перенесено. Плюс к этом сделал кодрефакторинг. Во-первых, теперь все более секурно, так как расширяет базовый процессор, в котором прописана проверка прав. Остальные процессоры расширяют его, так что без прав их вызвать нельзя. Кстати, вот в этом есть отдельное замечание к MODX-процессорам. В modObjectProcessor прописана проверка прав на основе переменной public $permission = '';. А вот сам базовый modProcessor по умолчанию возвращает true в проверке прав. То есть нельзя просто так в процессоры, расширяющие напрямую modProcessor, прописать $permission = 'some_permission'; и уповать на это. Потому и вынесена эта проверка в базовый console-процессор, который расширяют остальные процессоры.

Во-вторых, я тут подумал, что хорошо бы сразу при установке иметь некий набор готовых скриптов. К примеру, лично я часто пользуюсь скриптом вызова процессоров. Для этого я создал отдельную папку global, в которую можно добавлять скрипты, устанавливаемые вместе с компонентом. Для этого же и переписал код так, чтобы он умел читать файлы во вложенных папках и сохранять файлы не только в корневую папку приложения.



Здесь следует отметить, что не стоит туда сохранять свои файлы, они просто так не попадут оттуда в ядро, так что свои файлы можно сохранять хоть в корень, хоть по желаемым новым папкам. А вот если у вас будут скрипты, которые вы считаете, могут пригодиться многим — шлите пулл-реквесты. Свои скрипты лучше размещать примерно так: files/global/your_site/script.

А еще прозвучала идея добавить передачу параметров в вызываемый сниппет. Чессказать не знаю. Мы сниппетами давно не пользуемся, потому в ядро не вижу смысла это пулять. Но желающие могут написать готовый скрипт типа такого:
$params = 'params1=`sdfsd`¶ms2=`ergergre`';
if($params && !is_array($params)){
    $modx->getParser();
    $params= $modx->parser->parseProperties($params);
}
print $modx->runSnippet($snippetName, $params);
Fi1osof
05 сентября 2015, 16:56
modx.pro
2 301
+10

Комментарии: 4

Сергей Шлоков
06 сентября 2015, 08:35
0
По-моему, неплохо получилось.
Еще предложу небольшое косметическое изменение — перенести html-блок «Консоль для выполнения php-кода» над редактором в заголовок вместо Console. А сам редактор увеличить.
    Fi1osof
    06 сентября 2015, 13:36
    0
    Ну, шлите пуллреквесты, там посмотрим.
    Сергей Шлоков
    06 сентября 2015, 09:01
    0
    В modObjectProcessor прописана проверка прав на основе переменной public $permission = '';. А вот сам базовый modProcessor по умолчанию возвращает true в проверке прав. То есть нельзя просто так в процессоры, расширяющие напрямую modProcessor, прописать $permission = 'some_permission'; и уповать на это.
    Поэтому я всегда расширяю modObjectProcessor. Он и права проверяет и лексиконы загружает.
      Fi1osof
      06 сентября 2015, 13:37
      0
      Как вариант, да. Но вообще, думаю надо в ядро слать пуллреквест с переносом прав в сам modProcessor. Это же очевидно, что проверка должна быть изначально.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4