Sha256: c51cae30ff7432021b9b66c7c590722631e8bd614da8d17538a8ff0fdd00ae81

Contents?: true

Size: 1.17 KB

Versions: 5

Compression:

Stored size: 1.17 KB

Contents

/* eslint-disable require-jsdoc */

/**
 * If you want to disable the warning but indicate that the link is an external
 * link, please define the `data-external-link-warning="false"` attribute for
 * the link,
 * e.g. <a href="https://..." target="_blank" data-external-link="text-only" data-external-domain-link="false">...</a>
 *
 * @param {HTMLElement} element The element for which to replace the link href for.
 * @returns {void} Nothing
 */
export default function updateExternalDomainLinks(element) {
  if (window.location.pathname === "/link") {
    return;
  }

  if (!element.hasAttribute("href") || element.closest(".editor-container")) {
    return;
  }

  if (element.dataset.externalDomainLink === "false") {
    return;
  }

  const parts = element.href.match(/^(([a-z]+):)?\/\/([^/:]+)(:[0-9]*)?(\/.*)?$/) || null;
  if (!parts) {
    return;
  }

  const domain = parts[3].replace(/^www\./, "")
  const whitelist = window.Decidim.config.get("external_domain_whitelist") || []
  if (whitelist.includes(domain)) {
    return;
  }

  const externalHref = `/link?external_url=${encodeURIComponent(element.href)}`;
  element.href = externalHref;
  element.dataset.remote = true
}

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
decidim-core-0.28.5 app/packs/src/decidim/external_domain_warning.js
decidim-core-0.28.4 app/packs/src/decidim/external_domain_warning.js
decidim-core-0.28.3 app/packs/src/decidim/external_domain_warning.js
decidim-core-0.28.2 app/packs/src/decidim/external_domain_warning.js
decidim-core-0.28.1 app/packs/src/decidim/external_domain_warning.js