mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-07-28 10:32:27 +08:00
Merge branch 'develop' into tab-row-scroll
This commit is contained in:
commit
a38c091d73
3
.github/workflows/main-docker.yml
vendored
3
.github/workflows/main-docker.yml
vendored
@ -111,6 +111,9 @@ jobs:
|
|||||||
- dockerfile: Dockerfile
|
- dockerfile: Dockerfile
|
||||||
platform: linux/arm/v7
|
platform: linux/arm/v7
|
||||||
image: ubuntu-24.04-arm
|
image: ubuntu-24.04-arm
|
||||||
|
- dockerfile: Dockerfile
|
||||||
|
platform: linux/arm/v8
|
||||||
|
image: ubuntu-24.04-arm
|
||||||
runs-on: ${{ matrix.image }}
|
runs-on: ${{ matrix.image }}
|
||||||
needs:
|
needs:
|
||||||
- test_docker
|
- test_docker
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e # Fail on any command error
|
|
||||||
|
|
||||||
VERSION=`jq -r ".version" package.json`
|
|
||||||
SERIES=${VERSION:0:4}-latest
|
|
||||||
|
|
||||||
sudo docker build -t triliumnext/notes:$VERSION --network host -t triliumnext/notes:$SERIES .
|
|
||||||
|
|
||||||
if [[ $VERSION != *"beta"* ]]; then
|
|
||||||
sudo docker tag triliumnext/notes:$VERSION triliumnext/notes:latest
|
|
||||||
fi
|
|
@ -192,13 +192,16 @@ class ContextMenu {
|
|||||||
// it's important to stop the propagation especially for sub-menus, otherwise the event
|
// it's important to stop the propagation especially for sub-menus, otherwise the event
|
||||||
// might be handled again by top-level menu
|
// might be handled again by top-level menu
|
||||||
return false;
|
return false;
|
||||||
})
|
});
|
||||||
.on("mouseup", (e) =>{
|
|
||||||
|
if (!this.isMobile) {
|
||||||
|
$item.on("mouseup", (e) =>{
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
// Hide the content menu on mouse up to prevent the mouse event from propagating to the elements below.
|
// Hide the content menu on mouse up to prevent the mouse event from propagating to the elements below.
|
||||||
this.hide();
|
this.hide();
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if ("enabled" in item && item.enabled !== undefined && !item.enabled) {
|
if ("enabled" in item && item.enabled !== undefined && !item.enabled) {
|
||||||
$item.addClass("disabled");
|
$item.addClass("disabled");
|
||||||
|
@ -115,6 +115,7 @@ function updateDisplayedShortcuts($container: JQuery<HTMLElement>) {
|
|||||||
export default {
|
export default {
|
||||||
updateDisplayedShortcuts,
|
updateDisplayedShortcuts,
|
||||||
setupActionsForElement,
|
setupActionsForElement,
|
||||||
|
getAction,
|
||||||
getActions,
|
getActions,
|
||||||
getActionsForScope
|
getActionsForScope
|
||||||
};
|
};
|
||||||
|
@ -124,8 +124,12 @@ function formatDateISO(date: Date) {
|
|||||||
return `${date.getFullYear()}-${padNum(date.getMonth() + 1)}-${padNum(date.getDate())}`;
|
return `${date.getFullYear()}-${padNum(date.getMonth() + 1)}-${padNum(date.getDate())}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatDateTime(date: Date) {
|
function formatDateTime(date: Date, userSuppliedFormat?: string): string {
|
||||||
|
if (userSuppliedFormat?.trim()) {
|
||||||
|
return dayjs(date).format(userSuppliedFormat);
|
||||||
|
} else {
|
||||||
return `${formatDate(date)} ${formatTime(date)}`;
|
return `${formatDate(date)} ${formatTime(date)}`;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function localNowDateTime() {
|
function localNowDateTime() {
|
||||||
|
@ -1431,6 +1431,12 @@
|
|||||||
"label": "Automatic read-only size (text notes)",
|
"label": "Automatic read-only size (text notes)",
|
||||||
"unit": "characters"
|
"unit": "characters"
|
||||||
},
|
},
|
||||||
|
"custom_date_time_format": {
|
||||||
|
"title": "Custom Date/Time Format",
|
||||||
|
"description": "Customize the format of the date and time inserted via <kbd></kbd> or the toolbar. See <a href=\"https://day.js.org/docs/en/display/format\" target=\"_blank\" rel=\"noopener noreferrer\">Day.js docs</a> for available format tokens.",
|
||||||
|
"format_string": "Format string:",
|
||||||
|
"formatted_time": "Formatted date/time:"
|
||||||
|
},
|
||||||
"i18n": {
|
"i18n": {
|
||||||
"title": "Localization",
|
"title": "Localization",
|
||||||
"language": "Language",
|
"language": "Language",
|
||||||
|
@ -189,7 +189,7 @@ export function buildClassicToolbar(multilineToolbar: boolean) {
|
|||||||
{
|
{
|
||||||
label: "Insert",
|
label: "Insert",
|
||||||
icon: "plus",
|
icon: "plus",
|
||||||
items: ["imageUpload", "|", "link", "bookmark", "internallink", "includeNote", "|", "specialCharacters", "emoji", "math", "mermaid", "horizontalLine", "pageBreak"]
|
items: ["imageUpload", "|", "link", "bookmark", "internallink", "includeNote", "|", "specialCharacters", "emoji", "math", "mermaid", "horizontalLine", "pageBreak", "dateTime"]
|
||||||
},
|
},
|
||||||
"|",
|
"|",
|
||||||
"outdent",
|
"outdent",
|
||||||
@ -222,6 +222,7 @@ export function buildFloatingToolbar() {
|
|||||||
"|",
|
"|",
|
||||||
"code",
|
"code",
|
||||||
"link",
|
"link",
|
||||||
|
"bookmark",
|
||||||
"removeFormat",
|
"removeFormat",
|
||||||
"internallink",
|
"internallink",
|
||||||
"cuttonote"
|
"cuttonote"
|
||||||
@ -243,7 +244,7 @@ export function buildFloatingToolbar() {
|
|||||||
{
|
{
|
||||||
label: "Insert",
|
label: "Insert",
|
||||||
icon: "plus",
|
icon: "plus",
|
||||||
items: ["bookmark", "internallink", "includeNote", "|", "math", "mermaid", "horizontalLine", "pageBreak"]
|
items: ["bookmark", "internallink", "includeNote", "|", "math", "mermaid", "horizontalLine", "pageBreak", "dateTime"]
|
||||||
},
|
},
|
||||||
"|",
|
"|",
|
||||||
"outdent",
|
"outdent",
|
||||||
|
@ -8,6 +8,7 @@ import HeadingStyleOptions from "./options/text_notes/heading_style.js";
|
|||||||
import TableOfContentsOptions from "./options/text_notes/table_of_contents.js";
|
import TableOfContentsOptions from "./options/text_notes/table_of_contents.js";
|
||||||
import HighlightsListOptions from "./options/text_notes/highlights_list.js";
|
import HighlightsListOptions from "./options/text_notes/highlights_list.js";
|
||||||
import TextAutoReadOnlySizeOptions from "./options/text_notes/text_auto_read_only_size.js";
|
import TextAutoReadOnlySizeOptions from "./options/text_notes/text_auto_read_only_size.js";
|
||||||
|
import DateTimeFormatOptions from "./options/text_notes/date_time_format.js";
|
||||||
import CodeEditorOptions from "./options/code_notes/code_editor.js";
|
import CodeEditorOptions from "./options/code_notes/code_editor.js";
|
||||||
import CodeAutoReadOnlySizeOptions from "./options/code_notes/code_auto_read_only_size.js";
|
import CodeAutoReadOnlySizeOptions from "./options/code_notes/code_auto_read_only_size.js";
|
||||||
import CodeMimeTypesOptions from "./options/code_notes/code_mime_types.js";
|
import CodeMimeTypesOptions from "./options/code_notes/code_mime_types.js";
|
||||||
@ -88,7 +89,8 @@ const CONTENT_WIDGETS: Record<OptionPages | "_backendLog", (typeof NoteContextAw
|
|||||||
CodeBlockOptions,
|
CodeBlockOptions,
|
||||||
TableOfContentsOptions,
|
TableOfContentsOptions,
|
||||||
HighlightsListOptions,
|
HighlightsListOptions,
|
||||||
TextAutoReadOnlySizeOptions
|
TextAutoReadOnlySizeOptions,
|
||||||
|
DateTimeFormatOptions
|
||||||
],
|
],
|
||||||
_optionsCodeNotes: [
|
_optionsCodeNotes: [
|
||||||
CodeEditorOptions,
|
CodeEditorOptions,
|
||||||
|
@ -266,7 +266,7 @@ export default class EditableTextTypeWidget extends AbstractTextTypeWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
item.on("change:isOpen", () => {
|
item.on("change:isOpen", () => {
|
||||||
if (!("isOpen" in item) || !item.isOpen ) {
|
if (!("isOpen" in item) || !item.isOpen) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -377,7 +377,8 @@ export default class EditableTextTypeWidget extends AbstractTextTypeWidget {
|
|||||||
|
|
||||||
insertDateTimeToTextCommand() {
|
insertDateTimeToTextCommand() {
|
||||||
const date = new Date();
|
const date = new Date();
|
||||||
const dateString = utils.formatDateTime(date);
|
const customDateTimeFormat = options.get("customDateTimeFormat");
|
||||||
|
const dateString = utils.formatDateTime(date, customDateTimeFormat);
|
||||||
|
|
||||||
this.addTextToEditor(dateString);
|
this.addTextToEditor(dateString);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,67 @@
|
|||||||
|
import OptionsWidget from "../options_widget.js";
|
||||||
|
import { t } from "../../../../services/i18n.js";
|
||||||
|
import type { OptionMap } from "@triliumnext/commons";
|
||||||
|
import utils from "../../../../services/utils.js";
|
||||||
|
import keyboardActionsService from "../../../../services/keyboard_actions.js";
|
||||||
|
import linkService from "../../../.././services/link.js";
|
||||||
|
|
||||||
|
const TPL = /*html*/`
|
||||||
|
<div class="options-section">
|
||||||
|
<h4>${t("custom_date_time_format.title")}</h4>
|
||||||
|
|
||||||
|
<p class="description">
|
||||||
|
${t("custom_date_time_format.description")}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="form-group row align-items-center">
|
||||||
|
<div class="col-6">
|
||||||
|
<label for="custom-date-time-format">${t("custom_date_time_format.format_string")}</label>
|
||||||
|
<input type="text" id="custom-date-time-format" class="form-control custom-date-time-format" placeholder="YYYY-MM-DD HH:mm">
|
||||||
|
</div>
|
||||||
|
<div class="col-6">
|
||||||
|
<label>${t("custom_date_time_format.formatted_time")}</label>
|
||||||
|
<div class="formatted-date"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
export default class DateTimeFormatOptions extends OptionsWidget {
|
||||||
|
|
||||||
|
private $formatInput!: JQuery<HTMLInputElement>;
|
||||||
|
private $formattedDate!: JQuery<HTMLInputElement>;
|
||||||
|
|
||||||
|
doRender() {
|
||||||
|
this.$widget = $(TPL);
|
||||||
|
|
||||||
|
this.$formatInput = this.$widget.find("input.custom-date-time-format");
|
||||||
|
this.$formattedDate = this.$widget.find(".formatted-date");
|
||||||
|
|
||||||
|
this.$formatInput.on("input", () => {
|
||||||
|
const dateString = utils.formatDateTime(new Date(), this.$formatInput.val());
|
||||||
|
this.$formattedDate.text(dateString);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.$formatInput.on('blur keydown', (e) => {
|
||||||
|
if (e.type === 'blur' || (e.type === 'keydown' && e.key === 'Enter')) {
|
||||||
|
this.updateOption("customDateTimeFormat", this.$formatInput.val());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return this.$widget;
|
||||||
|
}
|
||||||
|
|
||||||
|
async optionsLoaded(options: OptionMap) {
|
||||||
|
const shortcutKey = (await keyboardActionsService.getAction("insertDateTimeToText")).effectiveShortcuts.join(", ");
|
||||||
|
const $link = await linkService.createLink("_hidden/_options/_optionsShortcuts", {
|
||||||
|
"title": shortcutKey,
|
||||||
|
"showTooltip": false
|
||||||
|
});
|
||||||
|
this.$widget.find(".description").find("kbd").replaceWith($link);
|
||||||
|
|
||||||
|
const customDateTimeFormat = options.customDateTimeFormat || "YYYY-MM-DD HH:mm";
|
||||||
|
this.$formatInput.val(customDateTimeFormat);
|
||||||
|
const dateString = utils.formatDateTime(new Date(), customDateTimeFormat);
|
||||||
|
this.$formattedDate.text(dateString);
|
||||||
|
}
|
||||||
|
}
|
14
apps/edit-docs/demo/!!!meta.json
vendored
14
apps/edit-docs/demo/!!!meta.json
vendored
@ -454,19 +454,19 @@
|
|||||||
"isInheritable": false,
|
"isInheritable": false,
|
||||||
"position": 10
|
"position": 10
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"type": "relation",
|
|
||||||
"name": "child:child:child:template",
|
|
||||||
"value": "kr6HIBBuXRwm",
|
|
||||||
"isInheritable": false,
|
|
||||||
"position": 20
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "label",
|
"type": "label",
|
||||||
"name": "iconClass",
|
"name": "iconClass",
|
||||||
"value": "bx bx-calendar",
|
"value": "bx bx-calendar",
|
||||||
"isInheritable": false,
|
"isInheritable": false,
|
||||||
"position": 30
|
"position": 30
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "relation",
|
||||||
|
"name": "dateTemplate",
|
||||||
|
"value": "kr6HIBBuXRwm",
|
||||||
|
"isInheritable": false,
|
||||||
|
"position": 20
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"format": "html",
|
"format": "html",
|
||||||
|
7
apps/edit-docs/demo/root/Trilium Demo.html
vendored
7
apps/edit-docs/demo/root/Trilium Demo.html
vendored
@ -18,22 +18,28 @@
|
|||||||
height="150">
|
height="150">
|
||||||
</figure>
|
</figure>
|
||||||
<p><strong>Welcome to TriliumNext Notes!</strong>
|
<p><strong>Welcome to TriliumNext Notes!</strong>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<p>This is initial "demo" document provided by TriliumNext by default to
|
<p>This is initial "demo" document provided by TriliumNext by default to
|
||||||
showcase some of its features and also give you some ideas how you might
|
showcase some of its features and also give you some ideas how you might
|
||||||
structure your notes. You can play with it, modify note content and tree
|
structure your notes. You can play with it, modify note content and tree
|
||||||
structure as you wish.</p>
|
structure as you wish.</p>
|
||||||
<p>If you need any help, visit TriliumNext website: <a href="https://github.com/TriliumNext">https://github.com/TriliumNext</a>
|
<p>If you need any help, visit TriliumNext website: <a href="https://github.com/TriliumNext">https://github.com/TriliumNext</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<h3>Cleanup</h3>
|
<h3>Cleanup</h3>
|
||||||
|
|
||||||
<p>Once you're finished with experimenting and want to cleanup these pages,
|
<p>Once you're finished with experimenting and want to cleanup these pages,
|
||||||
you can simply delete them all.</p>
|
you can simply delete them all.</p>
|
||||||
<h3>Formatting</h3>
|
<h3>Formatting</h3>
|
||||||
|
|
||||||
<p>TriliumNext supports classic formatting like <em>italic</em>, <strong>bold</strong>, <em><strong>bold and italic</strong></em>.
|
<p>TriliumNext supports classic formatting like <em>italic</em>, <strong>bold</strong>, <em><strong>bold and italic</strong></em>.
|
||||||
Of course you can add links like this one pointing to <a href="http://www.google.com">google.com</a>
|
Of course you can add links like this one pointing to <a href="http://www.google.com">google.com</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<p>Lists</p>
|
<p>Lists</p>
|
||||||
<p><strong>Ordered:</strong>
|
<p><strong>Ordered:</strong>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<ol>
|
<ol>
|
||||||
<li>First Item</li>
|
<li>First Item</li>
|
||||||
@ -48,6 +54,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
<p><strong>Unordered:</strong>
|
<p><strong>Unordered:</strong>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Item</li>
|
<li>Item</li>
|
||||||
|
@ -14,17 +14,22 @@
|
|||||||
|
|
||||||
<div class="ck-content">
|
<div class="ck-content">
|
||||||
<h2>Main characters</h2>
|
<h2>Main characters</h2>
|
||||||
|
|
||||||
<p>… here put main characters …</p>
|
<p>… here put main characters …</p>
|
||||||
<p> </p>
|
<p> </p>
|
||||||
<h2>Plot</h2>
|
<h2>Plot</h2>
|
||||||
|
|
||||||
<p>… describe main plot lines …</p>
|
<p>… describe main plot lines …</p>
|
||||||
<p> </p>
|
<p> </p>
|
||||||
<h2>Tone</h2>
|
<h2>Tone</h2>
|
||||||
|
|
||||||
<p> </p>
|
<p> </p>
|
||||||
<h2>Genre</h2>
|
<h2>Genre</h2>
|
||||||
|
|
||||||
<p>scifi / drama / romance</p>
|
<p>scifi / drama / romance</p>
|
||||||
<p> </p>
|
<p> </p>
|
||||||
<h2>Similar books</h2>
|
<h2>Similar books</h2>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>…</li>
|
<li>…</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -14,11 +14,14 @@
|
|||||||
|
|
||||||
<div class="ck-content">
|
<div class="ck-content">
|
||||||
<p>Checkout Kindle daily deals: <a href="https://www.amazon.com/gp/feature.html?docId=1000677541">https://www.amazon.com/gp/feature.html?docId=1000677541</a>
|
<p>Checkout Kindle daily deals: <a href="https://www.amazon.com/gp/feature.html?docId=1000677541">https://www.amazon.com/gp/feature.html?docId=1000677541</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Cixin Liu - <a href="https://www.amazon.com/Dark-Forest-Remembrance-Earths-Past/dp/0765386690/ref=pd_bxgy_14_img_2?_encoding=UTF8&pd_rd_i=0765386690&pd_rd_r=AB0J179TM9NTEAMHE240&pd_rd_w=FAhxX&pd_rd_wg=pLGK7&psc=1&refRID=AB0J179TM9NTEAMHE240">The Dark Forest</a>
|
<li>Cixin Liu - <a href="https://www.amazon.com/Dark-Forest-Remembrance-Earths-Past/dp/0765386690/ref=pd_bxgy_14_img_2?_encoding=UTF8&pd_rd_i=0765386690&pd_rd_r=AB0J179TM9NTEAMHE240&pd_rd_w=FAhxX&pd_rd_wg=pLGK7&psc=1&refRID=AB0J179TM9NTEAMHE240">The Dark Forest</a>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
<li>Ann Leckie - <a href="https://www.amazon.com/Ancillary-Sword-Imperial-Radch-Leckie/dp/0316246654/ref=pd_sim_14_1?_encoding=UTF8&pd_rd_i=0316246654&pd_rd_r=D7KDTGZFP7YM1YSYVY4G&pd_rd_w=jkn28&pd_rd_wg=JVhtw&psc=1&refRID=D7KDTGZFP7YM1YSYVY4G">Ancillary Sword</a>
|
<li>Ann Leckie - <a href="https://www.amazon.com/Ancillary-Sword-Imperial-Radch-Leckie/dp/0316246654/ref=pd_sim_14_1?_encoding=UTF8&pd_rd_i=0316246654&pd_rd_r=D7KDTGZFP7YM1YSYVY4G&pd_rd_w=jkn28&pd_rd_wg=JVhtw&psc=1&refRID=D7KDTGZFP7YM1YSYVY4G">Ancillary Sword</a>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -18,21 +18,25 @@
|
|||||||
<li>
|
<li>
|
||||||
<label class="todo-list__label">
|
<label class="todo-list__label">
|
||||||
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description">buy milk </span>
|
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description">buy milk </span>
|
||||||
|
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label class="todo-list__label">
|
<label class="todo-list__label">
|
||||||
<input type="checkbox" checked="checked" disabled="disabled"><span class="todo-list__label__description">do the laundry </span>
|
<input type="checkbox" checked="checked" disabled="disabled"><span class="todo-list__label__description">do the laundry </span>
|
||||||
|
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label class="todo-list__label">
|
<label class="todo-list__label">
|
||||||
<input type="checkbox" checked="checked" disabled="disabled"><span class="todo-list__label__description">watch TV </span>
|
<input type="checkbox" checked="checked" disabled="disabled"><span class="todo-list__label__description">watch TV </span>
|
||||||
|
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label class="todo-list__label">
|
<label class="todo-list__label">
|
||||||
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description">eat ice cream </span>
|
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description">eat ice cream </span>
|
||||||
|
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
alert("Hello world");
|
alert("Hello world");
|
||||||
|
|
||||||
}</code></pre>
|
}</code></pre>
|
||||||
|
|
||||||
<p>For larger pieces of code it is better to use a code note, which uses
|
<p>For larger pieces of code it is better to use a code note, which uses
|
||||||
a fully-fledged code editor (CodeMirror). For an example of a code note,
|
a fully-fledged code editor (CodeMirror). For an example of a code note,
|
||||||
see <a class="reference-link" href="../Scripting%20examples/Custom%20request%20handler.js">Custom request handler</a>.</p>
|
see <a class="reference-link" href="../Scripting%20examples/Custom%20request%20handler.js">Custom request handler</a>.</p>
|
||||||
|
@ -15,7 +15,9 @@
|
|||||||
<div class="ck-content">
|
<div class="ck-content">
|
||||||
<p><span class="math-tex">\(% \f is defined as #1f(#2) using the macro \f\relax{x} = \int_{-\infty}^\infty \f\hat\xi\,e^{2 \pi i \xi x} \,d\xi\)</span>Some
|
<p><span class="math-tex">\(% \f is defined as #1f(#2) using the macro \f\relax{x} = \int_{-\infty}^\infty \f\hat\xi\,e^{2 \pi i \xi x} \,d\xi\)</span>Some
|
||||||
math examples:</p><span class="math-tex">\[\displaystyle \frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\cdots} } } }\]</span>
|
math examples:</p><span class="math-tex">\[\displaystyle \frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\cdots} } } }\]</span>
|
||||||
|
|
||||||
<p>Another:</p><span class="math-tex">\[\displaystyle \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)\]</span>
|
<p>Another:</p><span class="math-tex">\[\displaystyle \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)\]</span>
|
||||||
|
|
||||||
<p>Inline math is also possible: <span class="math-tex">\(c^2 = a^2 + b^2\)</span> </p>
|
<p>Inline math is also possible: <span class="math-tex">\(c^2 = a^2 + b^2\)</span> </p>
|
||||||
<p> </p>
|
<p> </p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
<p>This page demonstrates two things:</p>
|
<p>This page demonstrates two things:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>possibility to <a href="#root/_hidden/_help/_help_KSZ04uQ2D1St/_help_iPIMuisry3hd/_help_nBAXQFj20hS1">include one note into another</a>
|
<li>possibility to <a href="#root/_hidden/_help/_help_KSZ04uQ2D1St/_help_iPIMuisry3hd/_help_nBAXQFj20hS1">include one note into another</a>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
<li>PDF preview - you can read PDFs directly in Trilium!</li>
|
<li>PDF preview - you can read PDFs directly in Trilium!</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
<div class="ck-content">
|
<div class="ck-content">
|
||||||
<p>You can read some explanation on how this journal works here: <a href="https://github.com/zadam/trilium/wiki/Day-notes">https://github.com/zadam/trilium/wiki/Day-notes</a>
|
<p>You can read some explanation on how this journal works here: <a href="https://github.com/zadam/trilium/wiki/Day-notes">https://github.com/zadam/trilium/wiki/Day-notes</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
<li>
|
<li>
|
||||||
<label class="todo-list__label">
|
<label class="todo-list__label">
|
||||||
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description"> </span>
|
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description"> </span>
|
||||||
|
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
<li>XBox</li>
|
<li>XBox</li>
|
||||||
<li>Candles</li>
|
<li>Candles</li>
|
||||||
<li><a href="https://www.amazon.ca/Anker-SoundCore-Portable-Bluetooth-Resistance/dp/B01MTB55WH?pd_rd_wg=honW8&pd_rd_r=c9bb7c0f-0051-4da7-991f-4ca711a1b3e3&pd_rd_w=ciUpR&ref_=pd_gw_simh&pf_rd_r=K10XKX0NGPDNTYYP4BS4&pf_rd_p=5f1b460b-78c1-580e-929e-2878fe4859e8">Portable speakers</a>
|
<li><a href="https://www.amazon.ca/Anker-SoundCore-Portable-Bluetooth-Resistance/dp/B01MTB55WH?pd_rd_wg=honW8&pd_rd_r=c9bb7c0f-0051-4da7-991f-4ca711a1b3e3&pd_rd_w=ciUpR&ref_=pd_gw_simh&pf_rd_r=K10XKX0NGPDNTYYP4BS4&pf_rd_p=5f1b460b-78c1-580e-929e-2878fe4859e8">Portable speakers</a>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
<li>...?</li>
|
<li>...?</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -14,8 +14,10 @@
|
|||||||
|
|
||||||
<div class="ck-content">
|
<div class="ck-content">
|
||||||
<p>Wiki: <a href="https://en.wikipedia.org/wiki/Trusted_timestamping">https://en.wikipedia.org/wiki/Trusted_timestamping</a>
|
<p>Wiki: <a href="https://en.wikipedia.org/wiki/Trusted_timestamping">https://en.wikipedia.org/wiki/Trusted_timestamping</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<p>Bozho: <a href="https://techblog.bozho.net/using-trusted-timestamping-java/">https://techblog.bozho.net/using-trusted-timestamping-java/</a>
|
<p>Bozho: <a href="https://techblog.bozho.net/using-trusted-timestamping-java/">https://techblog.bozho.net/using-trusted-timestamping-java/</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<p><strong>Trusted timestamping</strong> is the process of <a href="https://en.wikipedia.org/wiki/Computer_security">securely</a> keeping
|
<p><strong>Trusted timestamping</strong> is the process of <a href="https://en.wikipedia.org/wiki/Computer_security">securely</a> keeping
|
||||||
track of the creation and modification time of a document. Security here
|
track of the creation and modification time of a document. Security here
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
<p>Miscellaneous notes done on monday ...</p>
|
<p>Miscellaneous notes done on monday ...</p>
|
||||||
<p> </p>
|
<p> </p>
|
||||||
<p>Interesting video: <a href="https://www.youtube.com/watch?v=_eSAF_qT_FY&feature=youtu.be">https://www.youtube.com/watch?v=_eSAF_qT_FY&feature=youtu.be</a>
|
<p>Interesting video: <a href="https://www.youtube.com/watch?v=_eSAF_qT_FY&feature=youtu.be">https://www.youtube.com/watch?v=_eSAF_qT_FY&feature=youtu.be</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<p> </p>
|
<p> </p>
|
||||||
<p> </p>
|
<p> </p>
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
<li>
|
<li>
|
||||||
<label class="todo-list__label">
|
<label class="todo-list__label">
|
||||||
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description"> </span>
|
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description"> </span>
|
||||||
|
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
<li>
|
<li>
|
||||||
<label class="todo-list__label">
|
<label class="todo-list__label">
|
||||||
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description"> </span>
|
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description"> </span>
|
||||||
|
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
<li>
|
<li>
|
||||||
<label class="todo-list__label">
|
<label class="todo-list__label">
|
||||||
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description"> </span>
|
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description"> </span>
|
||||||
|
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
<li>
|
<li>
|
||||||
<label class="todo-list__label">
|
<label class="todo-list__label">
|
||||||
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description"> </span>
|
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description"> </span>
|
||||||
|
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
<li>
|
<li>
|
||||||
<label class="todo-list__label">
|
<label class="todo-list__label">
|
||||||
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description"> </span>
|
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description"> </span>
|
||||||
|
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
<li>
|
<li>
|
||||||
<label class="todo-list__label">
|
<label class="todo-list__label">
|
||||||
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description"> </span>
|
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description"> </span>
|
||||||
|
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
width="209" height="300">
|
width="209" height="300">
|
||||||
</figure>
|
</figure>
|
||||||
<p>Maybe CodeNames? <a href="https://boardgamegeek.com/boardgame/178900/codenames">https://boardgamegeek.com/boardgame/178900/codenames</a>
|
<p>Maybe CodeNames? <a href="https://boardgamegeek.com/boardgame/178900/codenames">https://boardgamegeek.com/boardgame/178900/codenames</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
<li>
|
<li>
|
||||||
<label class="todo-list__label">
|
<label class="todo-list__label">
|
||||||
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description"> </span>
|
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description"> </span>
|
||||||
|
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
<li>
|
<li>
|
||||||
<label class="todo-list__label">
|
<label class="todo-list__label">
|
||||||
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description"> </span>
|
<input type="checkbox" disabled="disabled"><span class="todo-list__label__description"> </span>
|
||||||
|
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -24,14 +24,17 @@
|
|||||||
<span
|
<span
|
||||||
class="footnote-reference" data-footnote-reference="" data-footnote-index="1"
|
class="footnote-reference" data-footnote-reference="" data-footnote-index="1"
|
||||||
data-footnote-id="6qz4pm021mi" role="doc-noteref" id="fnref6qz4pm021mi"><sup><a href="#fn6qz4pm021mi">[1]</a></sup>
|
data-footnote-id="6qz4pm021mi" role="doc-noteref" id="fnref6qz4pm021mi"><sup><a href="#fn6qz4pm021mi">[1]</a></sup>
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<ol class="footnote-section footnotes" data-footnote-section="" role="doc-endnotes">
|
<ol class="footnote-section footnotes" data-footnote-section="" role="doc-endnotes">
|
||||||
<li class="footnote-item" data-footnote-item="" data-footnote-index="1"
|
<li class="footnote-item" data-footnote-item="" data-footnote-index="1"
|
||||||
data-footnote-id="6qz4pm021mi" role="doc-endnote" id="fn6qz4pm021mi"><span class="footnote-back-link" data-footnote-back-link="" data-footnote-id="6qz4pm021mi"><sup><strong><a href="#fnref6qz4pm021mi">^</a></strong></sup></span>
|
data-footnote-id="6qz4pm021mi" role="doc-endnote" id="fn6qz4pm021mi"><span class="footnote-back-link" data-footnote-back-link="" data-footnote-id="6qz4pm021mi"><sup><strong><a href="#fnref6qz4pm021mi">^</a></strong></sup></span>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="footnote-content" data-footnote-content="">
|
class="footnote-content" data-footnote-content="">
|
||||||
<p><a href="https://www.thecollector.com/what-are-the-seven-wonders-of-the-world/">What Are the 7 Wonders of the World? (with HD Images) | TheCollector</a>
|
<p><a href="https://www.thecollector.com/what-are-the-seven-wonders-of-the-world/">What Are the 7 Wonders of the World? (with HD Images) | TheCollector</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
@ -26,13 +26,16 @@
|
|||||||
been brought to its knees.<span class="footnote-reference" data-footnote-reference=""
|
been brought to its knees.<span class="footnote-reference" data-footnote-reference=""
|
||||||
data-footnote-index="1" data-footnote-id="o6g991vkrwj" role="doc-noteref"
|
data-footnote-index="1" data-footnote-id="o6g991vkrwj" role="doc-noteref"
|
||||||
id="fnrefo6g991vkrwj"><sup><a href="#fno6g991vkrwj">[1]</a></sup></span>
|
id="fnrefo6g991vkrwj"><sup><a href="#fno6g991vkrwj">[1]</a></sup></span>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<ol class="footnote-section footnotes" data-footnote-section="" role="doc-endnotes">
|
<ol class="footnote-section footnotes" data-footnote-section="" role="doc-endnotes">
|
||||||
<li class="footnote-item" data-footnote-item="" data-footnote-index="1"
|
<li class="footnote-item" data-footnote-item="" data-footnote-index="1"
|
||||||
data-footnote-id="o6g991vkrwj" role="doc-endnote" id="fno6g991vkrwj"><span class="footnote-back-link" data-footnote-back-link="" data-footnote-id="o6g991vkrwj"><sup><strong><a href="#fnrefo6g991vkrwj">^</a></strong></sup></span>
|
data-footnote-id="o6g991vkrwj" role="doc-endnote" id="fno6g991vkrwj"><span class="footnote-back-link" data-footnote-back-link="" data-footnote-id="o6g991vkrwj"><sup><strong><a href="#fnrefo6g991vkrwj">^</a></strong></sup></span>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="footnote-content" data-footnote-content="">
|
class="footnote-content" data-footnote-content="">
|
||||||
<p><a href="https://www.thecollector.com/what-are-the-seven-wonders-of-the-world/">What Are the 7 Wonders of the World? (with HD Images) | TheCollector</a>
|
<p><a href="https://www.thecollector.com/what-are-the-seven-wonders-of-the-world/">What Are the 7 Wonders of the World? (with HD Images) | TheCollector</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
@ -22,13 +22,16 @@
|
|||||||
around 1450 in polished drystone walls.<span class="footnote-reference"
|
around 1450 in polished drystone walls.<span class="footnote-reference"
|
||||||
data-footnote-reference="" data-footnote-index="1" data-footnote-id="4prjheuho88"
|
data-footnote-reference="" data-footnote-index="1" data-footnote-id="4prjheuho88"
|
||||||
role="doc-noteref" id="fnref4prjheuho88"><sup><a href="#fn4prjheuho88">[1]</a></sup></span>
|
role="doc-noteref" id="fnref4prjheuho88"><sup><a href="#fn4prjheuho88">[1]</a></sup></span>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<ol class="footnote-section footnotes" data-footnote-section="" role="doc-endnotes">
|
<ol class="footnote-section footnotes" data-footnote-section="" role="doc-endnotes">
|
||||||
<li class="footnote-item" data-footnote-item="" data-footnote-index="1"
|
<li class="footnote-item" data-footnote-item="" data-footnote-index="1"
|
||||||
data-footnote-id="4prjheuho88" role="doc-endnote" id="fn4prjheuho88"><span class="footnote-back-link" data-footnote-back-link="" data-footnote-id="4prjheuho88"><sup><strong><a href="#fnref4prjheuho88">^</a></strong></sup></span>
|
data-footnote-id="4prjheuho88" role="doc-endnote" id="fn4prjheuho88"><span class="footnote-back-link" data-footnote-back-link="" data-footnote-id="4prjheuho88"><sup><strong><a href="#fnref4prjheuho88">^</a></strong></sup></span>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="footnote-content" data-footnote-content="">
|
class="footnote-content" data-footnote-content="">
|
||||||
<p><a href="https://www.thecollector.com/what-are-the-seven-wonders-of-the-world/">What Are the 7 Wonders of the World? (with HD Images) | TheCollector</a>
|
<p><a href="https://www.thecollector.com/what-are-the-seven-wonders-of-the-world/">What Are the 7 Wonders of the World? (with HD Images) | TheCollector</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
@ -23,13 +23,16 @@
|
|||||||
by earthquakes.<span class="footnote-reference" data-footnote-reference=""
|
by earthquakes.<span class="footnote-reference" data-footnote-reference=""
|
||||||
data-footnote-index="1" data-footnote-id="ej5sd0bakne" role="doc-noteref"
|
data-footnote-index="1" data-footnote-id="ej5sd0bakne" role="doc-noteref"
|
||||||
id="fnrefej5sd0bakne"><sup><a href="#fnej5sd0bakne">[1]</a></sup></span>
|
id="fnrefej5sd0bakne"><sup><a href="#fnej5sd0bakne">[1]</a></sup></span>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<ol class="footnote-section footnotes" data-footnote-section="" role="doc-endnotes">
|
<ol class="footnote-section footnotes" data-footnote-section="" role="doc-endnotes">
|
||||||
<li class="footnote-item" data-footnote-item="" data-footnote-index="1"
|
<li class="footnote-item" data-footnote-item="" data-footnote-index="1"
|
||||||
data-footnote-id="ej5sd0bakne" role="doc-endnote" id="fnej5sd0bakne"><span class="footnote-back-link" data-footnote-back-link="" data-footnote-id="ej5sd0bakne"><sup><strong><a href="#fnrefej5sd0bakne">^</a></strong></sup></span>
|
data-footnote-id="ej5sd0bakne" role="doc-endnote" id="fnej5sd0bakne"><span class="footnote-back-link" data-footnote-back-link="" data-footnote-id="ej5sd0bakne"><sup><strong><a href="#fnrefej5sd0bakne">^</a></strong></sup></span>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="footnote-content" data-footnote-content="">
|
class="footnote-content" data-footnote-content="">
|
||||||
<p><a href="https://www.thecollector.com/what-are-the-seven-wonders-of-the-world/">What Are the 7 Wonders of the World? (with HD Images) | TheCollector</a>
|
<p><a href="https://www.thecollector.com/what-are-the-seven-wonders-of-the-world/">What Are the 7 Wonders of the World? (with HD Images) | TheCollector</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
@ -26,14 +26,17 @@
|
|||||||
<span
|
<span
|
||||||
class="footnote-reference" data-footnote-reference="" data-footnote-index="1"
|
class="footnote-reference" data-footnote-reference="" data-footnote-index="1"
|
||||||
data-footnote-id="4kitkusvyi3" role="doc-noteref" id="fnref4kitkusvyi3"><sup><a href="#fn4kitkusvyi3">[1]</a></sup>
|
data-footnote-id="4kitkusvyi3" role="doc-noteref" id="fnref4kitkusvyi3"><sup><a href="#fn4kitkusvyi3">[1]</a></sup>
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<ol class="footnote-section footnotes" data-footnote-section="" role="doc-endnotes">
|
<ol class="footnote-section footnotes" data-footnote-section="" role="doc-endnotes">
|
||||||
<li class="footnote-item" data-footnote-item="" data-footnote-index="1"
|
<li class="footnote-item" data-footnote-item="" data-footnote-index="1"
|
||||||
data-footnote-id="4kitkusvyi3" role="doc-endnote" id="fn4kitkusvyi3"><span class="footnote-back-link" data-footnote-back-link="" data-footnote-id="4kitkusvyi3"><sup><strong><a href="#fnref4kitkusvyi3">^</a></strong></sup></span>
|
data-footnote-id="4kitkusvyi3" role="doc-endnote" id="fn4kitkusvyi3"><span class="footnote-back-link" data-footnote-back-link="" data-footnote-id="4kitkusvyi3"><sup><strong><a href="#fnref4kitkusvyi3">^</a></strong></sup></span>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="footnote-content" data-footnote-content="">
|
class="footnote-content" data-footnote-content="">
|
||||||
<p><a href="https://www.thecollector.com/what-are-the-seven-wonders-of-the-world/">What Are the 7 Wonders of the World? (with HD Images) | TheCollector</a>
|
<p><a href="https://www.thecollector.com/what-are-the-seven-wonders-of-the-world/">What Are the 7 Wonders of the World? (with HD Images) | TheCollector</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
@ -23,14 +23,17 @@
|
|||||||
<span
|
<span
|
||||||
class="footnote-reference" data-footnote-reference="" data-footnote-index="1"
|
class="footnote-reference" data-footnote-reference="" data-footnote-index="1"
|
||||||
data-footnote-id="o0o2das7ljm" role="doc-noteref" id="fnrefo0o2das7ljm"><sup><a href="#fno0o2das7ljm">[1]</a></sup>
|
data-footnote-id="o0o2das7ljm" role="doc-noteref" id="fnrefo0o2das7ljm"><sup><a href="#fno0o2das7ljm">[1]</a></sup>
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<ol class="footnote-section footnotes" data-footnote-section="" role="doc-endnotes">
|
<ol class="footnote-section footnotes" data-footnote-section="" role="doc-endnotes">
|
||||||
<li class="footnote-item" data-footnote-item="" data-footnote-index="1"
|
<li class="footnote-item" data-footnote-item="" data-footnote-index="1"
|
||||||
data-footnote-id="o0o2das7ljm" role="doc-endnote" id="fno0o2das7ljm"><span class="footnote-back-link" data-footnote-back-link="" data-footnote-id="o0o2das7ljm"><sup><strong><a href="#fnrefo0o2das7ljm">^</a></strong></sup></span>
|
data-footnote-id="o0o2das7ljm" role="doc-endnote" id="fno0o2das7ljm"><span class="footnote-back-link" data-footnote-back-link="" data-footnote-id="o0o2das7ljm"><sup><strong><a href="#fnrefo0o2das7ljm">^</a></strong></sup></span>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="footnote-content" data-footnote-content="">
|
class="footnote-content" data-footnote-content="">
|
||||||
<p><a href="https://www.thecollector.com/what-are-the-seven-wonders-of-the-world/">What Are the 7 Wonders of the World? (with HD Images) | TheCollector</a>
|
<p><a href="https://www.thecollector.com/what-are-the-seven-wonders-of-the-world/">What Are the 7 Wonders of the World? (with HD Images) | TheCollector</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
@ -23,13 +23,16 @@
|
|||||||
the complex.<span class="footnote-reference" data-footnote-reference=""
|
the complex.<span class="footnote-reference" data-footnote-reference=""
|
||||||
data-footnote-index="1" data-footnote-id="zzzjn52iwk" role="doc-noteref"
|
data-footnote-index="1" data-footnote-id="zzzjn52iwk" role="doc-noteref"
|
||||||
id="fnrefzzzjn52iwk"><sup><a href="#fnzzzjn52iwk">[1]</a></sup></span>
|
id="fnrefzzzjn52iwk"><sup><a href="#fnzzzjn52iwk">[1]</a></sup></span>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<ol class="footnote-section footnotes" data-footnote-section="" role="doc-endnotes">
|
<ol class="footnote-section footnotes" data-footnote-section="" role="doc-endnotes">
|
||||||
<li class="footnote-item" data-footnote-item="" data-footnote-index="1"
|
<li class="footnote-item" data-footnote-item="" data-footnote-index="1"
|
||||||
data-footnote-id="zzzjn52iwk" role="doc-endnote" id="fnzzzjn52iwk"><span class="footnote-back-link" data-footnote-back-link="" data-footnote-id="zzzjn52iwk"><sup><strong><a href="#fnrefzzzjn52iwk">^</a></strong></sup></span>
|
data-footnote-id="zzzjn52iwk" role="doc-endnote" id="fnzzzjn52iwk"><span class="footnote-back-link" data-footnote-back-link="" data-footnote-id="zzzjn52iwk"><sup><strong><a href="#fnrefzzzjn52iwk">^</a></strong></sup></span>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="footnote-content" data-footnote-content="">
|
class="footnote-content" data-footnote-content="">
|
||||||
<p><a href="https://www.thecollector.com/what-are-the-seven-wonders-of-the-world/">What Are the 7 Wonders of the World? (with HD Images) | TheCollector</a>
|
<p><a href="https://www.thecollector.com/what-are-the-seven-wonders-of-the-world/">What Are the 7 Wonders of the World? (with HD Images) | TheCollector</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
<div class="ck-content">
|
<div class="ck-content">
|
||||||
<p>This is a simple TODO/Task manager. You can see some description and explanation
|
<p>This is a simple TODO/Task manager. You can see some description and explanation
|
||||||
here: <a href="https://github.com/zadam/trilium/wiki/Task-manager">https://github.com/zadam/trilium/wiki/Task-manager</a>
|
here: <a href="https://github.com/zadam/trilium/wiki/Task-manager">https://github.com/zadam/trilium/wiki/Task-manager</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<p>Please note that this is meant as scripting example only and feature/bug
|
<p>Please note that this is meant as scripting example only and feature/bug
|
||||||
support is very limited.</p>
|
support is very limited.</p>
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
width="209" height="300">
|
width="209" height="300">
|
||||||
</figure>
|
</figure>
|
||||||
<p>Maybe CodeNames? <a href="https://boardgamegeek.com/boardgame/178900/codenames">https://boardgamegeek.com/boardgame/178900/codenames</a>
|
<p>Maybe CodeNames? <a href="https://boardgamegeek.com/boardgame/178900/codenames">https://boardgamegeek.com/boardgame/178900/codenames</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
<div class="ck-content">
|
<div class="ck-content">
|
||||||
<p><a href="https://en.wikipedia.org/wiki/The_Black_Swan:_The_Impact_of_the_Highly_Improbable">https://en.wikipedia.org/wiki/The_Black_Swan:_The_Impact_of_the_Highly_Improbable</a>
|
<p><a href="https://en.wikipedia.org/wiki/The_Black_Swan:_The_Impact_of_the_Highly_Improbable">https://en.wikipedia.org/wiki/The_Black_Swan:_The_Impact_of_the_Highly_Improbable</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<p><em><strong>The Black Swan: The Impact of the Highly Improbable</strong></em> is
|
<p><em><strong>The Black Swan: The Impact of the Highly Improbable</strong></em> is
|
||||||
a 2007 book by author and former <a href="https://en.wikipedia.org/wiki/Options_trader">options trader</a>
|
a 2007 book by author and former <a href="https://en.wikipedia.org/wiki/Options_trader">options trader</a>
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
and <a href="https://en.wikipedia.org/wiki/Apple_Inc.">Apple's</a> <a href="https://en.wikipedia.org/wiki/MacOS">macOS</a> (formerly
|
and <a href="https://en.wikipedia.org/wiki/Apple_Inc.">Apple's</a> <a href="https://en.wikipedia.org/wiki/MacOS">macOS</a> (formerly
|
||||||
OS X). A version <a href="https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux">is also available for Windows 10</a>.</p>
|
OS X). A version <a href="https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux">is also available for Windows 10</a>.</p>
|
||||||
<p><a href="https://en.wikipedia.org/wiki/Bash_(Unix_shell)">Bash on Wikipedia</a>
|
<p><a href="https://en.wikipedia.org/wiki/Bash_(Unix_shell)">Bash on Wikipedia</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
<div class="ck-content">
|
<div class="ck-content">
|
||||||
<h3>Login shell</h3>
|
<h3>Login shell</h3>
|
||||||
|
|
||||||
<p>As a "login shell", Bash reads and sets (executes) the user's profile
|
<p>As a "login shell", Bash reads and sets (executes) the user's profile
|
||||||
from /etc/profile and one of ~/.bash_profile, ~/.bash_login, or ~/.profile
|
from /etc/profile and one of ~/.bash_profile, ~/.bash_login, or ~/.profile
|
||||||
(in that order, using the first one that's readable!).</p>
|
(in that order, using the first one that's readable!).</p>
|
||||||
@ -23,6 +24,7 @@
|
|||||||
that only make sense for the initial user login. That's why all UNIX® shells
|
that only make sense for the initial user login. That's why all UNIX® shells
|
||||||
have (should have) a "login" mode.</p>
|
have (should have) a "login" mode.</p>
|
||||||
<p><em><strong>Methods to start Bash as a login shell:</strong></em>
|
<p><em><strong>Methods to start Bash as a login shell:</strong></em>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>the first character of argv[0] is - (a hyphen): traditional UNIX® shells
|
<li>the first character of argv[0] is - (a hyphen): traditional UNIX® shells
|
||||||
@ -31,17 +33,20 @@
|
|||||||
<li>Bash is started with the --login option</li>
|
<li>Bash is started with the --login option</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p><em><strong>Methods to test for login shell mode:</strong></em>
|
<p><em><strong>Methods to test for login shell mode:</strong></em>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>the shell option <a href="http://wiki.bash-hackers.org/internals/shell_options#login_shell">login_shell</a> is
|
<li>the shell option <a href="http://wiki.bash-hackers.org/internals/shell_options#login_shell">login_shell</a> is
|
||||||
set</li>
|
set</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p><em><strong>Related switches:</strong></em>
|
<p><em><strong>Related switches:</strong></em>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>--noprofile disables reading of all profile files</li>
|
<li>--noprofile disables reading of all profile files</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h3>Interactive shell</h3>
|
<h3>Interactive shell</h3>
|
||||||
|
|
||||||
<p>When Bash starts as an interactive non-login shell, it reads and executes
|
<p>When Bash starts as an interactive non-login shell, it reads and executes
|
||||||
commands from ~/.bashrc. This file should contain, for example, aliases,
|
commands from ~/.bashrc. This file should contain, for example, aliases,
|
||||||
since they need to be defined in every shell as they're not inherited from
|
since they need to be defined in every shell as they're not inherited from
|
||||||
@ -51,11 +56,13 @@
|
|||||||
The classic way to have a system-wide rc file is to source /etc/bashrc
|
The classic way to have a system-wide rc file is to source /etc/bashrc
|
||||||
from every user's ~/.bashrc.</p>
|
from every user's ~/.bashrc.</p>
|
||||||
<p><em><strong>Methods to test for interactive-shell mode:</strong></em>
|
<p><em><strong>Methods to test for interactive-shell mode:</strong></em>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>the special parameter $- contains the letter i (lowercase I)</li>
|
<li>the special parameter $- contains the letter i (lowercase I)</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p><em><strong>Related switches:</strong></em>
|
<p><em><strong>Related switches:</strong></em>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>-i forces the interactive mode</li>
|
<li>-i forces the interactive mode</li>
|
||||||
@ -65,6 +72,7 @@
|
|||||||
~/.bashrc)</li>
|
~/.bashrc)</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h3>SH mode</h3>
|
<h3>SH mode</h3>
|
||||||
|
|
||||||
<p>When Bash starts in SH compatiblity mode, it tries to mimic the startup
|
<p>When Bash starts in SH compatiblity mode, it tries to mimic the startup
|
||||||
behaviour of historical versions of sh as closely as possible, while conforming
|
behaviour of historical versions of sh as closely as possible, while conforming
|
||||||
to the POSIX® standard as well. The profile files read are /etc/profile
|
to the POSIX® standard as well. The profile files read are /etc/profile
|
||||||
@ -74,6 +82,7 @@
|
|||||||
file.</p>
|
file.</p>
|
||||||
<p>After the startup files are read, Bash enters the <a href="http://wiki.bash-hackers.org/scripting/bashbehaviour#posix_run_mode">POSIX(r) compatiblity mode (for running, not for starting!)</a>.</p>
|
<p>After the startup files are read, Bash enters the <a href="http://wiki.bash-hackers.org/scripting/bashbehaviour#posix_run_mode">POSIX(r) compatiblity mode (for running, not for starting!)</a>.</p>
|
||||||
<p><em><strong>Bash starts in sh compatiblity mode when:</strong></em>
|
<p><em><strong>Bash starts in sh compatiblity mode when:</strong></em>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
<div class="ck-content">
|
<div class="ck-content">
|
||||||
<p>Documentation: <a href="http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html">http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html</a>
|
<p>Documentation: <a href="http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html">http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html</a>
|
||||||
|
|
||||||
</p><pre><code class="language-text-x-sh">#!/bin/bash
|
</p><pre><code class="language-text-x-sh">#!/bin/bash
|
||||||
|
|
||||||
# This script opens 4 terminal windows.
|
# This script opens 4 terminal windows.
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
href="https://en.wikipedia.org/wiki/Node.js#cite_note-b1-31">[31]</a>Developers can create scalable servers without using <a href="https://en.wikipedia.org/wiki/Thread_(computing)">threading</a>,
|
href="https://en.wikipedia.org/wiki/Node.js#cite_note-b1-31">[31]</a>Developers can create scalable servers without using <a href="https://en.wikipedia.org/wiki/Thread_(computing)">threading</a>,
|
||||||
by using a simplified model of <a href="https://en.wikipedia.org/wiki/Event-driven_programming">event-driven programming</a> that
|
by using a simplified model of <a href="https://en.wikipedia.org/wiki/Event-driven_programming">event-driven programming</a> that
|
||||||
uses callbacks to signal the completion of a task.<a href="https://en.wikipedia.org/wiki/Node.js#cite_note-b1-31">[31]</a>
|
uses callbacks to signal the completion of a task.<a href="https://en.wikipedia.org/wiki/Node.js#cite_note-b1-31">[31]</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -57,6 +57,7 @@ const ALLOWED_OPTIONS = new Set<OptionNames>([
|
|||||||
"headingStyle",
|
"headingStyle",
|
||||||
"autoCollapseNoteTree",
|
"autoCollapseNoteTree",
|
||||||
"autoReadonlySizeText",
|
"autoReadonlySizeText",
|
||||||
|
"customDateTimeFormat",
|
||||||
"autoReadonlySizeCode",
|
"autoReadonlySizeCode",
|
||||||
"overrideThemeFonts",
|
"overrideThemeFonts",
|
||||||
"dailyBackupEnabled",
|
"dailyBackupEnabled",
|
||||||
|
@ -33,4 +33,13 @@ describe("Share API test", () => {
|
|||||||
expect(cannotSetHeadersCount).toBe(0);
|
expect(cannotSetHeadersCount).toBe(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("renders custom share template", async () => {
|
||||||
|
const response = await supertest(app)
|
||||||
|
.get("/share/pQvNLLoHcMwH")
|
||||||
|
.expect(200);
|
||||||
|
expect(cannotSetHeadersCount).toBe(0);
|
||||||
|
expect(response.text).toContain("Content Start");
|
||||||
|
expect(response.text).toContain("Content End");
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -16,6 +16,7 @@ import type SBranch from "./shaca/entities/sbranch.js";
|
|||||||
import type SAttachment from "./shaca/entities/sattachment.js";
|
import type SAttachment from "./shaca/entities/sattachment.js";
|
||||||
import utils, { isDev, safeExtractMessageAndStackFromError } from "../services/utils.js";
|
import utils, { isDev, safeExtractMessageAndStackFromError } from "../services/utils.js";
|
||||||
import options from "../services/options.js";
|
import options from "../services/options.js";
|
||||||
|
import { t } from "i18next";
|
||||||
|
|
||||||
function getSharedSubTreeRoot(note: SNote): { note?: SNote; branch?: SBranch } {
|
function getSharedSubTreeRoot(note: SNote): { note?: SNote; branch?: SBranch } {
|
||||||
if (note.noteId === shareRoot.SHARE_ROOT_NOTE_ID) {
|
if (note.noteId === shareRoot.SHARE_ROOT_NOTE_ID) {
|
||||||
@ -135,7 +136,7 @@ function renderImageAttachment(image: SNote, res: Response, attachmentName: stri
|
|||||||
}
|
}
|
||||||
|
|
||||||
function register(router: Router) {
|
function register(router: Router) {
|
||||||
function renderNote(note: SNote, req: Request, res: Response) {
|
async function renderNote(note: SNote, req: Request, res: Response) {
|
||||||
if (!note) {
|
if (!note) {
|
||||||
console.log("Unable to find note ", note);
|
console.log("Unable to find note ", note);
|
||||||
res.status(404).render("share/404");
|
res.status(404).render("share/404");
|
||||||
@ -167,7 +168,8 @@ function register(router: Router) {
|
|||||||
subRoot,
|
subRoot,
|
||||||
assetPath: isDev ? assetPath : `../${assetPath}`,
|
assetPath: isDev ? assetPath : `../${assetPath}`,
|
||||||
appPath: isDev ? appPath : `../${appPath}`,
|
appPath: isDev ? appPath : `../${appPath}`,
|
||||||
showLoginInShareTheme
|
showLoginInShareTheme,
|
||||||
|
t
|
||||||
};
|
};
|
||||||
let useDefaultView = true;
|
let useDefaultView = true;
|
||||||
|
|
||||||
@ -182,7 +184,7 @@ function register(router: Router) {
|
|||||||
// EJS caches the result of this so we don't need to pre-cache
|
// EJS caches the result of this so we don't need to pre-cache
|
||||||
const includer = (path: string) => {
|
const includer = (path: string) => {
|
||||||
const childNote = templateNote.children.find((n) => path === n.title);
|
const childNote = templateNote.children.find((n) => path === n.title);
|
||||||
if (!childNote) throw new Error("Unable to find child note.");
|
if (!childNote) throw new Error(`Unable to find child note: ${path}.`);
|
||||||
if (childNote.type !== "code" || childNote.mime !== "application/x-ejs") throw new Error("Incorrect child note type.");
|
if (childNote.type !== "code" || childNote.mime !== "application/x-ejs") throw new Error("Incorrect child note type.");
|
||||||
|
|
||||||
const template = childNote.getContent();
|
const template = childNote.getContent();
|
||||||
@ -195,11 +197,10 @@ function register(router: Router) {
|
|||||||
try {
|
try {
|
||||||
const content = templateNote.getContent();
|
const content = templateNote.getContent();
|
||||||
if (typeof content === "string") {
|
if (typeof content === "string") {
|
||||||
import("ejs").then((ejs) => {
|
const ejs = await import("ejs");
|
||||||
const ejsResult = ejs.render(content, opts, { includer });
|
const ejsResult = ejs.render(content, opts, { includer });
|
||||||
res.send(ejsResult);
|
res.send(ejsResult);
|
||||||
useDefaultView = false; // Rendering went okay, don't use default view
|
useDefaultView = false; // Rendering went okay, don't use default view
|
||||||
});
|
|
||||||
}
|
}
|
||||||
} catch (e: unknown) {
|
} catch (e: unknown) {
|
||||||
const [errMessage, errStack] = safeExtractMessageAndStackFromError(e);
|
const [errMessage, errStack] = safeExtractMessageAndStackFromError(e);
|
||||||
|
12
packages/ckeditor5/src/icons/date-time.svg
Normal file
12
packages/ckeditor5/src/icons/date-time.svg
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||||
|
<svg fill="#000000" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="800px" height="800px" viewBox="0 0 52 52" enable-background="new 0 0 52 52" xml:space="preserve">
|
||||||
|
<path d="M43.6,6.8h-4V5.2c0-1.8-1.4-3.2-3.2-3.2c-1.8,0-3.2,1.4-3.2,3.2v1.6H18.8V5.2c0-1.8-1.4-3.2-3.2-3.2
|
||||||
|
s-3.2,1.4-3.2,3.2v1.6h-4c-2.6,0-4.8,2.2-4.8,4.8v1.6c0,0.9,0.7,1.6,1.6,1.6h41.6c0.9,0,1.6-0.7,1.6-1.6v-1.6
|
||||||
|
C48.4,9,46.2,6.8,43.6,6.8z"/>
|
||||||
|
<path d="M46.8,19.6H5.2c-0.9,0-1.6,0.7-1.6,1.6v24c0,2.6,2.2,4.8,4.8,4.8h35.2c2.6,0,4.8-2.2,4.8-4.8v-24
|
||||||
|
C48.4,20.3,47.7,19.6,46.8,19.6z M26,46.7c-6.6,0-11.9-5.4-11.9-11.9c0-6.6,5.4-11.9,11.9-11.9s11.9,5.4,11.9,11.9
|
||||||
|
C37.9,41.4,32.6,46.7,26,46.7z"/>
|
||||||
|
<path d="M27.2,34.3v-5.1c0-0.4-0.4-0.8-0.8-0.8h-0.8c-0.4,0-0.8,0.4-0.8,0.8v5.6c0,0.3,0.1,0.6,0.4,0.8l3.8,3.8
|
||||||
|
c0.3,0.3,0.8,0.3,1.1,0l0.6-0.6c0.3-0.3,0.3-0.8,0-1.1L27.2,34.3z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 958 B |
@ -5,6 +5,7 @@ import UploadimagePlugin from "./plugins/uploadimage.js";
|
|||||||
import ItalicAsEmPlugin from "./plugins/italic_as_em.js";
|
import ItalicAsEmPlugin from "./plugins/italic_as_em.js";
|
||||||
import StrikethroughAsDel from "./plugins/strikethrough_as_del.js";
|
import StrikethroughAsDel from "./plugins/strikethrough_as_del.js";
|
||||||
import InternalLinkPlugin from "./plugins/internallink.js";
|
import InternalLinkPlugin from "./plugins/internallink.js";
|
||||||
|
import InsertDateTimePlugin from "./plugins/insert_date_time.js";
|
||||||
import ReferenceLink from "./plugins/referencelink.js";
|
import ReferenceLink from "./plugins/referencelink.js";
|
||||||
import RemoveFormatLinksPlugin from "./plugins/remove_format_links.js";
|
import RemoveFormatLinksPlugin from "./plugins/remove_format_links.js";
|
||||||
import IndentBlockShortcutPlugin from "./plugins/indent_block_shortcut.js";
|
import IndentBlockShortcutPlugin from "./plugins/indent_block_shortcut.js";
|
||||||
@ -36,6 +37,7 @@ const TRILIUM_PLUGINS: typeof Plugin[] = [
|
|||||||
ItalicAsEmPlugin,
|
ItalicAsEmPlugin,
|
||||||
StrikethroughAsDel,
|
StrikethroughAsDel,
|
||||||
InternalLinkPlugin,
|
InternalLinkPlugin,
|
||||||
|
InsertDateTimePlugin,
|
||||||
RemoveFormatLinksPlugin,
|
RemoveFormatLinksPlugin,
|
||||||
IndentBlockShortcutPlugin,
|
IndentBlockShortcutPlugin,
|
||||||
MarkdownImportPlugin,
|
MarkdownImportPlugin,
|
||||||
|
31
packages/ckeditor5/src/plugins/insert_date_time.ts
Normal file
31
packages/ckeditor5/src/plugins/insert_date_time.ts
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
import { ButtonView, Plugin } from 'ckeditor5';
|
||||||
|
import dateTimeIcon from '../icons/date-time.svg?raw';
|
||||||
|
|
||||||
|
export default class InsertDateTimePlugin extends Plugin {
|
||||||
|
init() {
|
||||||
|
const editor = this.editor;
|
||||||
|
|
||||||
|
editor.ui.componentFactory.add('dateTime', locale => {
|
||||||
|
const view = new ButtonView( locale );
|
||||||
|
|
||||||
|
view.set( {
|
||||||
|
label: 'Date time',
|
||||||
|
icon: dateTimeIcon,
|
||||||
|
tooltip: true
|
||||||
|
} );
|
||||||
|
|
||||||
|
// enable internal link only if the editor is not read only
|
||||||
|
view.bind('isEnabled').to(editor, 'isReadOnly', isReadOnly => !isReadOnly);
|
||||||
|
|
||||||
|
view.on('execute', () => {
|
||||||
|
const editorEl = editor.editing.view.getDomRoot();
|
||||||
|
const component = glob.getComponentByEl(editorEl);
|
||||||
|
|
||||||
|
component.triggerCommand('insertDateTimeToText');
|
||||||
|
editor.editing.view.focus();
|
||||||
|
} );
|
||||||
|
|
||||||
|
return view;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -47,6 +47,7 @@ export interface OptionDefinitions extends KeyboardShortcutsOptions<KeyboardActi
|
|||||||
passwordDerivedKeySalt: string;
|
passwordDerivedKeySalt: string;
|
||||||
encryptedDataKey: string;
|
encryptedDataKey: string;
|
||||||
hoistedNoteId: string;
|
hoistedNoteId: string;
|
||||||
|
customDateTimeFormat: string;
|
||||||
|
|
||||||
// Multi-Factor Authentication
|
// Multi-Factor Authentication
|
||||||
mfaEnabled: boolean;
|
mfaEnabled: boolean;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user