Allow external link notes in share tree

This commit is contained in:
Zack Rauen 2023-09-30 00:44:10 -04:00
parent 614cc4dd82
commit 7729aad1e9
3 changed files with 25 additions and 7 deletions

View File

@ -44,8 +44,10 @@ function renderIndex(result) {
const rootNote = shaca.getNote(shareRoot.SHARE_ROOT_NOTE_ID); const rootNote = shaca.getNote(shareRoot.SHARE_ROOT_NOTE_ID);
for (const childNote of rootNote.getChildNotes()) { for (const childNote of rootNote.getChildNotes()) {
const href = childNote.getLabelValue("shareExternal") ?? `./${childNote.shareId}`; const isExternalLink = childNote.hasLabel("shareExternalLink");
result.content += `<li><a class="${childNote.type}" href="${href}">${childNote.escapedTitle}</a></li>`; const href = isExternalLink ? childNote.getLabelValue("shareExternalLink") : `./${childNote.shareId}`;
const target = isExternalLink ? `target="_blank" rel="noopener noreferrer"` : "";
result.content += `<li><a class="${childNote.type}" href="${href}" ${target}>${childNote.escapedTitle}</a></li>`;
} }
result.content += '</ul>'; result.content += '</ul>';
@ -85,8 +87,13 @@ function renderText(result, note) {
const noteId = notePathSegments[notePathSegments.length - 1]; const noteId = notePathSegments[notePathSegments.length - 1];
const linkedNote = shaca.getNote(noteId); const linkedNote = shaca.getNote(noteId);
if (linkedNote) { 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); linkEl.setAttribute("href", href);
if (isExternalLink) {
linkEl.setAttribute("target", "_blank");
linkEl.setAttribute("rel", "noopener noreferrer");
}
linkEl.classList.add(`type-${linkedNote.type}`); linkEl.classList.add(`type-${linkedNote.type}`);
} else { } else {
linkEl.removeAttribute("href"); linkEl.removeAttribute("href");

View File

@ -32,7 +32,7 @@
<%- header %> <%- header %>
<title><%= note.title %></title> <title><%= note.title %></title>
</head> </head>
<body data-note-id="<%= note.noteId %>"> <body data-note-id="<%= note.noteId %>" data-wtf="true">
<div id="layout"> <div id="layout">
<div id="main"> <div id="main">
<% if (note.parents[0].noteId !== '_share' && note.parents.length !== 0) { %> <% if (note.parents[0].noteId !== '_share' && note.parents.length !== 0) { %>
@ -62,9 +62,14 @@
<% } %> <% } %>
<ul> <ul>
<% 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"` : '';
%>
<li> <li>
<a href="<%= childNote.shareId %>" <a href="<%= linkHref %>" <%= target %>
class="type-<%= childNote.type %>"><%= childNote.title %></a> class="type-<%= childNote.type %>"><%= childNote.title %></a>
</li> </li>
<% } %> <% } %>

View File

@ -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);
%>
<p> <p>
<% const titleWithPrefix = (branch.prefix ? `${branch.prefix} - ` : '') + note.title; %> <% const titleWithPrefix = (branch.prefix ? `${branch.prefix} - ` : '') + note.title; %>
<% if (activeNote.noteId === note.noteId) { %> <% if (activeNote.noteId === note.noteId) { %>
<strong><%= titleWithPrefix %></strong> <strong><%= titleWithPrefix %></strong>
<% } else { %> <% } else { %>
<a class="type-<%= note.type %>" href="./<%= note.shareId %>"><%= titleWithPrefix %></a> <a class="type-<%= note.type %>" href="<%= linkHref %>"<%= target %>><%= titleWithPrefix %></a>
<% } %> <% } %>
</p> </p>