app installer hrefs + IIS /installers static
This commit is contained in:
@@ -12,6 +12,24 @@ export function withBase(path) {
|
||||
return BASE_URL + String(path).replace(/^\//, '')
|
||||
}
|
||||
|
||||
// Resolve a stored file/link path for use in an <a href>. Full URLs (http,
|
||||
// https, file:, mailto:, ...) and UNC / protocol-relative paths (\\server,
|
||||
// //host) open as-is. A path relative to the app (e.g. 'installers/x.exe' or
|
||||
// './installers/x.exe') is mounted under the base so it does NOT resolve
|
||||
// against the current route - '/shopdb/applications/6' + 'installers/x.exe'
|
||||
// wrongly became '/shopdb/applications/installers/x.exe'.
|
||||
export function fileHref(path) {
|
||||
if (!path) return null
|
||||
const trimmed = String(path).trim()
|
||||
if (!trimmed) return null
|
||||
if (/^[a-z][a-z0-9+.-]*:/i.test(trimmed)
|
||||
|| trimmed.startsWith('\\\\')
|
||||
|| trimmed.startsWith('//')) {
|
||||
return trimmed
|
||||
}
|
||||
return withBase('/' + trimmed.replace(/^(\.?\/)+/, ''))
|
||||
}
|
||||
|
||||
// Inverse of withBase: turn a browser pathname (which includes the mount
|
||||
// base, e.g. '/ops/computers') into a router path ('/computers'). Router
|
||||
// navigation already applies the base; feeding it an un-stripped pathname
|
||||
|
||||
Reference in New Issue
Block a user