Как настроить панель администратора в Keystone JS? (Или: как работают пользовательские страницы администрирования в демонстрационном проекте/блоге Keystone JS?)

Мы хотим использовать KeystoneJS в большом проекте и хотим иметь возможность настраивать панель администратора. Хороший пример того, как это сделать, есть здесь, и Я просматривал этот PR для проекта. Хотя пример выглядит так, как будто он у нас работает, я не понимаю его логики, то есть того, что нам нужно реализовать, чтобы он работал, каковы возможности и ограничения.

Это тот случай, когда вы используете приложение Keystone NextJS (что хорошо для нас), если вы добавите папку /admin/pages, приложение Keystone будет искать там и использовать эти пользовательские страницы администрирования вместо обычных? Я предполагаю, что у нас есть полный доступ к остальной части приложения, контроллерам, БД с этих страниц....

Я также заметил, что JedWatson отмечает в https://github.com/keystonejs/keystone/pull/1019 что

Обратите внимание, что в нем отсутствует поддержка SSR, и я не приложил столько усилий к примерам, но в остальном (я думаю) он идентичен по функциональности.

Отсутствует ли поддержка SSR только для административной части, или добавление пользовательских страниц администрирования каким-то образом влияет на поддержку SSR в остальной части приложения? (SSR - причина, по которой мы используем следующую)

Спасибо за любую информацию.


person Cerulean    schedule 19.02.2020    source источник


Ответы (1)


Существует два API для пользовательских страниц, один из которых является параметром pages в конструкторе приложения admin-ui, а второй является частью API hooks в конструкторе трапецеидальных искажений.

  1. pages: этот устаревший и добавляет только пользовательские страницы, он не перезаписывает существующие страницы списка в admin-ui, а только скрывает их, если они не настроены должным образом. обычно отображается Dashboard, и там перечислены все списки.
  2. hooks: это новинка, и ожидается, что в нее будут добавлены дополнительные параметры настройки, к сожалению, мои PR устарели, и они не являются той спецификацией, которую основная команда Keystone хотела бы добавить. это также не удаляет страницы.

Пользовательский интерфейс администратора запускается как реагирующее приложение, созданное или загруженное с использованием конфигурации веб-пакета. именно поэтому нет поддержки ssr. несмотря на то, что в примере используется пользовательский каталог администратора, который не загружается компонентом nextjs, он загружается динамически с использованием сервера веб-пакетов, монтирующего приложение реакции admin-ui.

если вы действительно хотите иметь ssr, вы можете извлечь некоторые уроки из закрытых PR, которые давно использовались в качестве POC. но это было бы излишним, так как после этого у admin-ui есть еще много обновлений.

хуки/страницы имеют доступ к основному ограниченному набору доступа, есть некоторый доступ, основанный на контексте React, хуках провайдера и потребителя. Вы можете использовать хуки react-apollo, так как уже есть провайдер, завернутый в корень контекста реакции. вы также можете использовать хуки реагирующего маршрутизатора, они обновлены до последней версии. у него нет доступа к контексту или контроллеру на стороне сервера. (не уверен, что вы имели в виду под контроллером)

person Gautam Singh    schedule 19.02.2020
comment
Вы знаете, когда будет готова «крючковая» версия пользовательских страниц администратора? Мы думаем об использовании версии «pages» (по крайней мере, пока), так как она кажется стабильной. Но у нас возникли проблемы с расшифровкой того, что происходит в github.com/keystonejs/keystone/blob/master/demo-projects/blog/ То есть, почему некоторые children ссылаются на существующие списки с listKey: 'PostCategory', а другие (People в примере) с children: ['User']? Что именно нам нужно знать для создания страниц? - person Cerulean; 20.02.2020
comment
версия хуков готова, вы можете использовать ее сейчас. то, что вы упомянули, - это два разных способа поместить вещи в конфигурацию, если вы не хотите менять какую-либо метку списка, вы просто используете массив строк в дочерних элементах, когда вам нужно изменить метку, такую ​​​​как Категория, вместо имени списка PostCategory , вы используете альтернативный способ., - person Gautam Singh; 20.02.2020
comment
Где документация для хуков версии пользовательской страницы администратора? Я вижу документы для крючков жизненного цикла, но это что-то другое... - person Cerulean; 21.02.2020
comment
плохая документация, это было в PR здесь - github.com/keystonejs/keystone/pull/1927 - person Gautam Singh; 21.02.2020
comment
Я просмотрел присланный вами PR, но в нем говорится, что это создает основу для ловушек администратора и пользовательских действий. На данный момент он не устанавливает никаких хуков, за исключением преобразования текущего механизма пользовательских страниц в использование этого, сохраняя при этом совместимость со старым API. -- Действительно ли хуки что-нибудь делают в данный момент? - person Cerulean; 24.02.2020
comment
ничего особенного, у меня есть два PR, если они решат, что крючки для спецификаций будут действительно полезны. github.com/keystonejs/keystone/pull/2155 и github.com/keystonejs/keystone/pull/2156 очень медленно, когда он концентрируется, чтобы указать что-то новое, а не по инициативе основной команды. - person Gautam Singh; 25.02.2020