Skip to content

Portal Detail Page ​

File Information ​

  • Path: pages/_workspace_id/dam/portals/_id.vue
  • Route: /:workspace_id/dam/portals/:id
  • Middleware: authCheck, check-workspace-access, checkWorkspace, check-if-suspended, can-access-dam-module, can-access-dam-settings
  • Layout: damLayout

Purpose ​

Configuration hub for a single brand portal. Tabs cover branding (logo, favicon, colors, URL/custom domain), user management, banners, and tiles. Uses asyncData for SSR-safe portal data fetch; white-label status is resolved server-side to avoid stale store state on hard refresh.

Key Features ​

  1. Portal Branding — edit via CollageSettings (brand name, description, URL slug, custom domain, primary color, logo, favicon via PortalLogoEditDialog / PortalFaviconEditDialog)
  2. User Management tab — wpAdminsTable listing portal users with roles; CollageUserDialog to invite/edit
  3. Banners tab — BannerItem list; AddEditBannerDialog to create/edit banners
  4. Tiles tab — TileItem list; AddEditTileDialog to create/edit tiles
  5. Delete flows — ConfirmationDialog for destructive actions (delete banner, delete tile)
  6. External link — header button opens the live portal URL in a new tab
  7. White-label — whiteLabelEnabled controls whether Collage branding is shown for this portal

asyncData ​

Fetches via GET digital-assets/instance/detail?workspace_id=&id= and resolves white-label status via POST get-branding. Returns instance, brand, brandOriginal (frozen for dirty-check), and whiteLabelEnabled.

Components Used ​

  • CollageSettings — branding form (~/components/dam/Settings/CollageSettings.vue)
  • wpAdminsTable — user table (~/components/dam/table/wpAdminsTable.vue)
  • BannerItem — banner row (~/components/dam/BannerItem/index.vue)
  • TileItem — tile row (~/components/dam/TileItem/index.vue)
  • AddEditBannerDialog (~/components/dam/Dialogs/Org-Settings/AddEditBannerDialog.vue)
  • AddEditTileDialog (~/components/dam/Dialogs/Org-Settings/AddEditTileDialog.vue)
  • ConfirmationDialog — delete confirm (~/components/theme/global/Dialog/ConfirmationDialog.vue)
  • CollageUserDialog — invite/edit user (~/components/dam/Dialogs/Org-Settings/CollageUserDialog.vue)

Data Properties ​

Key data shape (partial):

javascript
{
  instance: {},            // Raw portal object from API
  brand: {
    brand_name: '',
    description: '',
    brandUrl: '',          // Slug-based URL (when is_domain === 0)
    domainUrl: '',         // Custom domain (when is_domain === 1)
    logo: '',
    favicon: '',
    is_domain: 0 | 1,
    is_pointed: 0 | 1,
    cname: '',
    settings: {
      is_trading: false,
      is_recent_upload: false,
      is_public_portal: false,
    },
  },
  whiteLabelEnabled: false,
  banners: [],
  tiles: [],
  users: [],
}

API Endpoints ​

  • GET digital-assets/instance/detail?workspace_id=&id= — fetch portal detail
  • POST get-branding — resolve white-label status
  • PUT digital-assets/instance/update — save portal settings
  • GET digital-assets/instance/banner/all — fetch banners
  • GET digital-assets/instance/tile/all — fetch tiles
  • GET digital-assets/instance/user/all — fetch portal users