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.
37 lines (29 loc) • 1.02 kB
text/typescript
import type { DataContext } from 'scrivito_sdk/data_integration/data_context';
import type { BasicObj } from 'scrivito_sdk/models';
import { schemaFromBasicObjOrWidget } from 'scrivito_sdk/realm';
export function basicObjToDataContext(obj: BasicObj): DataContext {
return {
_class: obj.objClass(),
_id: obj.id(),
...allCustomAttributesOfTypeString(obj),
};
}
interface StringAttributes {
[attributeName: string]: string;
}
export function allCustomAttributesOfTypeString(
obj: BasicObj
): StringAttributes | undefined {
const schema = schemaFromBasicObjOrWidget(obj);
if (!schema) return;
const attributes = schema.attributes();
const stringAttributes: StringAttributes = {};
Object.keys(attributes).forEach((attributeName) => {
const [attributeType] = attributes[attributeName];
if (attributeType === 'string') {
const attributeValue = obj.get(attributeName, 'string');
stringAttributes[attributeName] = attributeValue;
}
});
return stringAttributes;
}