![](https://habrastorage.org/getpro/habr/post_images/e2b/4e9/736/e2b4e973655f54e534eb7a608eccb70a.jpg)
Хочу представить вам своё iOS приложение, которое управляет сайтом на MODX Revolution.
Кратко, что умеет:
- Работа с ресурсами: создание, редактирование, удаление
- Работа с элементами: шаблоны, чанки, ТВ, плагины и их категории
- Работа с файлами через источники медиа: создание, редактирование, удаление.
- Просмотр журнала событий системы
- Просмотр и очистка журнала ошибок
- Очистка кэша сайта
- Русский и английский интерфейс
- Auto-layout, вертикальный и горизонтальный режим работы
- Никакие данные не собираются и никуда на сторону не отправляются, вообще.
Для нетерпеливых сразу ссылка на AppStorе, а кто хочет подробностей и картинок прошу под кат.
Принцип работы
![](https://habrastorage.org/getpro/habr/post_images/c0f/a64/471/c0fa6447184788c227f1c0b1a1b7660b.jpg)
Для работы необходимо установить компонент mxManager из официального репозитория.
Компонент принимает запросы внутри админки, как системный плагин на событие OnManagerPageInit. Где у вас находится manager, вы указываете сами, в настройках подключения.
Конечно, вы можете использовать https и Basic Authentication веб-сервера. Более того, я от всей души рекомендую вам их использовать!
Все запросы отправляются с указанием параметров mx_action и version методом POST — в лог веб-сервера никаких команд и паролей не попадает. Плагин срабатывает только если видит mx_action в $_REQUEST.
Исходный код серверной части открыт, вы можете изучить его на предмет потенциальных уязвимостей. Компонент везде использует систему безопасности самого MODX и проверку прав доступа. Вывод доступных пунктов меню приложения также зависит от них.
Работа с ресурсами
![](https://habrastorage.org/getpro/habr/post_images/119/3f9/747/1193f97470df8ff8fdafa332735a3f5c.jpg)
![](https://habrastorage.org/getpro/habr/post_images/111/fb5/4ab/111fb54ab7cea6fca6619277ce2e51b7.jpg)
![](https://habrastorage.org/getpro/habr/post_images/686/29f/917/68629f9172b901d59c314522b6b2d03c.jpg)
![](https://habrastorage.org/getpro/habr/post_images/eaa/19e/cfe/eaa19ecfe934b8abda9f80085837c3c0.jpg)
![](https://habrastorage.org/getpro/habr/post_images/641/731/d14/641731d14e6cf1dcfe4666e45dff5020.jpg)
Как видите, поддерживаются все основные параметры ресурсов MODX. Можно переключать тип документов, назначать разные шаблоны, редактировать содержимое и другие поля. Также поддерживаются все основные типы ТВ параметров, включая выбор ресурсов.
Чего нет, но планирую добавить:
- Rich text редактор для контента
- Поддержка дополнительных полей дополнений. Для начала, Tickets и miniShop2.
Работа с элементами
![](https://habrastorage.org/getpro/habr/post_images/d99/f20/b3e/d99f20b3ece1ca074c0d3823193006a5.jpg)
![](https://habrastorage.org/getpro/habr/post_images/194/94d/dee/19494ddee374c35b8531bc580450dc55.jpg)
![](https://habrastorage.org/getpro/habr/post_images/afe/9ff/3bd/afe9ff3bd198ced8b71855bd05808ebf.jpg)
![](https://habrastorage.org/getpro/habr/post_images/29f/7ce/47f/29f7ce47fcb4ec5c321a38967b051e2e.jpg)
![](https://habrastorage.org/getpro/habr/post_images/9b3/28e/6b7/9b328e6b7ca177dbdff74deb738909aa.jpg)
Почти в полном объёме поддерживаются все основные функции элементов. Если это шаблон, то у него будет пункт назначения системных событий. Если это ТВ параметр — то выбор шаблонов, типа ввода и вывода.
По техническим причинам я не могу реализовать работу с необычными ТВ параметрами, потому что их внешний вид в админке MODX программируется на php + html и javascript, но вы всё равно можете использовать такие типы с показом их «сырого» кода.
Также нет поддержки статичности элементов, и не думаю, что её стоит добавлять — в админке то редко кто этим пользуется.
Работа с файлами
![](https://habrastorage.org/getpro/habr/post_images/58e/2c6/912/58e2c69124b93e867f1e46fb56b2086d.jpg)
![](https://habrastorage.org/getpro/habr/post_images/375/1c8/a56/3751c8a56ad41bc48bbfd59f2e8caab9.jpg)
![](https://habrastorage.org/getpro/habr/post_images/6d0/365/086/6d036508681750bc06dacde4fbb2ded9.jpg)
![](https://habrastorage.org/getpro/habr/post_images/c26/c79/5c7/c26c795c7d989a55b443091cc950a602.jpg)
![](https://habrastorage.org/getpro/habr/post_images/67d/857/47a/67d85747a07cb09acda7b085fcf2ac23.jpg)
Вы можете создавать, переименовывать и удалять директории и файлы. Если файл текстовый — то можно его и редактировать, есть простенькая подсветка кода, которая отключается на файлах свыше 50Кб.
Картинки показываются, у неизвестных типов файлов поле content просто пустое. Содержимое файлов, которые весят более 1 мегабайта, не загружается — но вы можете их переименовывать и удалять.
Чего нет, но планирую добавить
- Защиту системных файлов и директорий от удаления и переименования. Сейчас, также как и через родную админку MODX, можно поломать сайт одним неловким движением в директории core.
- Загрузку файлов из медиатеки iOS устройства
Прочее
Еще есть просмотр журнала событий, работа с логом ошибок и очистка системного кэша. Как и все остальные разделы, эти выводятся только если вам разрешен к ним доступ в системе прав MODX.
![](https://habrastorage.org/getpro/habr/post_images/7f3/8de/679/7f38de679b38f97ce9653059c0851fe2.jpg)
![](https://habrastorage.org/getpro/habr/post_images/be3/a10/60b/be3a1060b0f92f1da97e11bc58fb1eb7.jpg)
![](https://habrastorage.org/getpro/habr/post_images/713/7b2/2ad/7137b22ad7bb4ef9889d0e767a4ff5e7.jpg)
![](https://habrastorage.org/getpro/habr/post_images/a89/8fd/b41/a898fdb417c8fdf842e7775d681788e5.jpg)
![](https://habrastorage.org/getpro/habr/post_images/ce2/8f0/cf0/ce28f0cf0bc97d1e35464fbfa5bc51f7.jpg)
Здесь я планирую добавить только поиск по журналу событий.
Общие возможности
Во всех гридах, где это возможно, используется ленивая загрузка при прокрутке и меню «свайпом влево».
![](https://habrastorage.org/getpro/habr/post_images/4f7/d05/13e/4f7d0513e70edb66c1b71fb4f10d9c13.jpg)
Через свайп доступно редактирование настроек подключения к сайтам, действия с ресурсами, элементами и файлами.
Трафик, передаваемый на сайт и обратно, я старался минимизировать. По отзывам пользователей, приложение «летает», по сравнению с обычной админкой.
Для передачи данных используется JSON, когда дело доходит до бинарных файлов — они кодируются base64.
Заключение
К выпуску этого приложения я шел полтора года. 4 месяца чистой работы, остальное время на изучение Objective-C, потом Swift, потом правил работы AppStore и прохождения модерации.
Само приложение бесплатное, но содержит одну платную покупку — разблокировка работы с несколькими сайтами одновременно за 599 рублей. Покупается только один раз на все устройства.
При этом, количество редактирований настроек одного сайта никак не ограничено. Вы можете менять адрес подключения, логин и пароль сколько угодно раз.
На данный момент я слежу за отзывами и планирую новый функционал. В первую очередь это будет работа с системными настройками сайта и пользователями. Затем редактор контента и поддержка некоторых дополнений.
На данный момент это приложение — единственное, что находится по запросу «modx» в AppStore.
![](https://habrastorage.org/getpro/habr/post_images/1f4/0c8/485/1f40c8485ba3bf20d6c00c28e99fbb02.jpg)
Разрешение на использование логотипа и торговой марки MODX получено от Ryan Thrash — главы MODX, LLC.