UNPKG

scrivito

Version:

Scrivito is a professional, yet easy to use SaaS Enterprise Content Management Service, built for digital agencies and medium to large businesses. It is completely maintenance-free, cost-effective, and has unprecedented performance and security.

49 lines (40 loc) 1.46 kB
import { basicUrlForObj } from 'scrivito_sdk/app_support/basic_url_for'; import { ArgumentError, QueryParameters, parameterizeDataClass, } from 'scrivito_sdk/common'; import { DataItem } from 'scrivito_sdk/data_integration/data_class'; import { BasicObj, getDetailsPageForDataParam } from 'scrivito_sdk/models'; export function getDetailsPageUrl( dataItem: DataItem, siteId: string | null, ): string | null { const detailsPageAndQuery = getDetailsPageAndQuery(dataItem, siteId); if (!detailsPageAndQuery) return null; const { detailsPage, queryString } = detailsPageAndQuery; return basicUrlForObj(detailsPage, { query: queryString }); } interface DetailsPageAndQuery { detailsPage: BasicObj; queryParameters: QueryParameters; queryString: string; } export function getDetailsPageAndQuery( dataItem: DataItem, siteId: string | null, ): DetailsPageAndQuery | null { const dataClassName = dataItem.dataClassName(); if (!dataClassName) { throw new ArgumentError( 'getDetailsPageUrl is not supported for anonymous data classes', ); } const detailsPage = getDetailsPageForDataParam(dataClassName, siteId); if (!detailsPage) return null; const paramName = parameterizeDataClass(dataClassName); const paramValue = dataItem.id(); const queryParameters = { [paramName]: paramValue }; const queryString = [paramName, paramValue].join('='); return { detailsPage, queryParameters, queryString }; }