Add a way to disable external links.
This commit is contained in:
parent
852fc955bd
commit
98e989116c
@ -300,6 +300,7 @@ class LinkAnnotationElement extends AnnotationElement {
|
|||||||
target: (data.newWindow ?
|
target: (data.newWindow ?
|
||||||
LinkTarget.BLANK : linkService.externalLinkTarget),
|
LinkTarget.BLANK : linkService.externalLinkTarget),
|
||||||
rel: linkService.externalLinkRel,
|
rel: linkService.externalLinkRel,
|
||||||
|
enabled: linkService.externalLinkEnabled,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!data.url) {
|
if (!data.url) {
|
||||||
|
@ -344,6 +344,8 @@ const LinkTargetStringMap = [
|
|||||||
* The default value is `LinkTarget.NONE`.
|
* The default value is `LinkTarget.NONE`.
|
||||||
* @property {string} rel - (optional) The link relationship.
|
* @property {string} rel - (optional) The link relationship.
|
||||||
* The default value is `DEFAULT_LINK_REL`.
|
* The default value is `DEFAULT_LINK_REL`.
|
||||||
|
* @property {boolean} enabled - (optional) Whether the link should be enabled.
|
||||||
|
* The default value is true.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -351,8 +353,17 @@ const LinkTargetStringMap = [
|
|||||||
* @param {HTMLLinkElement} link - The link element.
|
* @param {HTMLLinkElement} link - The link element.
|
||||||
* @param {ExternalLinkParameters} params
|
* @param {ExternalLinkParameters} params
|
||||||
*/
|
*/
|
||||||
function addLinkAttributes(link, { url, target, rel, } = {}) {
|
function addLinkAttributes(link, { url, target, rel, enabled = true, } = {}) {
|
||||||
link.href = link.title = (url ? removeNullCharacters(url) : '');
|
const urlNullRemoved = (url ? removeNullCharacters(url) : '');
|
||||||
|
if (enabled) {
|
||||||
|
link.href = link.title = urlNullRemoved;
|
||||||
|
} else {
|
||||||
|
link.href = '';
|
||||||
|
link.title = `Disabled: ${urlNullRemoved}`;
|
||||||
|
link.onclick = () => {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
if (url) {
|
if (url) {
|
||||||
const LinkTargetValues = Object.values(LinkTarget);
|
const LinkTargetValues = Object.values(LinkTarget);
|
||||||
|
@ -668,6 +668,7 @@ let PDFViewerApplication = {
|
|||||||
this.pdfLoadingTask = loadingTask;
|
this.pdfLoadingTask = loadingTask;
|
||||||
|
|
||||||
loadingTask.onPassword = (updateCallback, reason) => {
|
loadingTask.onPassword = (updateCallback, reason) => {
|
||||||
|
this.pdfLinkService.externalLinkEnabled = false;
|
||||||
this.passwordPrompt.setUpdateCallback(updateCallback, reason);
|
this.passwordPrompt.setUpdateCallback(updateCallback, reason);
|
||||||
this.passwordPrompt.open();
|
this.passwordPrompt.open();
|
||||||
};
|
};
|
||||||
|
@ -42,6 +42,16 @@ class IPDFLinkService {
|
|||||||
*/
|
*/
|
||||||
set rotation(value) {}
|
set rotation(value) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns {boolean}
|
||||||
|
*/
|
||||||
|
get externalLinkEnabled() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {boolean} value
|
||||||
|
*/
|
||||||
|
set externalLinkEnabled(value) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param dest - The PDF destination object.
|
* @param dest - The PDF destination object.
|
||||||
*/
|
*/
|
||||||
|
@ -35,10 +35,11 @@ class PDFLinkService {
|
|||||||
* @param {PDFLinkServiceOptions} options
|
* @param {PDFLinkServiceOptions} options
|
||||||
*/
|
*/
|
||||||
constructor({ eventBus, externalLinkTarget = null,
|
constructor({ eventBus, externalLinkTarget = null,
|
||||||
externalLinkRel = null, } = {}) {
|
externalLinkRel = null, externalLinkEnabled = true, } = {}) {
|
||||||
this.eventBus = eventBus || getGlobalEventBus();
|
this.eventBus = eventBus || getGlobalEventBus();
|
||||||
this.externalLinkTarget = externalLinkTarget;
|
this.externalLinkTarget = externalLinkTarget;
|
||||||
this.externalLinkRel = externalLinkRel;
|
this.externalLinkRel = externalLinkRel;
|
||||||
|
this.externalLinkEnabled = externalLinkEnabled;
|
||||||
|
|
||||||
this.baseUrl = null;
|
this.baseUrl = null;
|
||||||
this.pdfDocument = null;
|
this.pdfDocument = null;
|
||||||
@ -423,6 +424,7 @@ class SimpleLinkService {
|
|||||||
constructor() {
|
constructor() {
|
||||||
this.externalLinkTarget = null;
|
this.externalLinkTarget = null;
|
||||||
this.externalLinkRel = null;
|
this.externalLinkRel = null;
|
||||||
|
this.externalLinkEnabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -76,6 +76,7 @@ class PDFOutlineViewer {
|
|||||||
url,
|
url,
|
||||||
target: (newWindow ? LinkTarget.BLANK : linkService.externalLinkTarget),
|
target: (newWindow ? LinkTarget.BLANK : linkService.externalLinkTarget),
|
||||||
rel: linkService.externalLinkRel,
|
rel: linkService.externalLinkRel,
|
||||||
|
enabled: linkService.externalLinkEnabled,
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user