@mikezimm/fps-core-v7
Version:
Library of reusable core interfaces, types and constants migrated from fps-library-v2
72 lines (71 loc) • 3.91 kB
JavaScript
/**
* CodeAnalizerComment: Updated 1 imports on 2024-09-21 23:07:24
* Update:: import { WebPartContextCopy_15_2 } to '@mikezimm/fps-core-v7/lib/types/@msft/1.15.2/WebPartContext;'
*/
import { makeid } from "./guids";
export const HandleBarReplacements = {
Pages: ['{{PageId}}'],
Lists: ['{{ListTitle}}', '{{ListId}}', '{{ListUrl}}'],
Users: ['{{UserName}}', '{{UserLogin}}', '{{UserEmail}}'],
Webs: ['{{WebTitle}}', '{{WebUrl}}', '{{SiteId}}'],
Sites: ['{{SiteTitle}}', '{{SiteUrl}}', '{{SiteId}}'],
};
/**
* Replaces HandleBar style strings with known replacements from context
*
* Used first in PageInfo converting web part prop input in relatedItems heading, web, ListTitle and restFilter
*
* @param str
* @param context
* @returns
*/
export function replaceHandleBars(str, context) {
if (!str) {
return '';
}
else {
if (str.indexOf('{{') === -1 || str.indexOf('}}') === -1) {
return str;
}
else {
let newStr = str.replace(/{{PageId}}/gi, `${context.pageContext.listItem ? context.pageContext.listItem.id.toFixed() : '{{PageId}}'}`);
if (str.indexOf('{{List') > -1) {
newStr = newStr.replace(/{{ListTitle}}/gi, `${context.pageContext.list ? context.pageContext.list.title : '{{ListTitle}}'}`);
newStr = newStr.replace(/{{ListId}}/gi, `${context.pageContext.list ? context.pageContext.list.id : '{{ListId}}'}`);
newStr = newStr.replace(/{{ListUrl}}/gi, `${context.pageContext.list ? context.pageContext.list.serverRelativeUrl : '{{ListUrl}}'}`);
}
if (str.indexOf('{{User') > -1) {
newStr = newStr.replace(/{{UserName}}/gi, `${context.pageContext.user.displayName}`);
// 2025-03-18: Added for consistency with Network Builder replaceHasFromForm
newStr = newStr.replace(/{{UserTitle}}/gi, `${context.pageContext.user.displayName}`);
newStr = newStr.replace(/{{UserLogin}}/gi, `${context.pageContext.user.loginName}`);
newStr = newStr.replace(/{{UserEmail}}/gi, `${context.pageContext.user.email}`);
newStr = newStr.replace(/{{UserId}}/gi, `${context.pageContext.legacyPageContext.userId}`);
}
if (str.indexOf('{{Web') > -1) {
newStr = newStr.replace(/{{WebTitle}}/gi, `${context.pageContext.web.title}`);
newStr = newStr.replace(/{{WebUrl}}/gi, `${context.pageContext.web.serverRelativeUrl}`);
newStr = newStr.replace(/{{WebId}}/gi, `${context.pageContext.web.id}`);
}
if (str.indexOf('{{Site') > -1) {
newStr = newStr.replace(/{{SiteTitle}}/gi, `${context.pageContext.web.title}`);
newStr = newStr.replace(/{{SiteUrl}}/gi, `${context.pageContext.web.serverRelativeUrl}`);
newStr = newStr.replace(/{{SiteId}}/gi, `${context.pageContext.web.id}`);
}
if (str.indexOf('{{DepartmentId') > -1) {
newStr = newStr.replace(/{{DepartmentId}}/gi, `${context.pageContext.legacyPageContext.departmentId}`);
}
if (str.indexOf('{{makeid') > -1) {
newStr = newStr.replace(/{{makeid}}/gi, makeid(5));
}
let now = new Date();
newStr = newStr.replace(/{{Now}}/gi, `${now.toLocaleString()}`);
newStr = newStr.replace(/{{Today}}/gi, `${now.toLocaleDateString()}`);
// 2025-03-18: Added for consistency with Network Builder replaceHasFromForm
newStr = newStr.replace(/{{UTCTime}}/gi, `${now.toUTCString()}`);
newStr = newStr.replace(/{{IsoTime}}/gi, `${now.toISOString()}`);
return newStr;
}
}
}
//# sourceMappingURL=handleBarsContext.js.map