From 7729aad1e950d691a8e156160e9a36937a2aeff4 Mon Sep 17 00:00:00 2001 From: Zack Rauen Date: Sat, 30 Sep 2023 00:44:10 -0400 Subject: [PATCH] Allow external link notes in share tree --- src/share/content_renderer.js | 13 ++++++++++--- src/views/share/page.ejs | 11 ++++++++--- src/views/share/tree_item.ejs | 8 +++++++- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/share/content_renderer.js b/src/share/content_renderer.js index 8c1dbee10..1870f039b 100644 --- a/src/share/content_renderer.js +++ b/src/share/content_renderer.js @@ -44,8 +44,10 @@ function renderIndex(result) { const rootNote = shaca.getNote(shareRoot.SHARE_ROOT_NOTE_ID); for (const childNote of rootNote.getChildNotes()) { - const href = childNote.getLabelValue("shareExternal") ?? `./${childNote.shareId}`; - result.content += `
  • ${childNote.escapedTitle}
  • `; + const isExternalLink = childNote.hasLabel("shareExternalLink"); + const href = isExternalLink ? childNote.getLabelValue("shareExternalLink") : `./${childNote.shareId}`; + const target = isExternalLink ? `target="_blank" rel="noopener noreferrer"` : ""; + result.content += `
  • ${childNote.escapedTitle}
  • `; } result.content += ''; @@ -85,8 +87,13 @@ function renderText(result, note) { const noteId = notePathSegments[notePathSegments.length - 1]; const linkedNote = shaca.getNote(noteId); if (linkedNote) { - const href = linkedNote.getLabelValue("shareExternal") ?? `./${linkedNote.shareId}`; + const isExternalLink = linkedNote.hasLabel("shareExternalLink"); + const href = isExternalLink ? linkedNote.getLabelValue("shareExternalLink") : `./${linkedNote.shareId}`; linkEl.setAttribute("href", href); + if (isExternalLink) { + linkEl.setAttribute("target", "_blank"); + linkEl.setAttribute("rel", "noopener noreferrer"); + } linkEl.classList.add(`type-${linkedNote.type}`); } else { linkEl.removeAttribute("href"); diff --git a/src/views/share/page.ejs b/src/views/share/page.ejs index 52e891dbc..9d95a155a 100644 --- a/src/views/share/page.ejs +++ b/src/views/share/page.ejs @@ -32,7 +32,7 @@ <%- header %> <%= note.title %> - +
    <% if (note.parents[0].noteId !== '_share' && note.parents.length !== 0) { %> @@ -62,9 +62,14 @@ <% } %>
      - <% for (const childNote of note.getVisibleChildNotes()) { %> + <% + for (const childNote of note.getVisibleChildNotes()) { + const isExternalLink = childNote.hasLabel('shareExternalLink'); + const linkHref = isExternalLink ? childNote.getLabelValue('shareExternalLink') : `./${childNote.shareId}`; + const target = isExternalLink ? `target="_blank" rel="noopener noreferrer"` : ''; + %>
    • - class="type-<%= childNote.type %>"><%= childNote.title %>
    • <% } %> diff --git a/src/views/share/tree_item.ejs b/src/views/share/tree_item.ejs index 12eec3fbb..f139be8ac 100644 --- a/src/views/share/tree_item.ejs +++ b/src/views/share/tree_item.ejs @@ -1,10 +1,16 @@ +<% +const isExternalLink = note.hasLabel('shareExternalLink'); +const linkHref = isExternalLink ? note.getLabelValue('shareExternalLink') : `./${note.shareId}`; +const target = isExternalLink ? ` target="_blank" rel="noopener noreferrer"` : ''; +console.log(note.shareId, note.title, isExternalLink, linkHref, target); +%>

      <% const titleWithPrefix = (branch.prefix ? `${branch.prefix} - ` : '') + note.title; %> <% if (activeNote.noteId === note.noteId) { %> <%= titleWithPrefix %> <% } else { %> - <%= titleWithPrefix %> + ><%= titleWithPrefix %> <% } %>