diff --git a/src/common/utilities/GeneralHelper.ts b/src/common/utilities/GeneralHelper.ts index e88c0a8b3..272a055a5 100644 --- a/src/common/utilities/GeneralHelper.ts +++ b/src/common/utilities/GeneralHelper.ts @@ -325,3 +325,29 @@ export class GeneralHelper { return o[c]; } } + +export function urlCombine(urlStart: string, urlFinish: string, escapeFinish: boolean = true): string { + let url = urlStart; + if (url.lastIndexOf('/') === url.length - 1) { + url = url.slice(0, -1); + } + if (urlFinish) { + if (escapeFinish) { + const escapeFunc = (str: string) => { + return encodeURIComponent(unescape(str)) + .replace(/[!'()*]/g, escape) + .replace(/\./g, '%2E'); + }; + + urlFinish = urlFinish.split('/').map(escapeFunc).join('/'); + } + + if (urlFinish.indexOf('/') !== 0) { + urlFinish = `/${urlFinish}`; + } + + url += urlFinish; + } + + return url; +} diff --git a/src/controls/filePicker/SiteFilePickerTab/SiteFilePickerTab.tsx b/src/controls/filePicker/SiteFilePickerTab/SiteFilePickerTab.tsx index 194320385..e0ac3eeeb 100644 --- a/src/controls/filePicker/SiteFilePickerTab/SiteFilePickerTab.tsx +++ b/src/controls/filePicker/SiteFilePickerTab/SiteFilePickerTab.tsx @@ -12,6 +12,7 @@ import { IFilePickerResult, FilePickerBreadcrumbItem } from '../FilePicker.types import styles from './SiteFilePickerTab.module.scss'; import * as strings from 'ControlStrings'; +import { urlCombine } from '../../../common/utilities'; export default class SiteFilePickerTab extends React.Component { constructor(props: ISiteFilePickerTabProps) { @@ -28,7 +29,7 @@ export default class SiteFilePickerTab extends React.Component