From f9cc9b504c07e0a27bf6ebf372f8319d2f7972bb Mon Sep 17 00:00:00 2001 From: Aurelsicoko Date: Thu, 7 Dec 2017 19:12:20 +0100 Subject: [PATCH] Delay admin load and handle relation between plugin and main models --- packages/strapi-admin/admin/src/app.js | 20 +++++++++---------- .../admin/src/config/plugins.json | 16 --------------- .../admin/src/containers/App/sagas.js | 7 +++---- .../admin/src/utils/schema.js | 12 ++++++++--- 4 files changed, 21 insertions(+), 34 deletions(-) diff --git a/packages/strapi-admin/admin/src/app.js b/packages/strapi-admin/admin/src/app.js index 494f33eea6..8587371961 100755 --- a/packages/strapi-admin/admin/src/app.js +++ b/packages/strapi-admin/admin/src/app.js @@ -43,9 +43,6 @@ import { translationMessages, languages } from './i18n'; import { findIndex } from 'lodash'; /* eslint-enable */ -// Retrieve plugins from config. -let appPlugins = plugins; - // Create redux store with history const initialState = {}; const history = createHistory({ @@ -95,7 +92,9 @@ if (window.location.port !== '4000') { return response.json(); }) .then(plugins => { - appPlugins = plugins || []; + if (findIndex(plugins, ['id', 'users-permissions']) === -1) { + store.dispatch(setHasUserPlugin()); + } (plugins || []).forEach(plugin => { const script = document.createElement('script'); @@ -125,15 +124,13 @@ if (window.location.port !== '4000') { .catch(err => { console.log(err); }); +} else if (findIndex(plugins, ['id', 'users-permissions']) === -1) { + store.dispatch(setHasUserPlugin()); } // const isPluginAllowedToRegister = (plugin) => true; const isPluginAllowedToRegister = (plugin) => plugin.id === 'users-permissions' || plugin.id === 'email' || auth.getToken(); -/** - * Public Strapi object exposed to the `window` object - */ - /** * Register a plugin * @@ -178,9 +175,10 @@ const displayNotification = (message, status) => { store.dispatch(showNotification(message, status)); }; -if (findIndex(appPlugins, ['id', 'users-permissions']) === -1) { - store.dispatch(setHasUserPlugin()); -} + +/** + * Public Strapi object exposed to the `window` object + */ window.strapi = Object.assign(window.strapi || {}, { remoteURL: devFrontURL || remoteURL, diff --git a/packages/strapi-admin/admin/src/config/plugins.json b/packages/strapi-admin/admin/src/config/plugins.json index a96e269b84..f666913628 100644 --- a/packages/strapi-admin/admin/src/config/plugins.json +++ b/packages/strapi-admin/admin/src/config/plugins.json @@ -15,14 +15,6 @@ "test": "http://localhost:1337/admin/content-type-builder/main.js" } }, - { - "id": "email", - "source": { - "development": "http://localhost:1337/admin/email/main.js", - "production": "http://localhost:1337/admin/email/main.js", - "test": "http://localhost:1337/admin/email/main.js" - } - }, { "id": "settings-manager", "source": { @@ -30,13 +22,5 @@ "production": "http://localhost:1337/admin/settings-manager/main.js", "test": "http://localhost:1337/admin/settings-manager/main.js" } - }, - { - "id": "users-permissions", - "source": { - "development": "http://localhost:1337/admin/users-permissions/main.js", - "production": "http://localhost:1337/admin/users-permissions/main.js", - "test": "http://localhost:1337/admin/users-permissions/main.js" - } } ] \ No newline at end of file diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/App/sagas.js b/packages/strapi-plugin-content-manager/admin/src/containers/App/sagas.js index a51f54e0fe..8d64a258aa 100755 --- a/packages/strapi-plugin-content-manager/admin/src/containers/App/sagas.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/App/sagas.js @@ -42,10 +42,9 @@ export const generateMenu = function () { export function* getModels() { try { - const response = yield call(request, - `${strapi.backendURL}/content-manager/models`, { - method: 'GET', - }); + const response = yield call(request, `/content-manager/models`, { + method: 'GET', + }); yield put(loadedModels(response)); } catch (err) { diff --git a/packages/strapi-plugin-content-manager/admin/src/utils/schema.js b/packages/strapi-plugin-content-manager/admin/src/utils/schema.js index b6f84d3454..c8ced1b163 100755 --- a/packages/strapi-plugin-content-manager/admin/src/utils/schema.js +++ b/packages/strapi-plugin-content-manager/admin/src/utils/schema.js @@ -36,12 +36,18 @@ const generateSchema = (responses) => { if (model.associations) { // Model relations schemaModel.relations = model.associations.reduce((acc, current) => { + const displayedAttribute = current.plugin ? + get(responses.plugins, [current.plugin, 'models', current.model || current.collection, 'info', 'mainField']) || + findKey(get(responses.plugins, [current.plugin, 'models', current.model || current.collection, 'attributes']), { type : 'string'}) || + 'id' : + get(responses.models, [current.model || current.collection, 'info', 'mainField']) || + findKey(get(responses.models, [current.model || current.collection, 'attributes']), { type : 'string'}) || + 'id'; + acc[current.alias] = { ...current, description: '', - displayedAttribute: get(models[current.model || current.collection], 'info.mainField') || - findKey(models[current.model || current.collection].attributes, { type : 'string'}) || - 'id', + displayedAttribute, }; return acc;