├── .gitignore ├── .github ├── FUNDING.yml ├── release.yml ├── dependabot.yml └── workflows │ └── publish.yml ├── src ├── menu │ ├── lib.ts │ ├── RecodePageTop.ts │ ├── property.ts │ └── combination.ts ├── batchTileView │ ├── embed │ │ ├── advancedQuery.ts │ │ └── generateBlock.ts │ ├── lib.ts │ └── handle.ts ├── update.ts ├── lib │ ├── slashCommand.ts │ └── sort.ts ├── lib.ts ├── translations │ ├── zh-CN.json │ ├── zh-Hant.json │ ├── ja.json │ ├── ko.json │ ├── nb-NO.json │ ├── tr.json │ ├── sk.json │ ├── pl.json │ ├── af.json │ ├── id.json │ ├── uk.json │ ├── ru.json │ ├── pt-BR.json │ ├── nl.json │ ├── pt-PT.json │ ├── fr.json │ ├── it.json │ ├── es.json │ └── de.json ├── settings.ts └── index.ts ├── vite.config.ts ├── index.html ├── release.config.js ├── LICENSE ├── package.json ├── readme.ja.md ├── icon.svg ├── readme.md ├── tsconfig.json └── CHANGELOG.md /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | dist 4 | *.sublime-* 5 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [YU000jp] 2 | buy_me_a_coffee: yu000japan 3 | -------------------------------------------------------------------------------- /.github/release.yml: -------------------------------------------------------------------------------- 1 | # Add .github/release.yml to integrate with GitHub Releases 2 | $ github-label-setup --addReleaseYml -------------------------------------------------------------------------------- /src/menu/lib.ts: -------------------------------------------------------------------------------- 1 | // 「hls__」と「hls/」をPDF/に変換する 2 | // 「/」を「 / 」に変換する 3 | export const pageTitleSlash = (pageName: string) => pageName.replace("hls__", "PDF/").replace("hls/", "PDF/").replaceAll("/", " / ") 4 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite"; 2 | import logseqDevPlugin from "vite-plugin-logseq"; 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [logseqDevPlugin()], 7 | // Makes HMR available for development 8 | build: { 9 | target: "esnext", 10 | minify: "esbuild", 11 | }, 12 | }); 13 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Logseq Plugin: 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "" # See documentation for possible values 9 | directory: "/" # Location of package manifests 10 | schedule: 11 | interval: "weekly" 12 | 13 | -------------------------------------------------------------------------------- /release.config.js: -------------------------------------------------------------------------------- 1 | 2 | var PLUGIN_NAME = 'logseq-plugin-quickly-para-method' 3 | 4 | module.exports = { 5 | branches: ['main'], 6 | plugins: [ 7 | ['@semantic-release/commit-analyzer', { 8 | preset: 'conventionalcommits', 9 | }], 10 | '@semantic-release/release-notes-generator', 11 | '@semantic-release/changelog', 12 | '@semantic-release/git', 13 | ['@semantic-release/exec', { 14 | prepareCmd: 15 | `zip -qq -r ${PLUGIN_NAME}-` + "${nextRelease.version}.zip dist icon.svg package.json README.md LICENSE", 16 | }], 17 | ['@semantic-release/github', { 18 | assets: `${PLUGIN_NAME}-*.zip`, 19 | fail: false, 20 | failComment: false, 21 | failTitle: false, 22 | }], 23 | ], 24 | } 25 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | env: 3 | PLUGIN_NAME: ${{ github.event.repository.name }} 4 | on: 5 | # Allows you to run this workflow manually from the Actions tab 6 | workflow_dispatch: 7 | jobs: 8 | release: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout 12 | uses: actions/checkout@v3 13 | with: 14 | fetch-depth: 0 15 | 16 | - name: Setup Node.js environment 17 | uses: actions/setup-node@v3.6.0 18 | with: 19 | node-version: latest 20 | 21 | - name: Setup pnpm 22 | uses: pnpm/action-setup@v4 23 | with: 24 | version: latest 25 | 26 | - name: Install dependencies 27 | run: pnpm install 28 | 29 | - name: Build dist 30 | run: pnpm prod 31 | 32 | - name: Install zip 33 | uses: montudor/action-zip@v1 34 | 35 | - name: Release 36 | env: 37 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 38 | run: npx semantic-release 39 | 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2023 YU000jp 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/batchTileView/embed/advancedQuery.ts: -------------------------------------------------------------------------------- 1 | 2 | export const advancedQuery = async (query: string, ...input: Array): Promise => { 3 | try { 4 | return (await logseq.DB.datascriptQuery(query, ...input) as any)?.flat() 5 | } catch (err: any) { 6 | console.warn(err) 7 | } 8 | return null 9 | } 10 | 11 | export const queryCodeContainsTag = ` 12 | [:find (pull ?p [:block/name]) 13 | :in $ ?t 14 | :where 15 | [?p :block/name ?name] 16 | [?p :block/properties ?props] 17 | [(get ?props :tags) ?tags] 18 | [(contains? ?tags ?t)]]` 19 | 20 | export const queryCodeUpdatedAtFromPageName = ` 21 | [:find (pull ?p [:block/original-name :block/updated-at]) 22 | :in $ ?name 23 | :where 24 | [?t :block/name ?name] 25 | [?p :block/tags ?t]] 26 | ` 27 | 28 | export const queryCodeContainsDoubleTags = ` 29 | [:find (pull ?b [:block/name]) 30 | :in $ ?tag1 ?tag2 31 | :where 32 | [?b :block/original-name ?name] 33 | [?b :block/properties ?props] 34 | [(get ?props :tags) ?tags] 35 | [(contains? ?tags ?tag1)] 36 | [(contains? ?tags ?tag2)]] 37 | ` 38 | 39 | -------------------------------------------------------------------------------- /src/update.ts: -------------------------------------------------------------------------------- 1 | import { t } from "logseq-l10n" 2 | 3 | export const update20231023ChangeSplit = () => { 4 | if (!logseq.settings!.breakingChanges20231023) { 5 | //logseq.settings!.selectionListの区切り方を、「,」から改行に変更する 6 | const pickList = logseq.settings!.pickList ? logseq.settings!.pickList : String(logseq.settings!.selectionList).includes(",") ? String(logseq.settings!.selectionList).replaceAll(",", "\n") : logseq.settings!.selectionList 7 | setTimeout(() => logseq.updateSettings({ 8 | pickList, 9 | selectionList: null, 10 | breakingChanges20231023: true 11 | }), 12 | 10) 13 | const dateString = new Date("2023/10/23").toLocaleDateString() 14 | logseq.UI.showMsg(`⚓ ${t("Quickly PARA method Plugin")}\n Big update!! ${dateString}`, "info") 15 | } 16 | } 17 | 18 | export const update20250118Change = () => { 19 | const keyword = "breakingChanges20250118" 20 | if (!logseq.settings![keyword]) { 21 | logseq.Editor.deletePage("Quickly-PARA-Method-Plugin/Areas of Responsibility") 22 | setTimeout(() => 23 | logseq.updateSettings({ [keyword]: true }) 24 | , 10) 25 | logseq.UI.showMsg("Fixed a bug regarding The board functionality. Some caches have been removed. You may need to reload on the board.\n\nQuickly PARA Method plugin", "info", { timeout: 5000 }) 26 | setTimeout(() => 27 | logseq.Editor.createPage("Quickly-PARA-Method-Plugin/Areas of responsibility", { public: false }, { redirect: false, createFirstBlock: true, journal: false }) 28 | , 1000) 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "logseq-plugin-quickly-para-method", 3 | "description": "Provides workflows for the PARA method. It quickly adds page-tags property.", 4 | "repository": "https://github.com/YU000jp/logseq-plugin-quickly-para-method.git", 5 | "author": "YU000jp", 6 | "license": "MIT", 7 | "logseq": { 8 | "title": "Quickly PARA Method", 9 | "icon": "./icon.svg", 10 | "main": "./dist/index.html", 11 | "id": "logseq-plugin-quickly-para-method" 12 | }, 13 | "effect": true, 14 | "private": true, 15 | "scripts": { 16 | "preinstall": "npx only-allow pnpm", 17 | "clean": "rm -r ./dist/* || true", 18 | "dev": "vite", 19 | "build": "tsc && vite build --mode=dev", 20 | "prod": "npm run clean && vite build" 21 | }, 22 | "dependencies": { 23 | "@logseq/libs": "^0.0.17", 24 | "date-fns": "^3.0.6", 25 | "logseq-l10n": "^0.2.0" 26 | }, 27 | "devDependencies": { 28 | "@semantic-release/changelog": "^6.0.3", 29 | "@semantic-release/exec": "^6.0.3", 30 | "@semantic-release/git": "^10.0.1", 31 | "@types/node": "^20.10.6", 32 | "conventional-changelog-conventionalcommits": "^7.0.2", 33 | "cz-conventional-changelog": "^3.3.0", 34 | "jest": "^29.7.0", 35 | "npx": "^10.2.2", 36 | "rollup-plugin-string": "^3.0.0", 37 | "semantic-release": "^22.0.12", 38 | "typescript": "^5.3.3", 39 | "vite": "^5.4.21", 40 | "vite-plugin-logseq": "^1.1.2" 41 | }, 42 | "config": { 43 | "commitizen": { 44 | "path": "cz-conventional-changelog" 45 | } 46 | }, 47 | "commitlint": { 48 | "extends": [ 49 | "@commitlint/config-conventional" 50 | ] 51 | }, 52 | "husky": { 53 | "hooks": { 54 | "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /src/lib/slashCommand.ts: -------------------------------------------------------------------------------- 1 | import { BlockEntity, PageEntity } from "@logseq/libs/dist/LSPlugin.user" 2 | import { t } from "logseq-l10n" //https://github.com/sethyuan/logseq-l10n 3 | import { getPageEntityFromBlockUuid } from "../lib" 4 | import { updatePageProperty } from '../menu/property' 5 | 6 | export const slashCommandItems = () => { 7 | 8 | // スラッシュコマンドは、翻訳禁止! 9 | logseq.Editor.registerSlashCommand("✈️ Page-Tag [Projects]", async ({ uuid }) => { 10 | run(uuid, "Projects", "PARA") 11 | }) 12 | logseq.Editor.registerSlashCommand("🏠 Page-Tag [Areas of responsibility]", async ({ uuid }) => { 13 | run(uuid, "Areas of responsibility", "PARA") 14 | }) 15 | logseq.Editor.registerSlashCommand("🌍 Page-Tag [Resources]", async ({ uuid }) => { 16 | run(uuid, "Resources", "PARA") 17 | }) 18 | logseq.Editor.registerSlashCommand("🧹 Page-Tag [Archives]", async ({ uuid }) => { 19 | run(uuid, "Archives", "PARA") 20 | }) 21 | } 22 | 23 | export const run = async (uuid: string, addPropValue: string, propName: string) => { 24 | //右サイドバーに開いたブロックからスラッシュコマンドを実行した場合の処理 25 | const page = await getPageEntityFromBlockUuid(uuid) as { journal?: PageEntity["journal?"], originalName: PageEntity["originalName"], properties: PageEntity["properties"] } | null 26 | if (page) { 27 | //cancel same page 28 | if (page.originalName === addPropValue) 29 | return logseq.UI.showMsg(t("The current page does not need to be tagged."), "warning") // 現在のページにはタグを付ける必要がありません。 30 | //日誌はキャンセル 31 | if (page['journal?'] === true) 32 | return logseq.UI.showMsg(t("Journals cannot be tagged."), "warning") // 日誌にはタグを付けることができません。 33 | 34 | const getCurrentTree = await logseq.Editor.getPageBlocksTree(page.originalName) as BlockEntity[] | null 35 | //ページプロパティに追加(更新をおこなう) 36 | if (getCurrentTree) 37 | await updatePageProperty(addPropValue, page, propName, getCurrentTree[0].uuid) 38 | } else 39 | logseq.UI.showMsg(t("The current page is not found."), "warning") // 現在のページが見つかりません。 40 | } 41 | 42 | -------------------------------------------------------------------------------- /src/lib/sort.ts: -------------------------------------------------------------------------------- 1 | import { BlockEntity } from '@logseq/libs/dist/LSPlugin.user' 2 | import { format } from 'date-fns' 3 | import { t } from 'logseq-l10n' 4 | 5 | //月ごとにソートする場合 6 | 7 | export const sortByMonth = async (blocks: BlockEntity[], insertContent: string): Promise => { 8 | 9 | //同じ月のサブ行がある場合はそのブロックのサブ行に追記する 10 | const monthFormat = format(new Date(), "yyyy/MM") 11 | const firstBlock = blocks[0] as { uuid: BlockEntity["uuid"]; children: BlockEntity["children"]} 12 | const children = firstBlock.children as BlockEntity[] 13 | //childrenのcontentが日付フォーマットと一致するか確認(先頭が 「### 」から始まる) 14 | const monthString = logseq.settings!.sortByMonthLink ? 15 | `### [[${monthFormat}]]` 16 | : `### ${monthFormat}` 17 | if (children 18 | && children.length > 0) { 19 | 20 | const child = children.find(child => child.content.startsWith(monthString)) 21 | if (child) { 22 | //マッチした場合 23 | //insertContentがすでにサブ行に記録されていないか調べる 24 | const subChildren = child.children as BlockEntity[] | undefined 25 | if (subChildren 26 | && subChildren.length > 0 27 | && subChildren.find(subChild => subChild.content === insertContent)) { 28 | logseq.UI.showMsg("Already mentioned.", "warning") // すでに記載されている 29 | return false 30 | } else { 31 | //そのブロックのサブ行に追記する 32 | await logseq.Editor.insertBlock(child.uuid, insertContent, { sibling: false }) 33 | return true 34 | // ここで成功として終了 35 | } 36 | } 37 | } 38 | 39 | //マッチしない場合 40 | //先頭行の下に、新しいブロックを作成して月分類のブロックを作成し、その中にサブ行を追記する 41 | const newBlock = await logseq.Editor.insertBlock(firstBlock.uuid, monthString, { sibling: false }) as { uuid: BlockEntity["uuid"]} | null // ブロックのサブ行に追記 42 | if (!newBlock) { 43 | //年のためエラー処理 44 | logseq.UI.showMsg("For some reason, it was not possible to create a new block in the first block on the page.", "error") 45 | return false 46 | } 47 | // ブロックのサブ行に追記 48 | await logseq.Editor.insertBlock(newBlock.uuid, insertContent, { sibling: false }) 49 | return true 50 | } 51 | -------------------------------------------------------------------------------- /src/menu/RecodePageTop.ts: -------------------------------------------------------------------------------- 1 | import { BlockEntity } from '@logseq/libs/dist/LSPlugin.user' 2 | import { format } from 'date-fns' 3 | import { t } from "logseq-l10n" //https://github.com/sethyuan/logseq-l10n 4 | import { removeEmptyBlockFirstLineAll } from '../lib' 5 | import { sortByMonth } from '../lib/sort' 6 | 7 | 8 | /** 9 | * 指定されたページの最初の行に、日付リンクともとのページ名リンクを追加する 10 | * @param userDateFormat ユーザーが設定した日付形式 11 | * @param targetPageName 日付リンク 12 | * @param pushPageLink 元のページ名リンク 13 | */ 14 | 15 | export const RecodeDateToPageTop = async (userDateFormat: string, targetPageName: string, pushPageLink: string, flagRepeat?: boolean): Promise => { 16 | const blocks = await logseq.Editor.getPageBlocksTree(targetPageName) as BlockEntity[] 17 | if (blocks.length > 0) { 18 | 19 | const flagArchives: boolean = logseq.settings!.archivesDone === true 20 | && targetPageName === "Archives" 21 | 22 | //先頭行の子孫にある空ブロックを削除 23 | await removeEmptyBlockFirstLineAll(blocks[0]) 24 | 25 | const insertContent = `${flagArchives === true ? "DONE" : "" // Archivesページの場合はDONEを追加 26 | } [[${format(new Date(), userDateFormat) //日付リンク 27 | }]] ${logseq.settings!.sortByMonthSeparator} ${pushPageLink // もとのページ名リンク 28 | }` 29 | 30 | if (logseq.settings!.sortByMonth === true) { 31 | 32 | //月ごとのソートをする場合 33 | const success: boolean = await sortByMonth(blocks, insertContent) 34 | if (success === false) return false 35 | 36 | } else 37 | // 先頭行の下に追記する 38 | await logseq.Editor.insertBlock(blocks[0].uuid, insertContent, { sibling: false }) // ブロックのサブ行に追記 39 | 40 | 41 | if (flagArchives === true) logseq.UI.showMsg(t("[DONE] marked and added date to the top of the page"), "success", { timeout: 3000 }) 42 | else logseq.UI.showMsg(t("Added date to the top of the page"), "success", { timeout: 3000 }) 43 | 44 | return true 45 | } else { 46 | if (flagRepeat) { 47 | logseq.UI.showMsg("Can not get the current page", "warning") // 無限ループを防ぐ 48 | return false 49 | } 50 | 51 | // ページが存在しない場合は作成 52 | if (await logseq.Editor.createPage(targetPageName, "", { createFirstBlock: true, redirect: true })) 53 | // 作成したら再度実行 54 | setTimeout(() => RecodeDateToPageTop(userDateFormat, targetPageName, pushPageLink, true), 100) 55 | } 56 | return false 57 | } 58 | -------------------------------------------------------------------------------- /src/batchTileView/lib.ts: -------------------------------------------------------------------------------- 1 | 2 | import { keyLeftMenu, mainPageTitle, shortKey } from '..' 3 | 4 | 5 | export const addLeftMenuNavHeaderForEachPARA = () => { 6 | const paraItems = [ 7 | { 8 | icon: "✈️", 9 | suffix: "projects", 10 | title: "Projects" 11 | }, 12 | { 13 | icon: "🏠", 14 | suffix: "areas", 15 | title: "Areas of responsibility" 16 | }, 17 | { 18 | icon: "🌍", 19 | suffix: "resources", 20 | title: "Resources" 21 | }, 22 | { 23 | icon: "🧹", 24 | suffix: "archives", 25 | title: "Archives" 26 | }, 27 | ] 28 | 29 | paraItems.forEach(item => addLeftMenuNavHeader(keyLeftMenu + "-" + item.suffix, item.icon, item.title, mainPageTitle)) 30 | } 31 | 32 | const addLeftMenuNavHeader = (divId: string, icon: string, title: string, baseName: string) => { 33 | try { 34 | clearEle(divId) 35 | } finally { 36 | const leftSidebarElement = parent.document.querySelector("#left-sidebar div.nav-header") as HTMLElement | null 37 | if (leftSidebarElement) { 38 | const div = document.createElement("div") 39 | div.id = divId 40 | div.className = `${shortKey}--nav-header` 41 | leftSidebarElement.appendChild(div) 42 | 43 | const anchor = document.createElement("a") 44 | anchor.className = "item group flex items-center text-sm font-medium rounded-md" 45 | 46 | // ページを開く 47 | setTimeout(() => { 48 | anchor.addEventListener("click", () => logseq.App.pushState('page', { name: (baseName + "/" + title) })) 49 | }, 400) 50 | 51 | div.appendChild(anchor) 52 | 53 | const spanIcon = document.createElement("span") 54 | spanIcon.className = "ui__icon ti ls-icon-files" 55 | spanIcon.textContent = icon 56 | anchor.appendChild(spanIcon) 57 | 58 | const span = document.createElement("span") 59 | span.className = ("flex-1") 60 | span.textContent = title 61 | anchor.appendChild(span) 62 | } 63 | } 64 | } 65 | 66 | 67 | export const clearEleAll = (selector: string) => { 68 | const ele = parent.document.body.querySelectorAll(selector) as NodeListOf 69 | ele.forEach((e) => e.remove()) 70 | } 71 | 72 | export const clearEle = (selector: string) => { 73 | const ele = parent.document.getElementById(selector) as HTMLElement | null 74 | if (ele) ele.remove() 75 | } 76 | 77 | export const hideMainContent = (selector: string) => { 78 | const ele = parent.document.querySelector(selector) as HTMLElement 79 | if (ele) 80 | ele.style.display = "none" 81 | } 82 | 83 | // const removeProvideStyle = (className: string) => { 84 | // const doc = parent.document.head.querySelector( 85 | // `style[data-injected-style^="${className}"]` 86 | // ) as HTMLStyleElement 87 | // if (doc) doc.remove() 88 | // } 89 | 90 | -------------------------------------------------------------------------------- /src/batchTileView/handle.ts: -------------------------------------------------------------------------------- 1 | import { BlockEntity } from '@logseq/libs/dist/LSPlugin.user' 2 | import { t } from 'logseq-l10n' 3 | import { keyPageBarId, keyReloadButton, keySettingsButton, keyToggleButton, mainPageTitle, mainPageTitleLower } from '../.' 4 | import { generateEmbed } from './embed/generateBlock' 5 | 6 | let now = false 7 | // ページを開いたとき 8 | let isProcessingRootChanged = false 9 | 10 | export const handleRouteChange = async (path: string, template: string) => { 11 | 12 | if (template !== "/page/:name" //ページ以外は除外 13 | || isProcessingRootChanged) return 14 | isProcessingRootChanged = true 15 | setTimeout(() => isProcessingRootChanged = false, 100) 16 | 17 | const pageName = path.replace(/^\/page\//, "") 18 | 19 | // pageName が mainPageTitle/Projects などの場合 20 | const pageNameArray = pageName.split("%2F") 21 | 22 | const type = pageNameArray[1] 23 | // console.log("pageNameArray[0]", pageNameArray[0]) 24 | 25 | 26 | if (pageNameArray[0] === mainPageTitle && type !== undefined) { 27 | // mainPageTitleの場合 28 | now = true 29 | // console.log("pageNameArray", pageNameArray) 30 | await updateMainContent(type, pageNameArray.join("/")) 31 | 32 | } else 33 | if (now === true) { 34 | now = false 35 | // 必ずHomeに移動してしまうバグがあるためdeletePage()は使えないので、ブロックのみを削除 36 | const blockEntities = await logseq.Editor.getPageBlocksTree(mainPageTitle) as { uuid: BlockEntity["uuid"], children: BlockEntity["children"] }[] | null 37 | if (blockEntities) { 38 | await logseq.Editor.updateBlock(blockEntities[0].uuid, "", {}) 39 | if (blockEntities[0]) { 40 | const children = blockEntities[0].children as { uuid: BlockEntity["uuid"] }[] | undefined 41 | if (children) 42 | for (const child of children) 43 | await logseq.Editor.removeBlock(child.uuid) 44 | 45 | } 46 | } 47 | } 48 | } 49 | 50 | export const updateMainContent = async (type: string, pageName: string) => { 51 | const blocks = await logseq.Editor.getCurrentPageBlocksTree() as { uuid: BlockEntity["uuid"] }[] 52 | if (blocks) 53 | await generateEmbed(type, pageName, blocks) 54 | } 55 | 56 | export const AddMenuButton = () => { 57 | // ページバーにボタンを追加 58 | logseq.App.registerUIItem('pagebar', { 59 | key: keyPageBarId, 60 | template: ` 61 |
62 | 63 | 64 | 65 |
66 | 74 | `, 75 | }) 76 | } 77 | -------------------------------------------------------------------------------- /src/lib.ts: -------------------------------------------------------------------------------- 1 | import { BlockEntity, PageEntity } from '@logseq/libs/dist/LSPlugin.user' 2 | import { t } from "logseq-l10n" //https://github.com/sethyuan/logseq-l10n 3 | 4 | 5 | // UuidからPageEntityを取得 (右サイドバー or メインコンテンツ) 6 | export const getPageEntityFromBlockUuid = async (uuid: string) => { 7 | const block = await logseq.Editor.getBlock(uuid) as { page: BlockEntity["page"] } | null 8 | if (!block) return null 9 | return await logseq.Editor.getPage(block.page.id) as { journal?: PageEntity["journal?"], originalName: PageEntity["originalName"], properties: PageEntity["properties"] } | null 10 | } 11 | 12 | // ポップアップ削除 キー固定 13 | export const removePopup = () => { 14 | const element = parent.document.getElementById("quickly-para-method--openQuickly") as HTMLDivElement | null 15 | if (element) element.remove() 16 | } 17 | 18 | 19 | // ページ名リンクをコピー 20 | export const copyPageTitleLink = async () => { 21 | const page = await logseq.Editor.getCurrentPage() as { originalName: PageEntity["originalName"] } | null 22 | if (page) { 23 | const text: string = `[[${page.originalName}]]` 24 | // focus the window 25 | window.focus() 26 | navigator.clipboard.writeText(text) 27 | logseq.UI.showMsg(t("Copy current full page name to clipboard"), "success") 28 | } 29 | } 30 | 31 | // ページ名からページを開く (Shiftキーで右サイドバーに開く) 32 | export const openPageFromPageName = async (pageName: string, shiftKey: boolean) => { 33 | if (shiftKey === true) { 34 | const page = await logseq.Editor.getPage(pageName) as PageEntity | null 35 | if (page) { 36 | logseq.Editor.openInRightSidebar(page.uuid) //ページが存在しない場合は開かない 37 | logseq.UI.showMsg(t("Opened page in right sidebar") + "\n\n" + pageName, "success", { timeout: 1900 }) 38 | } 39 | else return logseq.UI.showMsg(t("Page not found"), "error") 40 | } else { 41 | logseq.UI.showMsg(t("Opened page in main content") + "\n\n" + pageName, "success", { timeout: 1900 }) 42 | logseq.App.replaceState('page', { name: pageName }) 43 | } 44 | removePopup() 45 | } 46 | 47 | 48 | export const createPageForPARA = async (name: string, icon: string, para: boolean) => { 49 | const getPage = await logseq.Editor.getPage(name) as PageEntity | null 50 | if (getPage === null) { 51 | if (para === true) logseq.Editor.createPage(name, { icon }, { createFirstBlock: true, }) //PARAページの作成、タグをつける 52 | else logseq.Editor.createPage(name, { icon, }, { createFirstBlock: true, }) 53 | // ページが作成されました。 54 | logseq.UI.showMsg(t("Page created.") + "\n\n" + name, "success", { timeout: 1900 }) 55 | } 56 | } 57 | 58 | 59 | /** 60 | * ページ名やプロパティ名を変更する関数 メッセージ付き 61 | * @param oldName - 変更前のプロパティ名 62 | * @param newName - 変更後のプロパティ名 63 | * @returns Promise 64 | */ 65 | export const renamePageAndProperty = async (oldName: string, newName: string) => { 66 | const oldPage = await logseq.Editor.getPage(oldName) as { uuid: PageEntity["uuid"] } | null 67 | if (!oldPage) return 68 | logseq.Editor.renamePage(oldName, newName) 69 | logseq.UI.showMsg(`${t("Renamed page")}`, "success") 70 | } 71 | 72 | 73 | /** 74 | * 先頭行が空のブロックを全て削除する。 75 | * @param block0 - 削除対象のブロックツリーの先頭ブロック 76 | */ 77 | export const removeEmptyBlockFirstLineAll = async (firstBlock: BlockEntity) => { 78 | const children = firstBlock.children as BlockEntity[] 79 | if (children 80 | && children.length > 0) { 81 | for (let i = 0; i < children.length; i++) { 82 | const child = children[i] 83 | if (child.content === "") 84 | await logseq.Editor.removeBlock(child.uuid) 85 | // 子孫ブロックがある場合は探索する 86 | if (child.children 87 | && child.children.length > 0) 88 | await removeEmptyBlockFirstLineAll((child.children as BlockEntity[])[0]) 89 | } 90 | } 91 | } 92 | 93 | -------------------------------------------------------------------------------- /src/translations/zh-CN.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "通过 embed 批量显示带有页面标签的页面的 Board。", 3 | "Add a button to the left menu bar to access this plugin": "在左侧菜单栏添加一个按钮以访问此插件", 4 | "Add date and link to the first block of the page": "添加日期并链接到页面的第一个块", 5 | "Add only date to the first block": "仅向第一个块添加日期", 6 | "Added date to the top of the page": "将日期添加到页面顶部", 7 | "Archives > Add DONE marker": "存档 > 添加 DONE 标记", 8 | "Board": "板", 9 | "Batch board configuration": "Batch 板配置", 10 | "Cancel": "取消", 11 | "Category by included word": "按包含的单词分类", 12 | "Change style": "更改样式", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "按页面标题中包含的单词进行分类和排序。写入以换行符分隔。", 14 | "Click the page title to open the page.": "单击页面标题以打开页面。", 15 | "Combination Menu": "组合菜单", 16 | "Common settings": "通用设置", 17 | "Copy current full page name to clipboard": "将当前完整页面名称复制到剪贴板", 18 | "Create a new page": "创建新页面", 19 | "Page created.": "页面已创建。", 20 | "Enable slash commands": "启用 slash 命令", 21 | "Hover over the page title to display a tooltip.": "将鼠标悬停在页面标题上可显示工具提示。", 22 | "If enabled": "如果已启用", 23 | "Journals cannot be tagged.": "日记帐不能被标记。", 24 | "Link to the month page": "链接到月份页面", 25 | "List": "列表", 26 | "Loading...": "装载。。。", 27 | "Menu": "菜单", 28 | "Menu > Pick-list options": "菜单 > 选择列表选项", 29 | "order by name": "按名称排序", 30 | "New page": "新建页面", 31 | "New page using the sub page name (namespace)": "使用子页面名称 (namespace) 的新页面", 32 | "No need to tag the current page.": "无需标记当前页面。", 33 | "No page found": "未找到页面", 34 | "No pages found for this page name.": "找不到此页面名称的页面。", 35 | "No pages found for this page tag.": "未找到此 page 标签的页面。", 36 | "Open PARA method menu": "打开 PARA 方法菜单", 37 | "Open the list": "打开列表", 38 | "Opened page in main content": "在主要内容中打开的页面", 39 | "Opened page in right sidebar": "在右侧边栏中打开的页面", 40 | "Or from the toolbar": "或从工具栏", 41 | "Others": "别人", 42 | "Page already exists.": "页面已存在。", 43 | "Page not found": "找不到页面", 44 | "Page style": "页面样式", 45 | "Page-Tag": "页面标记", 46 | "Pages tagged with": "标记 的页面", 47 | "Pages that contain the same name as the page name are displayed.": "将显示包含与页面名称相同的页面。", 48 | "Pages with that tag appear in the list.": "带有该标签的页面会显示在列表中。", 49 | "Pick List": "选择列表", 50 | "Please set the pick list in the plugin settings.": "请在插件设置中设置选择列表。", 51 | "Plugin": "插件", 52 | "Plugin settings": "插件设置", 53 | "Press Shift key at the same time to open in sidebar": "同时按 Shift 键在侧边栏中打开", 54 | "Quickly PARA method Plugin": "快速 PARA 方法插件", 55 | "Reload": "重新加载", 56 | "Renamed page": "重命名的页面", 57 | "Same level": "同级别", 58 | "Separator character": "分隔符", 59 | "Sort by month": "按月排序", 60 | "Sub page": "子页面", 61 | "Submit": "提交", 62 | "Tag": "日", 63 | "Tag the current page (Page-tag)": "标记当前页面 (Page-tag)", 64 | "The Expansion style is a style that expands on the underside.": "扩展样式是一种在底部扩展的样式。", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "Gallery 样式将块向上、向下、向左和向右排列。", 66 | "The Tile style displays content in a minimalist manner.": "Tile 样式以极简的方式显示内容。", 67 | "The Wide style uses the screen horizontally.": "Wide 样式水平使用屏幕。", 68 | "The current page does not need to be tagged.": "当前页面不需要标记。", 69 | "The current page is not found.": "找不到当前页面。", 70 | "To archive, open each page individually and change the page tag.": "要存档,请单独打开每个页面并更改 page 标记。", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "要启用或禁用它,请重新启动 Logseq 或关闭插件。", 72 | "Top level": "顶层", 73 | "Update the list": "更新列表", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "编写用换行符分隔的菜单选项。不要包含 '#'。", 75 | "[DONE] marked and added date to the top of the page": "[完成] 标记并将日期添加到页面顶部", 76 | "in order of update": "按更新顺序", 77 | "logging function": "日志记录功能", 78 | "settings": "设置", 79 | "update date/time": "更新日期/时间", 80 | "No need to tag the current page": "无需标记当前页面", 81 | "Board configuration": "板配置", 82 | "All": "都", 83 | "Page content": "页面内容", 84 | "Linked References": "链接的引用", 85 | "Show page content": "显示页面内容", 86 | "Reloading will reflect this.": "重新加载将反映这一点。", 87 | "Show linked references": "显示链接的引用", 88 | "Classify and sort by words included in the page title.": "按页面标题中包含的单词进行分类和排序。", 89 | "Classify and sort by page-tag.": "按页面标记分类和排序。", 90 | "Write separated by line breaks.": "写入以换行符分隔。", 91 | "Matching target": "匹配目标", 92 | "Add the date to the first block but not the page tag": "将日期添加到第一个块,但不向 page 标签添加" 93 | } -------------------------------------------------------------------------------- /src/translations/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "通過 embed 批量顯示帶有頁面標籤的頁面的 Board。", 3 | "Add a button to the left menu bar to access this plugin": "在左側功能表欄添加一個按鈕以訪問此外掛程式", 4 | "Add date and link to the first block of the page": "添加日期並連結到頁面的第一個塊", 5 | "Add only date to the first block": "僅向第一個塊添加日期", 6 | "Added date to the top of the page": "將日期添加到頁面頂部", 7 | "Archives > Add DONE marker": "存檔 > 添加 DONE 標記", 8 | "Board": "板", 9 | "Batch board configuration": "Batch 板配置", 10 | "Cancel": "取消", 11 | "Category by included word": "按包含的單詞分類", 12 | "Change style": "更改樣式", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "按頁面標題中包含的單詞進行分類和排序。寫入以換行符分隔。", 14 | "Click the page title to open the page.": "按兩下頁面標題以打開頁面。", 15 | "Combination Menu": "組合功能表", 16 | "Common settings": "通用設置", 17 | "Copy current full page name to clipboard": "將當前完整頁面名稱複製到剪貼板", 18 | "Create a new page": "創建新頁面", 19 | "Page created.": "頁面已創建。", 20 | "Enable slash commands": "啟用 slash 命令", 21 | "Hover over the page title to display a tooltip.": "將滑鼠懸停在頁面標題上可顯示工具提示。", 22 | "If enabled": "如果已啟用", 23 | "Journals cannot be tagged.": "日記帳不能被標記。", 24 | "Link to the month page": "連結到月份頁面", 25 | "List": "清單", 26 | "Loading...": "裝載。。。", 27 | "Menu": "功能表", 28 | "Menu > Pick-list options": "功能表 > 選擇清單選項", 29 | "order by name": "按名稱排序", 30 | "New page": "新建頁面", 31 | "New page using the sub page name (namespace)": "使用子頁面名稱 (namespace) 的新頁面", 32 | "No need to tag the current page.": "無需標記當前頁面。", 33 | "No page found": "未找到頁面", 34 | "No pages found for this page name.": "找不到此頁面名稱的頁面。", 35 | "No pages found for this page tag.": "未找到此 page 標籤的頁面。", 36 | "Open PARA method menu": "打開 PARA 方法功能表", 37 | "Open the list": "打開清單", 38 | "Opened page in main content": "在主要內容中打開的頁面", 39 | "Opened page in right sidebar": "在右側邊欄中打開的頁面", 40 | "Or from the toolbar": "或從工具列", 41 | "Others": "別人", 42 | "Page already exists.": "頁面已存在。", 43 | "Page not found": "找不到頁面", 44 | "Page style": "頁面樣式", 45 | "Page-Tag": "頁面標記", 46 | "Pages tagged with": "標記 的頁面", 47 | "Pages that contain the same name as the page name are displayed.": "將顯示包含與頁面名稱相同的頁面。", 48 | "Pages with that tag appear in the list.": "帶有該標籤的頁面會顯示在清單中。", 49 | "Pick List": "選擇清單", 50 | "Please set the pick list in the plugin settings.": "請在外掛程式設定中設定選擇清單。", 51 | "Plugin": "外掛程式", 52 | "Plugin settings": "外掛程式設置", 53 | "Press Shift key at the same time to open in sidebar": "同時按 Shift 鍵在側邊欄中打開", 54 | "Quickly PARA method Plugin": "快速PARA方法外掛程式", 55 | "Reload": "重新載入", 56 | "Renamed page": "重新命名的頁面", 57 | "Same level": "同級別", 58 | "Separator character": "分隔符", 59 | "Sort by month": "按月排序", 60 | "Sub page": "子頁面", 61 | "Submit": "提交", 62 | "Tag": "日", 63 | "Tag the current page (Page-tag)": "標記目前頁面 (Page-tag)", 64 | "The Expansion style is a style that expands on the underside.": "擴展樣式是一種在底部擴展的樣式。", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "Gallery 樣式將塊向上、向下、向左和向右排列。", 66 | "The Tile style displays content in a minimalist manner.": "Tile 樣式以極簡的方式顯示內容。", 67 | "The Wide style uses the screen horizontally.": "Wide 樣式水準使用螢幕。", 68 | "The current page does not need to be tagged.": "當前頁面不需要標記。", 69 | "The current page is not found.": "找不到目前頁面。", 70 | "To archive, open each page individually and change the page tag.": "要存檔,請單獨打開每個頁面並更改page標記。", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "要啟用或禁用它,請重新啟動 Logseq 或關閉外掛程式。", 72 | "Top level": "頂層", 73 | "Update the list": "更新清單", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "編寫用換行符分隔的功能表選項。不要包含 『#』。", 75 | "[DONE] marked and added date to the top of the page": "[完成] 標記並將日期添加到頁面頂部", 76 | "in order of update": "按更新順序", 77 | "logging function": "日誌記錄功能", 78 | "settings": "設置", 79 | "update date/time": "更新日期/時間", 80 | "No need to tag the current page": "無需標記當前頁面", 81 | "Board configuration": "板配置", 82 | "All": "都", 83 | "Page content": "頁面內容", 84 | "Linked References": "連結的引用", 85 | "Show page content": "顯示頁面內容", 86 | "Reloading will reflect this.": "重新載入將反映這一點。", 87 | "Show linked references": "顯示連結的引用", 88 | "Classify and sort by words included in the page title.": "按頁面標題中包含的單詞進行分類和排序。", 89 | "Classify and sort by page-tag.": "按頁面標記分類和排序。", 90 | "Write separated by line breaks.": "寫入以換行符分隔。", 91 | "Matching target": "匹配目標", 92 | "Add the date to the first block but not the page tag": "將日期添加到第一個塊,但不向page標籤添加" 93 | } -------------------------------------------------------------------------------- /src/menu/property.ts: -------------------------------------------------------------------------------- 1 | import { AppUserConfigs, BlockEntity, PageEntity } from '@logseq/libs/dist/LSPlugin.user' 2 | import { t } from "logseq-l10n" //https://github.com/sethyuan/logseq-l10n 3 | import { RecodeDateToPageTop } from '../menu/RecodePageTop' 4 | import { removePopup } from '../lib' 5 | 6 | 7 | /** 8 | * コマンドを実行する (チェックをおこなう) 9 | * @param addPropPageName 追加するページ名 ( [[ ]]なし ) 10 | * @param addPropName 追加するプロパティ名 11 | */ 12 | export const runCommand = async (addPropPageName: string, addPropName: string) => { 13 | 14 | // 追加するプロパティが空の場合はキャンセルとする 15 | if (addPropPageName === "") 16 | return logseq.UI.showMsg(t("Cancel"), "warning") 17 | 18 | // 現在のページを取得する 19 | const getCurrent = await logseq.Editor.getCurrentPage() as { name: PageEntity["name"]; properties: PageEntity["properties"], originalName: PageEntity["originalName"] } | null 20 | if (getCurrent) { 21 | // 現在のページと同じ名前のプロパティを追加しようとした場合はキャンセルとする 22 | if (getCurrent.name === addPropPageName 23 | || getCurrent.originalName === addPropPageName) 24 | return logseq.UI.showMsg(t("No need to tag the current page"), "warning") 25 | 26 | // 現在のページのブロックツリーを取得する 27 | const getCurrentTree = await logseq.Editor.getCurrentPageBlocksTree() as BlockEntity[] | null 28 | if (getCurrentTree === null) 29 | return logseq.UI.showMsg("Can not get the current page", "warning") 30 | 31 | // ポップアップを削除 32 | removePopup() 33 | 34 | // ページにプロパティを追加する 35 | await updatePageProperty(addPropPageName, getCurrent, addPropName, getCurrentTree[0].uuid) 36 | 37 | } 38 | } 39 | 40 | 41 | /** 42 | * ページにプロパティを追加し、必要に応じて日付を記録する 43 | * @param addPropPageName 追加するページ名 ( [[ ]]なし ) 44 | * @param targetPageEntity ターゲットのPageEntity 45 | * @param type 追加するプロパティのタイプ (PARA、Free) 46 | * @param uuid ページの最初のブロックのUUID 47 | */ 48 | export const updatePageProperty = async (addPropPageName: string, targetPageEntity: { properties: PageEntity["properties"], originalName: PageEntity["originalName"] }, type: string, uuid: string) => { 49 | 50 | const message = () => { 51 | logseq.UI.showMsg(`${t("Page-Tag")} ${addPropPageName}`, "info", { timeout: 3000 }) 52 | } 53 | // ページプロパティに追加 54 | if ((type !== "PARA") 55 | || (type === "PARA" && logseq.settings!.booleanRecodeOnly === false)) 56 | await updatePageProperties(addPropPageName, "tags", targetPageEntity.properties, type, uuid) 57 | 58 | // ページ先頭にログを追加 59 | if (type === "PARA" // PARAページ 60 | && logseq.settings?.switchPARArecodeDate === true) { 61 | const { preferredDateFormat } = await logseq.App.getUserConfigs() as AppUserConfigs 62 | setTimeout(async () => { 63 | const success: boolean = await RecodeDateToPageTop(preferredDateFormat, addPropPageName, " [[" + targetPageEntity.originalName + "]]") 64 | if (success) 65 | message() 66 | }, 300) 67 | } else 68 | // 成功した場合のメッセージを表示 69 | message() 70 | } 71 | 72 | /** 73 | * ページのプロパティを更新する。反映処理も行う。 74 | * @param addPropPageName 追加するページ名 ( [[ ]]なし ) 75 | * @param targetProperty 更新するプロパティ名 76 | * @param properties ページのプロパティ 77 | * @param type タイプ PARA 78 | * @param firstBlockUuid ページの最初のブロックのUUID 79 | */ 80 | const updatePageProperties = (addPropPageName: string, targetProperty: string, properties, type: string, firstBlockUuid: string) => { 81 | 82 | // 削除するプロパティのリスト 83 | let deleteArray = ['Projects', 'Resources', 'Areas of responsibility', 'Archives'] 84 | 85 | //properties[targetProperty]の中に配列もしくはundefinedがある 86 | if (properties) { 87 | if (properties[targetProperty]) { 88 | let tagArray = properties[targetProperty] as string[] 89 | 90 | // PARAの場合は、削除リストに一致するものを取り除く 91 | if (type === "PARA") 92 | tagArray = tagArray.filter((value) => !deleteArray.includes(value)) 93 | 94 | // 重複を削除 95 | tagArray = [...new Set([...tagArray, addPropPageName])] 96 | 97 | // properties[targetProperty]に反映する 98 | properties = { 99 | [targetProperty]: tagArray as string[] 100 | } 101 | } else 102 | properties[targetProperty] = [addPropPageName] as string[] // properties[targetProperty]が存在しない場合はpropertiesに追加する 103 | 104 | } else 105 | // propertiesが空の場合は、新規作成する 106 | properties = { 107 | [targetProperty]: [addPropPageName] as string[] 108 | } 109 | 110 | //ユーザーによる操作を停止する 111 | logseq.showMainUI() 112 | 113 | 114 | logseq.Editor.removeBlockProperty(firstBlockUuid, targetProperty) // プロパティを削除 115 | // ページのプロパティを更新 116 | logseq.Editor.editBlock(firstBlockUuid) 117 | setTimeout(() => { 118 | logseq.Editor.insertAtEditingCursor(`\n${targetProperty}:: ${[properties[targetProperty]]},\n`) // アナログで追加 119 | }, 100) 120 | 121 | // ユーザーによる操作を再開する 122 | logseq.hideMainUI() 123 | 124 | return firstBlockUuid 125 | } 126 | 127 | -------------------------------------------------------------------------------- /src/menu/combination.ts: -------------------------------------------------------------------------------- 1 | import { AppUserConfigs, PageEntity } from '@logseq/libs/dist/LSPlugin.user' 2 | import { removePopup } from '../lib' 3 | import { t } from "logseq-l10n" //https://github.com/sethyuan/logseq-l10n 4 | import { RecodeDateToPageTop } from '../menu/RecodePageTop' 5 | import { updatePageProperty } from '../menu/property' 6 | 7 | /** 8 | * 新しいページを作成するためのダイアログを表示する 9 | * 10 | * @param title - ページ名 11 | * @param tags - タグに追加する文字列 (ページ名) 12 | * @param inputValue - ページのタイトルの初期値 13 | * @param flagNotRecode - ページを記録しない場合はtrue 14 | */ 15 | export const combinationNewPage = async (title: string, tags: string, inputValue: string) => { 16 | logseq.provideUI({ 17 | attrs: { 18 | title, 19 | }, 20 | key: "openQuickly", 21 | reset: true, 22 | template: ` 23 |

${t("New page")}: 24 |

25 | `, 26 | style: { 27 | width: "640px", 28 | height: "150px", 29 | left: "unset", 30 | bottom: "unset", 31 | right: "1em", 32 | top: "4em", 33 | paddingLeft: "1.8em", 34 | paddingTop: "1.4em", 35 | backgroundColor: 'var(--ls-primary-background-color)', 36 | color: 'var(--ls-primary-text-color)', 37 | boxShadow: '1px 2px 5px var(--ls-secondary-background-color)', 38 | }, 39 | }) 40 | setTimeout(eventListener(tags), 100) 41 | } 42 | 43 | 44 | // イベントリスナーを追加する 45 | function eventListener(tags: string): () => void { 46 | return () => { 47 | const button = parent.document.getElementById("CreatePageButton") as HTMLButtonElement 48 | if (button) { 49 | let processing: Boolean = false 50 | button.addEventListener("click", async () => { 51 | if (processing) return 52 | const inputTitle = (parent.document.getElementById("newPageTitle") as HTMLInputElement).value as string | null 53 | if (!inputTitle) return 54 | processing = true 55 | 56 | //ページが存在しないことを確認する 57 | if ((await logseq.Editor.getPage(inputTitle) as { uuid: PageEntity["uuid"] } | null) === null) { 58 | 59 | //ページが存在しない場合に実行する 60 | const createPage = await logseq.Editor.createPage( 61 | inputTitle, // 入力されたページ名 62 | tags === ""? {} //タグが空の場合 63 | : { tags: [tags] }, // ページタグをつける 64 | { 65 | createFirstBlock: true, // ページの最初のブロックを作成する 66 | redirect: false // リダイレクトはしない 67 | }) 68 | 69 | //ページが作成されなかった場合 70 | if (createPage === null) 71 | return logseq.UI.showMsg("Cannot create new page", "error") 72 | 73 | //ページが作成された場合 74 | const { preferredDateFormat } = await logseq.App.getUserConfigs() as { preferredDateFormat: AppUserConfigs["preferredDateFormat"] } 75 | 76 | setTimeout(async () => { 77 | const success: boolean = await RecodeDateToPageTop(preferredDateFormat, tags, " [[" + createPage.originalName + "]]") 78 | if (success) logseq.UI.showMsg(t("Create a new page"), "success") 79 | // 右サイドバーにページを開く 80 | logseq.Editor.openInRightSidebar(createPage.uuid) 81 | }, 100) 82 | 83 | } else { 84 | //ページが存在していた場合 85 | 86 | // 右サイドバーにページを開く 87 | logseq.Editor.openInRightSidebar(inputTitle) 88 | 89 | // メッセージを表示する 90 | logseq.UI.showMsg(t("Page already exists."), "warning") 91 | } 92 | 93 | //実行されたらポップアップを削除 94 | removePopup() 95 | 96 | processing = false 97 | }) 98 | } 99 | } 100 | } 101 | 102 | 103 | export const combinationNamespace = async (tags: string, namespaceName: string) => { 104 | 105 | //ページが存在しないことを確認する 106 | const page = await logseq.Editor.getPage(namespaceName) as { properties: PageEntity["properties"], originalName: PageEntity["originalName"], uuid: PageEntity["uuid"] } | null 107 | if (page) { 108 | //ページが存在していた場合 109 | 110 | ///ページタグをつける (反映処理も含まれる) 111 | updatePageProperty(namespaceName, page, "Free", page.uuid) 112 | logseq.UI.showMsg(t("Page already exists."), "warning") 113 | 114 | } else { 115 | 116 | //ページが存在しない場合に実行する 117 | const createPage = await logseq.Editor.createPage( 118 | namespaceName, // 入力されたページ名 119 | { tags: [tags] }, // ページタグをつける 120 | { 121 | createFirstBlock: true, // ページの最初のブロックを作成する 122 | redirect: true // ページにリダイレクトする 123 | }) 124 | 125 | if (createPage) 126 | logseq.UI.showMsg(t("Create a new page"), "success") 127 | else 128 | return logseq.UI.showMsg("Cannot create new page", "error") 129 | 130 | } 131 | } -------------------------------------------------------------------------------- /readme.ja.md: -------------------------------------------------------------------------------- 1 | # Logseq プラグイン: *Quickly PARA method* 2 | 3 | - PARA メソッドを用いて、Logseqグラフ(ページ)を整理するのに役立つ ワークフローを提供します。 4 | - Projects、Areas of responsibility、Resources、Archivesの各ページに分類するために、**ページタグとしてマークします**。 5 | 6 | > [!WARNING] 7 | >このプラグインはLogseq dbバージョンでは動作しません。 8 | 9 |
10 | 11 | [English](https://github.com/YU000jp/logseq-plugin-quickly-para-method) | [日本語](https://github.com/YU000jp/logseq-plugin-quickly-para-method/blob/main/readme.ja.md) [![最新リリースバージョン](https://img.shields.io/github/v/release/YU000jp/logseq-plugin-quickly-para-method)](https://github.com/YU000jp/logseq-plugin-quickly-para-method/releases) 12 | [![ダウンロード数](https://img.shields.io/github/downloads/YU000jp/logseq-plugin-quickly-para-method/total.svg)](https://github.com/YU000jp/logseq-plugin-quickly-para-method/releases) 公開日: 2023/06/12 13 |
14 | 15 | --- 16 | 17 | * PARAメソッドのイメージ 18 | 19 | ![PARAイラスト](https://github.com/YU000jp/logseq-plugin-quickly-para-method/assets/111847207/17767165-679a-4572-8519-db48abfc7f30) 20 | 21 | ## 新機能 🆕 22 | 23 | - プロジェクトなどの掲示板機能 24 | > ![image](https://github.com/user-attachments/assets/cf149d8c-11e2-4f8f-95da-f32ae20cdb6c) 25 | 26 | ## 概要 27 | 28 | - ツールバーのボタンもしくはページタイトルを右クリックして、専用のクイックメニューを開きます 29 | 30 | ![quicklyparajp](https://github.com/YU000jp/logseq-plugin-quickly-para-method/assets/111847207/9e15d931-f7a8-483e-aec0-e1511514d4ad) 31 | 32 | 1. ページタグをセットする 33 | * クイックメニューから選択して、現在のページもしくは新規のページに対して、Projects、Areas of responsibility、Resourceのいずれかとしてタグ付けをします 34 | * 追加したときに、そのタグ名のページの先頭行に、日付とリンクが記帳されます 35 | > この機能はオプションなのでオフにできます 36 | 1. ~~「受信トレイ」機能~~ (削除) 37 | 1. 「ページ名 単語検索」機能 38 | > 同じ単語を持つページ名を探します。階層構造に関わらず、関連するページをリストアップします。 39 | 1. サブページなどのページ作成機能 40 | > 現在のページの階層もしくはその上の階層にサブページを作成するための機能です。 41 | 42 | --- 43 | 44 | ## はじめに 45 | 46 | Logseq マーケットプレイスからインストール 47 | - 上部右側のツールバーで [`---`] をクリックして [`プラグイン`] を開きます。 `マーケットプレイス` を選択します。検索フィールドに `PARA` と入力し、検索結果から選択してインストールします。 48 | 49 | ![画像](https://github.com/YU000jp/logseq-plugin-quickly-para-method/assets/111847207/a6d4337a-2454-4ca4-8a1d-a0d9ca4e9ac2) 50 | 51 | ### 使用方法 52 | 53 | 1. ページタグをセットする 54 | 55 | - メニューまたはスラッシュコマンドから、現在のページにページタグをつけます。 56 | 57 | 1. 上部ツールバーのボタン `⚓` をクリックしてメニューを開きます 58 | - ページが単独で開いているかどうかに応じてメニューの内容が異なります。 59 | > 最初、このボタンはLogseqによって非表示にされています。ツールバーのこのボタン (![アイコン](https://github.com/YU000jp/logseq-plugin-bullet-point-custom-icon/assets/111847207/136f9d0f-9dcf-4942-9821-c9f692fcfc2f)) をクリックし、その後、この(![image](https://github.com/YU000jp/logseq-plugin-quickly-para-method/assets/111847207/bfe90d5e-7ee4-4455-8b29-4c2908b1c9df)) を選択します。その後、ツールバーに ⚓ ボタンが表示されます。 60 | 1. スラッシュコマンド 61 | - 日誌ページ以外でも、右サイドバーでも。 62 | 1. `📧 Into [Inbox]` 63 | 1. `✈️ Page-tag [Projects]` 64 | 1. `🏠 Page-tag [Areas of responsibility]` 65 | 1. `🌍 Page-tag [Resources]` 66 | 1. `🧹 Page-tag [Archives]` 67 | 68 | ![singleJournalJa1](https://github.com/YU000jp/logseq-plugin-quickly-para-method/assets/111847207/ac4562eb-e67e-46cc-8b51-2653857cf43e) 69 | 70 | 1. プロジェクトなどが完了しページコンテンツが進展する見込みがなくなったら、Archivesにタグ付けします。 71 | > その際、PARAのページタグは重複しません。Archivesにタグ付けしたら、Projectsから外れます。 72 | 73 | --- 74 | 75 | ## ショーケース / 質問 / アイデア / ヘルプ 76 | 77 | > [ディスカッション](https://github.com/YU000jp/logseq-plugin-quickly-para-method/discussions) タブに移動して、質問やこの種の情報を見つけるために行きます。 78 | 79 | - ページの行にリストを設置する (オプション) 80 | 81 | ```clojure 82 | 83 | {{query (page-tags [[Projects]])}} 84 | 85 | {{query (page-tags [[Areas of responsibility]])}} 86 | 87 | {{query (page-tags [[Resources]])}} 88 | 89 | {{query (page-tags [[Archives]])}} 90 | 91 | ``` 92 | 93 | - おすすめのプラグイン 94 | 1. [Favorite tree プラグイン](https://github.com/sethyuan/logseq-plugin-favorite-tree) 95 | > Projectsなど各ページを、ページとしてお気に入りに登録してください。そうすると、左メニューに、そのページに対してタグ付けされたページがリストアップされます。 96 | 2. [Panel Coloring プラグイン](https://github.com/YU000jp/logseq-plugin-panel-coloring) 97 | 3. [Page-tags and Hierarchy プラグイン](https://github.com/YU000jp/logseq-page-tags-and-hierarchy) 98 | > ページコンテンツ内のページタグと階層の表示位置を変更します。 99 | 100 | ## 先行技術とクレジット 101 | 102 | - リンク > [PARAメソッド (Workflowly ガイド)](https://workflowy.com/systems/para-method/) 103 | - Logseq プラグイン > [georgeguimaraes/ add PARA properties](https://github.com/georgeguimaraes/logseq-plugin-add-PARA-properties) 104 | > ほぼ同様の機能を提供していますが、ページタグを使うか、独自のプロパティを使うかの違いがあります。 105 | - アイコン > [icooon-mono.com](https://icooon-mono.com/10204-%e9%8c%a8%e3%81%ae%e3%82%a2%e3%82%a4%e3%82%b3%e3%83%b3%e3%81%9d%e3%81%ae4/) 106 | - 製作者 > @[YU000jp](https://github.com/YU000jp) 107 | -------------------------------------------------------------------------------- /src/translations/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "ページタグのついたページを埋め込みで一括表示する掲示板。", 3 | "Add a button to the left menu bar to access this plugin": "このプラグインにアクセスするためのボタンを左側のメニューバーに追加します", 4 | "Add date and link to the first block of the page": "ページの最初のブロックに日付とリンクを追加する", 5 | "Add only date to the first block": "最初のブロックに日付を追加する", 6 | "Added date to the top of the page": "ページ上部に日付を追加", 7 | "Archives > Add DONE marker": "アーカイブ > DONEマーカーを追加", 8 | "Board": "掲示板", 9 | "Batch board configuration": "掲示板", 10 | "Cancel": "キャンセル", 11 | "Category by included word": "含まれる単語によるカテゴリ", 12 | "Change style": "スタイルを変更する", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "ページタイトルに含まれる単語で分類および並べ替えます。改行で区切って書きます。", 14 | "Click the page title to open the page.": "ページのタイトルをクリックしてページを開きます。", 15 | "Combination Menu": "連携メニュー", 16 | "Common settings": "共通設定", 17 | "Copy current full page name to clipboard": "現在の全ページ名をクリップボードにコピー", 18 | "Create a new page": "新しいページを作成する", 19 | "Page created.": "ページが作成されました。", 20 | "Enable slash commands": "スラッシュ コマンドを有効にする", 21 | "Hover over the page title to display a tooltip.": "ページタイトルにカーソルを合わせると、ツールチップが表示されます。", 22 | "If enabled": "有効になっている場合", 23 | "Journals cannot be tagged.": "ジャーナルにタグを付けることはできません。", 24 | "Link to the month page": "月ページへのリンク", 25 | "List": "リスト", 26 | "Loading...": "読み込み中 ...", 27 | "Menu": "メニュー", 28 | "Menu > Pick-list options": "メニュー>ピックリストオプション", 29 | "order by name": "名前の順序", 30 | "New page": "新しいページ", 31 | "New page using the sub page name (namespace)": "サブページ名(名前空間)を使用した新しいページ", 32 | "No need to tag the current page.": "現在のページにタグを付ける必要はありません。", 33 | "No page found": "ページが見つかりませんでした", 34 | "No pages found for this page name.": "このページ名のページが見つかりませんでした。", 35 | "No pages found for this page tag.": "このページ タグのページが見つかりませんでした。", 36 | "Open PARA method menu": "PARAメソッドメニューを開く", 37 | "Open the list": "リストを開く", 38 | "Opened page in main content": "メインコンテンツでページを開いた", 39 | "Opened page in right sidebar": "右側のサイドバーでページを開いた", 40 | "Or from the toolbar": "またはツールバーから", 41 | "Others": "その他", 42 | "Page already exists.": "ページはすでに存在します。", 43 | "Page not found": "ページが見つかりません", 44 | "Page style": "ページスタイル", 45 | "Page-Tag": "ページタグ", 46 | "Pages tagged with": "タグが付けられたページ", 47 | "Pages that contain the same name as the page name are displayed.": "ページ名と同じ名前のページが表示されます。", 48 | "Pages with that tag appear in the list.": "そのタグが付けられたページがリストに表示されます。", 49 | "Pick List": "ピックリスト", 50 | "Please set the pick list in the plugin settings.": "プラグイン設定でピックリストを設定してください。", 51 | "Plugin": "プラグイン", 52 | "Plugin settings": "プラグイン設定", 53 | "Press Shift key at the same time to open in sidebar": "Shiftキーを同時に押してサイドバーで開きます", 54 | "Quickly PARA method Plugin": "Quickly PARAメソッドプラグイン", 55 | "Reload": "リロード", 56 | "Renamed page": "ページの名前を変更しました", 57 | "Same level": "同じレベル", 58 | "Separator character": "区切り文字", 59 | "Sort by month": "月別ソート", 60 | "Sub page": "サブページ", 61 | "Submit": "送信", 62 | "Tag": "タグ", 63 | "Tag the current page (Page-tag)": "現在のページにタグを付ける(ページタグ)", 64 | "The Expansion style is a style that expands on the underside.": "拡張スタイルは、下側が拡張するスタイルです。", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "ギャラリー スタイルでは、ブロックが上下左右に配置されます。", 66 | "The Tile style displays content in a minimalist manner.": "タイル スタイルは、最小限の方法でコンテンツを表示します。", 67 | "The Wide style uses the screen horizontally.": "ワイド スタイルでは、画面を水平方向に使用します。", 68 | "The current page does not need to be tagged.": "現在のページにタグを付ける必要はありません。", 69 | "The current page is not found.": "現在のページが見つかりません。", 70 | "To archive, open each page individually and change the page tag.": "アーカイブするには、各ページを個別に開き、ページタグを変更します。", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "有効または無効にするには、Logseqを再起動するか、プラグインをオフにします。", 72 | "Top level": "トップレベル", 73 | "Update the list": "リストを更新する", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "メニューオプションは改行で区切って記述します。'#' は含めないでください。", 75 | "[DONE] marked and added date to the top of the page": "[DONE]マークを付けてページの上部に日付を追加しました", 76 | "in order of update": "更新順", 77 | "logging function": "ロギング機能", 78 | "settings": "設定", 79 | "update date/time": "更新日時", 80 | "No need to tag the current page": " 現在のページにタグを付ける必要はありません", 81 | "Board configuration": "掲示板の設定", 82 | "All": "すべて", 83 | "Page content": "ページコンテンツ", 84 | "Linked References": "リンクされたブロック", 85 | "Show page content": "ページコンテンツを表示", 86 | "Reloading will reflect this.": "リロードするとこれが反映されます。", 87 | "Show linked references": "リンクされたブロックを表示", 88 | "Classify and sort by words included in the page title.": "ページタイトルに含まれる単語で分類および並べ替えます。", 89 | "Classify and sort by page-tag.": "ページタグで分類および並べ替えます。", 90 | "Write separated by line breaks.": "改行で区切って書きます。", 91 | "Matching target": "一致するターゲット", 92 | "Add the date to the first block but not the page tag" : "最初のブロックに日付を追加しますが、ページタグは追加しません" 93 | } -------------------------------------------------------------------------------- /src/translations/ko.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "페이지 태그가 있는 페이지를 임베드하여 대량으로 표시하는 보드입니다.", 3 | "Add a button to the left menu bar to access this plugin": "왼쪽 메뉴 표시줄에 버튼을 추가하여 이 플러그인에 액세스하십시오.", 4 | "Add date and link to the first block of the page": "날짜 추가 및 페이지의 첫 번째 블록에 대한 링크", 5 | "Add only date to the first block": "첫 번째 블록에 날짜만 추가", 6 | "Added date to the top of the page": "페이지 상단에 날짜 추가", 7 | "Archives > Add DONE marker": "아카이브 > DONE 마커 추가", 8 | "Board": "판", 9 | "Batch board configuration": "배치 보드 구성", 10 | "Cancel": "취소", 11 | "Category by included word": "포함된 단어별 범주", 12 | "Change style": "스타일 변경", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "페이지 제목에 포함된 단어를 기준으로 분류하고 정렬합니다. 줄 바꿈으로 구분하여 씁니다.", 14 | "Click the page title to open the page.": "페이지 제목을 클릭하여 페이지를 엽니다.", 15 | "Combination Menu": "조합 메뉴", 16 | "Common settings": "공통 설정", 17 | "Copy current full page name to clipboard": "현재 전체 페이지 이름을 클립 보드에 복사", 18 | "Create a new page": "새 페이지 만들기", 19 | "Page created.": "페이지가 생성되었습니다.", 20 | "Enable slash commands": "슬래시 명령 사용", 21 | "Hover over the page title to display a tooltip.": "페이지 제목 위로 마우스를 가져가면 툴팁이 표시됩니다.", 22 | "If enabled": "활성화된 경우", 23 | "Journals cannot be tagged.": "저널에는 태그를 지정할 수 없습니다.", 24 | "Link to the month page": "월 페이지에 대한 링크", 25 | "List": "목록", 26 | "Loading...": "로드...", 27 | "Menu": "메뉴", 28 | "Menu > Pick-list options": "메뉴 > 선택 목록 옵션", 29 | "order by name": "이름순 정렬", 30 | "New page": "새 페이지", 31 | "New page using the sub page name (namespace)": "하위 페이지 이름(네임스페이스)을 사용하는 새 페이지", 32 | "No need to tag the current page.": "현재 페이지에 태그를 지정할 필요가 없습니다.", 33 | "No page found": "페이지를 찾을 수 없습니다.", 34 | "No pages found for this page name.": "이 페이지 이름에 대한 페이지를 찾을 수 없습니다.", 35 | "No pages found for this page tag.": "이 페이지 태그에 대한 페이지를 찾을 수 없습니다.", 36 | "Open PARA method menu": "PARA 분석법 메뉴 열기", 37 | "Open the list": "목록 열기", 38 | "Opened page in main content": "기본 콘텐츠에서 열린 페이지", 39 | "Opened page in right sidebar": "오른쪽 사이드바에서 열린 페이지", 40 | "Or from the toolbar": "또는 도구 모음에서", 41 | "Others": "다른", 42 | "Page already exists.": "페이지가 이미 있습니다.", 43 | "Page not found": "페이지를 찾을 수 없음", 44 | "Page style": "페이지 스타일", 45 | "Page-Tag": "페이지 태그", 46 | "Pages tagged with": "태그가 지정된 페이지", 47 | "Pages that contain the same name as the page name are displayed.": "페이지 이름과 동일한 이름을 포함하는 페이지가 표시됩니다.", 48 | "Pages with that tag appear in the list.": "해당 태그가 있는 페이지가 목록에 나타납니다.", 49 | "Pick List": "선택 목록", 50 | "Please set the pick list in the plugin settings.": "플러그인 설정에서 선택 목록을 설정하세요.", 51 | "Plugin": "플러그인", 52 | "Plugin settings": "플러그인 설정", 53 | "Press Shift key at the same time to open in sidebar": "Shift 키를 동시에 눌러 사이드바에서 엽니다.", 54 | "Quickly PARA method Plugin": "빠르게 PARA 방식 플러그인", 55 | "Reload": "새로고침", 56 | "Renamed page": "이름이 바뀐 페이지", 57 | "Same level": "동일 수준", 58 | "Separator character": "구분 기호 문자", 59 | "Sort by month": "월순으로 정렬", 60 | "Sub page": "하위 페이지", 61 | "Submit": "전송", 62 | "Tag": "하루", 63 | "Tag the current page (Page-tag)": "현재 페이지에 태그 지정(Page-tag)", 64 | "The Expansion style is a style that expands on the underside.": "확장 스타일은 아래쪽에서 확장되는 스타일입니다.", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "갤러리 스타일은 블록을 위, 아래, 왼쪽 및 오른쪽으로 정렬합니다.", 66 | "The Tile style displays content in a minimalist manner.": "타일 스타일은 콘텐츠를 미니멀한 방식으로 표시합니다.", 67 | "The Wide style uses the screen horizontally.": "와이드 스타일은 화면을 가로로 사용합니다.", 68 | "The current page does not need to be tagged.": "현재 페이지에는 태그를 지정할 필요가 없습니다.", 69 | "The current page is not found.": "현재 페이지를 찾을 수 없습니다.", 70 | "To archive, open each page individually and change the page tag.": "보관하려면 각 페이지를 개별적으로 열고 페이지 태그를 변경합니다.", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "활성화 또는 비활성화하려면 Logseq를 다시 시작하거나 플러그인을 끄십시오.", 72 | "Top level": "최상위 수준", 73 | "Update the list": "목록 업데이트", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "메뉴 옵션을 줄 바꿈으로 구분하여 작성합니다. '#'을 포함하지 마십시오.", 75 | "[DONE] marked and added date to the top of the page": "[DONE] 페이지 상단에 날짜를 표시하고 추가했습니다.", 76 | "in order of update": "업데이트 순서", 77 | "logging function": "로깅 기능", 78 | "settings": "설정", 79 | "update date/time": "날짜/시간 업데이트", 80 | "No need to tag the current page": "현재 페이지에 태그를 지정할 필요가 없습니다.", 81 | "Board configuration": "보드 구성", 82 | "All": "모두", 83 | "Page content": "페이지 콘텐츠", 84 | "Linked References": "연결된 참조", 85 | "Show page content": "페이지 내용 표시", 86 | "Reloading will reflect this.": "재장전하면 이에 반영됩니다.", 87 | "Show linked references": "연결된 참조 표시", 88 | "Classify and sort by words included in the page title.": "페이지 제목에 포함된 단어를 기준으로 분류하고 정렬합니다.", 89 | "Classify and sort by page-tag.": "페이지 태그별로 분류하고 정렬합니다.", 90 | "Write separated by line breaks.": "줄 바꿈으로 구분하여 씁니다.", 91 | "Matching target": "매칭 대상", 92 | "Add the date to the first block but not the page tag": "첫 번째 블록에 날짜를 추가하되 페이지 태그는 추가하지 않습니다." 93 | } -------------------------------------------------------------------------------- /icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Logseq Plugin: *Quickly PARA Method* ⚓ 2 | 3 | - Provide a workflow that helps organize graph, which tend to be large, using the PARA method. 4 | - **Mark as a page tag** to classify it into Projects, Areas of responsibility, Resources, and Archives pages. 5 | 6 | > [!WARNING] 7 | This plugin does not work with Logseq db version. 8 | 9 |
10 | 11 | [English](https://github.com/YU000jp/logseq-plugin-quickly-para-method) | [日本語](https://github.com/YU000jp/logseq-plugin-quickly-para-method/blob/main/readme.ja.md) [![latest release version](https://img.shields.io/github/v/release/YU000jp/logseq-plugin-quickly-para-method)](https://github.com/YU000jp/logseq-plugin-quickly-para-method/releases) [![Downloads](https://img.shields.io/github/downloads/YU000jp/logseq-plugin-quickly-para-method/total.svg)](https://github.com/YU000jp/logseq-plugin-quickly-para-method/releases) Published 20230612 12 |
13 | 14 | --- 15 | 16 | * Image of the **PARA method** 17 | 18 | ![PARAイラスト](https://github.com/YU000jp/logseq-plugin-quickly-para-method/assets/111847207/17767165-679a-4572-8519-db48abfc7f30) 19 | 20 | ## New Feature 21 | 22 | - Board View 23 | > ![image](https://github.com/user-attachments/assets/cf149d8c-11e2-4f8f-95da-f32ae20cdb6c) 24 | 25 | 26 | ## Overview 27 | 28 | * Right-click on the toolbar button or page title to open a dedicated quick menu 29 | 30 | ![quickMenu](https://github.com/YU000jp/logseq-plugin-quickly-para-method/assets/111847207/7cadd395-51f2-40a8-af85-3b29946af9ee) 31 | 32 | 1. Set page-tags property 33 | * Select from the quick menu to tag the current page or a new page as Projects, Areas of responsibility, or Resources 34 | * When added, the date and link will be recorded on the first line of the page with that tag name. 35 | > This feature is optional and can be turned off 36 | * Once a project is complete and the page content is no longer expected to evolve, tag it in Archives. 37 | > In that case, PARA page tags will not be duplicated. Once tag Archives, it will be removed from Projects. 38 | 1. ~~"Inbox" feature~~ 39 | 1. "Page name word search" function 40 | > Find page names with the same word. List related pages regardless of their hierarchical structure. 41 | 1. Page creation functions such as sub page 42 | > This is a function to create a sub page at the current page level or at the level above it. 43 | 44 | --- 45 | 46 | ## Getting Started 47 | 48 | Learn the PARA method 49 | 50 | > Helps organize pages in the Logseq graph. 51 | 1. [PARA method guide](https://workflowy.com/systems/para-method/) 52 | 53 | Install from Logseq Marketplace 54 | 55 | - Press [`---`] on the top right toolbar to open [`Plugins`]. Select `Marketplace`. Type `PARA` in the search field, select it from the search results and install. 56 | 57 | ![image](https://github.com/YU000jp/logseq-plugin-quickly-para-method/assets/111847207/a6d4337a-2454-4ca4-8a1d-a0d9ca4e9ac2) 58 | 59 | ### Usage 60 | 61 | 1. Set page-tags property 62 | 63 | - From quick menu or slash command 64 | 65 | 1. Open the menu on click the top toolbar button `⚓` 66 | - The menu varies in its content depending on whether the single page is open or not. 67 | > First, the button is hidden by Logseq. Click this button (![icon](https://github.com/YU000jp/logseq-plugin-bullet-point-custom-icon/assets/111847207/136f9d0f-9dcf-4942-9821-c9f692fcfc2f)) on the toolbar. And select this (![image](https://github.com/YU000jp/logseq-plugin-quickly-para-method/assets/111847207/bfe90d5e-7ee4-4455-8b29-4c2908b1c9df)). After that, the ⚓ button will appear on the toolbar. 68 | 1. Slash Command 69 | - On non-journal pages. Right sidebar too. 70 | 1. `📧 Into [Inbox]` 71 | 1. `✈️ Page-tag [Projects]` 72 | 1. `🏠 Page-tag [Areas of responsibility]` 73 | 1. `🌍 Page-tag [Resources]` 74 | 1. `🧹 Page-tag [Archives]` 75 | 76 | ![singleJournaldemo](https://github.com/YU000jp/logseq-plugin-quickly-para-method/assets/111847207/a2c9cfb6-88a5-4af5-a90f-26b619ac53bb) 77 | 78 | - Plugin Settings 79 | 80 | > [Document here](https://github.com/YU000jp/logseq-plugin-quickly-para-method/wiki/Plugin-settings) 81 | 82 | --- 83 | 84 | ## Showcase / Questions / Ideas / Help 85 | 86 | > Go to the [Discussions](https://github.com/YU000jp/logseq-plugin-quickly-para-method/discussions) tab to ask and find this kind of things. 87 | 88 | - Inline query (option) 89 | 90 | ```clojure 91 | 92 | {{query (page-tags [[Projects]])}} 93 | 94 | {{query (page-tags [[Areas of responsibility]])}} 95 | 96 | {{query (page-tags [[Resources]])}} 97 | 98 | {{query (page-tags [[Archives]])}} 99 | 100 | ``` 101 | 102 | - Recommend plugin 103 | 1. [Favorite tree plugin](https://github.com/sethyuan/logseq-plugin-favorite-tree) 104 | > To show the PARA list on left menu. Register each page of PARA to user favorites. Page tags are listed. 105 | 1. [Panel Coloring plugin](https://github.com/YU000jp/logseq-plugin-panel-coloring) 106 | 1. [Page-tags and Hierarchy plugin](https://github.com/YU000jp/logseq-page-tags-and-hierarchy) 107 | > Change the display position of page tags and hierarchy in page content. 108 | 109 | ## Prior art & Credit 110 | 111 | - Logseq Plugin > [georgeguimaraes/ add PARA properties](https://github.com/georgeguimaraes/logseq-plugin-add-PARA-properties) 112 | > Although it has almost the same functionality, that plugin does not specify page tags. No date is recorded. 113 | - Icon > [icooon-mono.com](https://icooon-mono.com/10204-%e9%8c%a8%e3%81%ae%e3%82%a2%e3%82%a4%e3%82%b3%e3%83%b3%e3%81%9d%e3%81%ae4/) 114 | - Author > [YU000jp](https://github.com/YU000jp) 115 | -------------------------------------------------------------------------------- /src/translations/nb-NO.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "En tavle som viser flere sider med sidetagger samtidig etter innebygging.", 3 | "Add a button to the left menu bar to access this plugin": "Legg til en knapp i venstre menylinje for å få tilgang til denne plugin-en", 4 | "Add date and link to the first block of the page": "Legg til dato og lenke til den første blokken på siden", 5 | "Add only date to the first block": "Legg bare til dato i den første blokken", 6 | "Added date to the top of the page": "Lagt til dato øverst på siden", 7 | "Archives > Add DONE marker": "Arkiver > Legg til FERDIG-markør", 8 | "Board": "Brett", 9 | "Batch board configuration": "Konfigurasjon av batchkort", 10 | "Cancel": "Annullere", 11 | "Category by included word": "Kategori etter inkludert ord", 12 | "Change style": "Endre stil", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "Klassifiser og sorter etter ord som er inkludert i sidetittelen. Skriv atskilt med linjeskift.", 14 | "Click the page title to open the page.": "Klikk på sidetittelen for å åpne siden.", 15 | "Combination Menu": "Kombinasjon Meny", 16 | "Common settings": "Vanlige innstillinger", 17 | "Copy current full page name to clipboard": "Kopier gjeldende helsidenavn til utklippstavlen", 18 | "Create a new page": "Opprett en ny side", 19 | "Page created.": "Siden opprettet.", 20 | "Enable slash commands": "Aktivere skråstrekkommandoer", 21 | "Hover over the page title to display a tooltip.": "Hold pekeren over sidetittelen for å vise et verktøytips.", 22 | "If enabled": "Hvis aktivert", 23 | "Journals cannot be tagged.": "Tidsskrifter kan ikke merkes.", 24 | "Link to the month page": "Lenke til månedssiden", 25 | "List": "Liste", 26 | "Loading...": "Lasting...", 27 | "Menu": "Meny", 28 | "Menu > Pick-list options": "Meny > valglistealternativer", 29 | "order by name": "Bestill etter navn", 30 | "New page": "Ny side", 31 | "New page using the sub page name (namespace)": "Ny side ved hjelp av navnet på undersiden (navnerom)", 32 | "No need to tag the current page.": "Du trenger ikke å merke den gjeldende siden.", 33 | "No page found": "Ingen side funnet", 34 | "No pages found for this page name.": "Ingen sider funnet for dette sidenavnet.", 35 | "No pages found for this page tag.": "Ingen sider funnet for denne sidetaggen.", 36 | "Open PARA method menu": "Åpne PARA-metodemenyen", 37 | "Open the list": "Åpne listen", 38 | "Opened page in main content": "Åpnet side i hovedinnhold", 39 | "Opened page in right sidebar": "Åpnet side i høyre sidestolpe", 40 | "Or from the toolbar": "Eller fra verktøylinjen", 41 | "Others": "Andre", 42 | "Page already exists.": "Siden eksisterer allerede.", 43 | "Page not found": "Finner ikke siden", 44 | "Page style": "Sidestil", 45 | "Page-Tag": "Side-tagg", 46 | "Pages tagged with": "Sider som er merket med", 47 | "Pages that contain the same name as the page name are displayed.": "Sider som inneholder samme navn som sidenavnet, vises.", 48 | "Pages with that tag appear in the list.": "Sider med denne taggen vises i listen.", 49 | "Pick List": "Velg liste", 50 | "Please set the pick list in the plugin settings.": "Angi valglisten i plugin-innstillingene.", 51 | "Plugin": "Utvidelse", 52 | "Plugin settings": "Plugin-innstillinger", 53 | "Press Shift key at the same time to open in sidebar": "Trykk på Shift-tasten samtidig for å åpne i sidefeltet", 54 | "Quickly PARA method Plugin": "Raskt PARA-metode Plugin", 55 | "Reload": "Reload", 56 | "Renamed page": "Side med nytt navn", 57 | "Same level": "Samme nivå", 58 | "Separator character": "Skilletegn", 59 | "Sort by month": "Sorter etter måned", 60 | "Sub page": "Underside", 61 | "Submit": "Forelegge", 62 | "Tag": "Dag", 63 | "Tag the current page (Page-tag)": "Tagg gjeldende side (Page-tag)", 64 | "The Expansion style is a style that expands on the underside.": "Utvidelsesstilen er en stil som utvides på undersiden.", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "Galleristilen ordner blokkene opp, ned, til venstre og til høyre.", 66 | "The Tile style displays content in a minimalist manner.": "Tile-stilen viser innhold på en minimalistisk måte.", 67 | "The Wide style uses the screen horizontally.": "Bred stil bruker skjermen horisontalt.", 68 | "The current page does not need to be tagged.": "Den gjeldende siden trenger ikke å merkes.", 69 | "The current page is not found.": "Finner ikke gjeldende side.", 70 | "To archive, open each page individually and change the page tag.": "For å arkivere, åpne hver side individuelt og endre sidekoden.", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "For å aktivere eller deaktivere den, start Logseq på nytt eller slå av plugin-en.", 72 | "Top level": "Toppnivå", 73 | "Update the list": "Oppdater listen", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "Skriv menyalternativene atskilt med linjeskift. Ikke ta med «#».", 75 | "[DONE] marked and added date to the top of the page": "[FERDIG] merket og lagt til dato øverst på siden", 76 | "in order of update": "i rekkefølge etter oppdatering", 77 | "logging function": "Logging funksjon", 78 | "settings": "Innstillinger", 79 | "update date/time": "Oppdater dato/klokkeslett", 80 | "No need to tag the current page": "Du trenger ikke å merke gjeldende side", 81 | "Board configuration": "Konfigurasjon av tavle", 82 | "All": "Alt", 83 | "Page content": "Sidens innhold", 84 | "Linked References": "Koblede referanser", 85 | "Show page content": "Vis sideinnhold", 86 | "Reloading will reflect this.": "Omlasting vil gjenspeile dette.", 87 | "Show linked references": "Vis lenkede referanser", 88 | "Classify and sort by words included in the page title.": "Klassifiser og sorter etter ord som er inkludert i sidetittelen.", 89 | "Classify and sort by page-tag.": "Klassifiser og sorter etter side-tag.", 90 | "Write separated by line breaks.": "Skriv atskilt med linjeskift.", 91 | "Matching target": "Matchende mål", 92 | "Add the date to the first block but not the page tag": "Legg til datoen i den første blokken, men ikke i sidetaggen" 93 | } -------------------------------------------------------------------------------- /src/translations/tr.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "Sayfa etiketlerine sahip sayfaları gömerek toplu olarak görüntüleyen bir pano.", 3 | "Add a button to the left menu bar to access this plugin": "Bu eklentiye erişmek için sol menü çubuğuna bir düğme ekleyin", 4 | "Add date and link to the first block of the page": "Sayfanın ilk bloğuna tarih ve bağlantı ekleyin", 5 | "Add only date to the first block": "İlk bloğa yalnızca tarih ekle", 6 | "Added date to the top of the page": "Sayfanın en üstüne tarih eklendi", 7 | "Archives > Add DONE marker": "Arşivler > BİTTİ işaretçisi ekle", 8 | "Board": "Kurul", 9 | "Batch board configuration": "Toplu kart yapılandırması", 10 | "Cancel": "İptal", 11 | "Category by included word": "Dahil edilen kelimeye göre kategori", 12 | "Change style": "Stili değiştir", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "Sayfa başlığında yer alan kelimelere göre sınıflandırın ve sıralayın. Satır sonlarıyla ayırarak yazın.", 14 | "Click the page title to open the page.": "Sayfayı açmak için sayfa başlığını tıklatın.", 15 | "Combination Menu": "Kombinasyon Menüsü", 16 | "Common settings": "Ortak ayarlar", 17 | "Copy current full page name to clipboard": "Geçerli tam sayfa adını panoya kopyala", 18 | "Create a new page": "Yeni bir sayfa oluştur", 19 | "Page created.": "Sayfa oluşturuldu.", 20 | "Enable slash commands": "Eğik çizgi komutlarını etkinleştir", 21 | "Hover over the page title to display a tooltip.": "Bir araç ipucu görüntülemek için sayfa başlığının üzerine gelin.", 22 | "If enabled": "Etkinleştirilirse", 23 | "Journals cannot be tagged.": "Dergiler etiketlenemez.", 24 | "Link to the month page": "Ay sayfasına bağlantı", 25 | "List": "Liste", 26 | "Loading...": "Yükleme...", 27 | "Menu": "Menü", 28 | "Menu > Pick-list options": "Menü > Seçim listesi seçenekleri", 29 | "order by name": "İsme Göre Sipariş Ver", 30 | "New page": "Yeni sayfa", 31 | "New page using the sub page name (namespace)": "Alt sayfa adını (ad alanı) kullanan yeni sayfa", 32 | "No need to tag the current page.": "Geçerli sayfayı etiketlemenize gerek yok.", 33 | "No page found": "Sayfa bulunamadı", 34 | "No pages found for this page name.": "Bu sayfa adı için sayfa bulunamadı.", 35 | "No pages found for this page tag.": "Bu sayfa etiketi için sayfa bulunamadı.", 36 | "Open PARA method menu": "PARA yöntemi menüsünü açın", 37 | "Open the list": "Listeyi aç", 38 | "Opened page in main content": "Ana içerikte açılan sayfa", 39 | "Opened page in right sidebar": "Sağ kenar çubuğunda açılan sayfa", 40 | "Or from the toolbar": "Veya araç çubuğundan", 41 | "Others": "Diğer", 42 | "Page already exists.": "Sayfa zaten var.", 43 | "Page not found": "Sayfa bulunamadı", 44 | "Page style": "Sayfa stili", 45 | "Page-Tag": "Sayfa Etiketi", 46 | "Pages tagged with": "Şunun ile etiketlendiği sayfalar", 47 | "Pages that contain the same name as the page name are displayed.": "Sayfa adıyla aynı adı içeren sayfalar görüntülenir.", 48 | "Pages with that tag appear in the list.": "Bu etikete sahip sayfalar listede görünür.", 49 | "Pick List": "Seçim Listesi", 50 | "Please set the pick list in the plugin settings.": "Lütfen eklenti ayarlarında seçim listesini ayarlayın.", 51 | "Plugin": "Eklenti", 52 | "Plugin settings": "Eklenti ayarları", 53 | "Press Shift key at the same time to open in sidebar": "Kenar çubuğunda açmak için Shift tuşuna aynı anda basın", 54 | "Quickly PARA method Plugin": "Hızlı bir şekilde PARA yöntemi Eklentisi", 55 | "Reload": "Yeni -den yükle", 56 | "Renamed page": "Sayfa yeniden adlandırıldı", 57 | "Same level": "Aynı seviye", 58 | "Separator character": "Ayırıcı karakter", 59 | "Sort by month": "Aylara göre sırala", 60 | "Sub page": "Alt sayfa", 61 | "Submit": "Gönder", 62 | "Tag": "Gün", 63 | "Tag the current page (Page-tag)": "Geçerli sayfayı etiketleme (Sayfa etiketi)", 64 | "The Expansion style is a style that expands on the underside.": "Genişletme stili, alt tarafa doğru genişleyen bir stildir.", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "Galeri stili blokları yukarı, aşağı, sola ve sağa düzenler.", 66 | "The Tile style displays content in a minimalist manner.": "Döşeme stili, içeriği minimalist bir şekilde görüntüler.", 67 | "The Wide style uses the screen horizontally.": "Geniş stil, ekranı yatay olarak kullanır.", 68 | "The current page does not need to be tagged.": "Geçerli sayfanın etiketlenmesine gerek yoktur.", 69 | "The current page is not found.": "Geçerli sayfa bulunamadı.", 70 | "To archive, open each page individually and change the page tag.": "Arşivlemek için her sayfayı ayrı ayrı açın ve sayfa etiketini değiştirin.", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "Etkinleştirmek veya devre dışı bırakmak için Logseq'i yeniden başlatın veya eklentiyi kapatın.", 72 | "Top level": "En üst seviye", 73 | "Update the list": "Listeyi güncelleştirme", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "Menü seçeneklerini satır sonlarıyla ayırarak yazın. '#' işareti eklemeyin.", 75 | "[DONE] marked and added date to the top of the page": "[BİTTİ] işaretlendi ve sayfanın en üstüne tarih eklendi", 76 | "in order of update": "Güncelleme sırasına göre", 77 | "logging function": "Günlüğe kaydetme işlevi", 78 | "settings": "Ayarlar", 79 | "update date/time": "Güncelleme tarihi/saati", 80 | "No need to tag the current page": "Geçerli sayfayı etiketlemeye gerek yok", 81 | "Board configuration": "Kart yapılandırması", 82 | "All": "Tüm", 83 | "Page content": "Sayfa içeriği", 84 | "Linked References": "Bağlantılı Referanslar", 85 | "Show page content": "Sayfa içeriğini göster", 86 | "Reloading will reflect this.": "Yeniden yükleme bunu yansıtacaktır.", 87 | "Show linked references": "Bağlantılı başvuruları göster", 88 | "Classify and sort by words included in the page title.": "Sayfa başlığında yer alan kelimelere göre sınıflandırın ve sıralayın.", 89 | "Classify and sort by page-tag.": "Sayfa etiketine göre sınıflandırın ve sıralayın.", 90 | "Write separated by line breaks.": "Satır sonlarıyla ayırarak yazın.", 91 | "Matching target": "Eşleşen hedef", 92 | "Add the date to the first block but not the page tag": "Tarihi ilk bloğa ekleyin, ancak sayfa etiketine eklemeyin" 93 | } -------------------------------------------------------------------------------- /src/translations/sk.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "Nástenka, ktorá hromadne zobrazuje stránky so značkami stránok vložením.", 3 | "Add a button to the left menu bar to access this plugin": "Pridajte tlačidlo na ľavý panel s ponukami pre prístup k tomuto doplnku", 4 | "Add date and link to the first block of the page": "Pridajte dátum a odkaz na prvý blok stránky", 5 | "Add only date to the first block": "Pridať iba dátum do prvého bloku", 6 | "Added date to the top of the page": "Pridaný dátum na začiatok stránky", 7 | "Archives > Add DONE marker": "Archívy > Pridať značku DONE", 8 | "Board": "Doska", 9 | "Batch board configuration": "Konfigurácia dávkovej dosky", 10 | "Cancel": "Zrušiť", 11 | "Category by included word": "Kategória podľa zahrnutého slova", 12 | "Change style": "Zmena štýlu", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "Klasifikujte a zoraďte podľa slov uvedených v názve stránky. Píšte oddelené zlommi riadkov.", 14 | "Click the page title to open the page.": "Kliknutím na názov strany otvorte stránku.", 15 | "Combination Menu": "Kombinované menu", 16 | "Common settings": "Bežné nastavenia", 17 | "Copy current full page name to clipboard": "Skopírujte aktuálny názov celej strany do schránky", 18 | "Create a new page": "Vytvorenie novej stránky", 19 | "Page created.": "Stránka bola vytvorená.", 20 | "Enable slash commands": "Povolenie príkazov lomky", 21 | "Hover over the page title to display a tooltip.": "Umiestnením kurzora myši na názov stránky zobrazíte popis.", 22 | "If enabled": "Ak je povolené", 23 | "Journals cannot be tagged.": "Denníky nie je možné označiť.", 24 | "Link to the month page": "Odkaz na stránku mesiaca", 25 | "List": "Zoznam", 26 | "Loading...": "Nakladanie...", 27 | "Menu": "Menu", 28 | "Menu > Pick-list options": "Menu > Možnosti výberového zoznamu", 29 | "order by name": "Poradiť podľa názvu", 30 | "New page": "Nová stránka", 31 | "New page using the sub page name (namespace)": "Nová stránka s názvom podstránky (menný priestor)", 32 | "No need to tag the current page.": "Nie je potrebné označovať aktuálnu stránku.", 33 | "No page found": "Nenašla sa žiadna stránka", 34 | "No pages found for this page name.": "Pre tento názov stránky sa nenašli žiadne stránky.", 35 | "No pages found for this page tag.": "Pre túto značku stránky sa nenašli žiadne stránky.", 36 | "Open PARA method menu": "Otvorte ponuku metódy PARA", 37 | "Open the list": "Otvorte zoznam", 38 | "Opened page in main content": "Otvorená stránka v hlavnom obsahu", 39 | "Opened page in right sidebar": "Otvorená stránka v pravom bočnom paneli", 40 | "Or from the toolbar": "Alebo na paneli s nástrojmi", 41 | "Others": "Ostatné", 42 | "Page already exists.": "Stránka už existuje.", 43 | "Page not found": "Stránka sa nenašla", 44 | "Page style": "Štýl stránky", 45 | "Page-Tag": "Značka stránky", 46 | "Pages tagged with": "Stránky označené", 47 | "Pages that contain the same name as the page name are displayed.": "Zobrazia sa strany, ktoré obsahujú rovnaký názov ako názov strany.", 48 | "Pages with that tag appear in the list.": "Stránky s touto značkou sa zobrazia v zozname.", 49 | "Pick List": "Zoznam výberu", 50 | "Please set the pick list in the plugin settings.": "Nastavte zoznam výberu v nastaveniach pluginu.", 51 | "Plugin": "Doplnok", 52 | "Plugin settings": "Nastavenia pluginu", 53 | "Press Shift key at the same time to open in sidebar": "Súčasným stlačením klávesu Shift otvoríte bočný panel", 54 | "Quickly PARA method Plugin": "Rýchlo PARA metóda Plugin", 55 | "Reload": "Reload", 56 | "Renamed page": "Premenovaná stránka", 57 | "Same level": "Rovnaká úroveň", 58 | "Separator character": "Znak oddeľovača", 59 | "Sort by month": "Zoradiť podľa mesiaca", 60 | "Sub page": "Podstránka", 61 | "Submit": "Predložiť", 62 | "Tag": "Deň", 63 | "Tag the current page (Page-tag)": "Označenie aktuálnej strany (značka stránky)", 64 | "The Expansion style is a style that expands on the underside.": "Štýl Rozšírenie je štýl, ktorý sa rozširuje na spodnej strane.", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "Štýl Galéria usporiada bloky hore, dole, doľava a doprava.", 66 | "The Tile style displays content in a minimalist manner.": "Štýl dlaždice zobrazuje obsah minimalistickým spôsobom.", 67 | "The Wide style uses the screen horizontally.": "Široký štýl používa obrazovku vodorovne.", 68 | "The current page does not need to be tagged.": "Aktuálnu stránku nie je potrebné označovať.", 69 | "The current page is not found.": "Aktuálna stránka sa nenašla.", 70 | "To archive, open each page individually and change the page tag.": "Ak chcete archivovať, otvorte každú stranu samostatne a zmeňte značku stránky.", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "Ak ho chcete povoliť alebo zakázať, reštartujte Logseq alebo vypnite plugin.", 72 | "Top level": "Najvyššia úroveň", 73 | "Update the list": "Aktualizácia zoznamu", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "Napíšte možnosti ponuky oddelené zlommi riadkov. Nezahŕňajte znak #.", 75 | "[DONE] marked and added date to the top of the page": "[HOTOVO] a pridaný dátum na začiatok stránky", 76 | "in order of update": "v poradí aktualizácie", 77 | "logging function": "Funkcia protokolovania", 78 | "settings": "Nastavenia", 79 | "update date/time": "Dátum/čas aktualizácie", 80 | "No need to tag the current page": "Nie je potrebné označovať aktuálnu stránku", 81 | "Board configuration": "Konfigurácia dosky", 82 | "All": "Všetko", 83 | "Page content": "Obsah stránky", 84 | "Linked References": "Prepojené odkazy", 85 | "Show page content": "Zobraziť obsah stránky", 86 | "Reloading will reflect this.": "Opätovné načítanie to bude odrážať.", 87 | "Show linked references": "Zobraziť prepojené referencie", 88 | "Classify and sort by words included in the page title.": "Klasifikujte a zoraďte podľa slov uvedených v názve stránky.", 89 | "Classify and sort by page-tag.": "Klasifikujte a zoraďte podľa značky stránky.", 90 | "Write separated by line breaks.": "Píšte oddelené zlommi riadkov.", 91 | "Matching target": "Zodpovedajúci cieľ", 92 | "Add the date to the first block but not the page tag": "Pridajte dátum do prvého bloku, ale nie do značky stránky" 93 | } -------------------------------------------------------------------------------- /src/translations/pl.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "Tablica, która zbiorczo wyświetla strony z tagami stron przez osadzenie.", 3 | "Add a button to the left menu bar to access this plugin": "Dodaj przycisk na lewym pasku menu, aby uzyskać dostęp do tej wtyczki", 4 | "Add date and link to the first block of the page": "Dodaj datę i link do pierwszego bloku strony", 5 | "Add only date to the first block": "Dodaj tylko datę do pierwszego bloku", 6 | "Added date to the top of the page": "Dodano datę na górze strony", 7 | "Archives > Add DONE marker": "Archiwa > Dodaj znacznik GOTOWE", 8 | "Board": "Deska", 9 | "Batch board configuration": "Konfiguracja płyty wsadowej", 10 | "Cancel": "Anuluj", 11 | "Category by included word": "Kategoria według dołączonego słowa", 12 | "Change style": "Zmienianie stylu", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "Klasyfikuj i sortuj według słów zawartych w tytule strony. Zapis oddzielony podziałami wierszy.", 14 | "Click the page title to open the page.": "Kliknij tytuł strony, aby ją otworzyć.", 15 | "Combination Menu": "Menu kombinowane", 16 | "Common settings": "Ustawienia wspólne", 17 | "Copy current full page name to clipboard": "Skopiuj bieżącą pełną nazwę strony do schowka", 18 | "Create a new page": "Tworzenie nowej strony", 19 | "Page created.": "Strona utworzona.", 20 | "Enable slash commands": "Włączanie poleceń z ukośnikiem", 21 | "Hover over the page title to display a tooltip.": "Najedź kursorem na tytuł strony, aby wyświetlić etykietkę narzędzia.", 22 | "If enabled": "Jeśli ta opcja jest włączona", 23 | "Journals cannot be tagged.": "Dzienniki nie mogą być oznaczone.", 24 | "Link to the month page": "Link do strony miesiąca", 25 | "List": "Lista", 26 | "Loading...": "Ładowania...", 27 | "Menu": "Menu", 28 | "Menu > Pick-list options": "Menu > Opcje listy wyboru", 29 | "order by name": "Sortuj według nazwy", 30 | "New page": "Nowa strona", 31 | "New page using the sub page name (namespace)": "Nowa strona używająca nazwy strony podrzędnej (przestrzeni nazw)", 32 | "No need to tag the current page.": "Nie ma potrzeby tagowania bieżącej strony.", 33 | "No page found": "Nie znaleziono strony", 34 | "No pages found for this page name.": "Nie znaleziono stron dla tej nazwy strony.", 35 | "No pages found for this page tag.": "Nie znaleziono stron dla tego tagu strony.", 36 | "Open PARA method menu": "Otwórz menu metody PARA", 37 | "Open the list": "Otwieranie listy", 38 | "Opened page in main content": "Otwarta strona w głównej treści", 39 | "Opened page in right sidebar": "Otwarta strona na prawym pasku bocznym", 40 | "Or from the toolbar": "Lub z paska narzędzi", 41 | "Others": "Inni", 42 | "Page already exists.": "Strona już istnieje.", 43 | "Page not found": "Nie znaleziono strony", 44 | "Page style": "Styl strony", 45 | "Page-Tag": "Znacznik strony", 46 | "Pages tagged with": "Strony oznaczone tagiem", 47 | "Pages that contain the same name as the page name are displayed.": "Wyświetlane są strony zawierające taką samą nazwę jak nazwa strony.", 48 | "Pages with that tag appear in the list.": "Strony z tym tagiem pojawią się na liście.", 49 | "Pick List": "Lista wyboru", 50 | "Please set the pick list in the plugin settings.": "Ustaw listę wyboru w ustawieniach wtyczki.", 51 | "Plugin": "Wtyczka", 52 | "Plugin settings": "Ustawienia wtyczki", 53 | "Press Shift key at the same time to open in sidebar": "Naciśnij jednocześnie Shift, aby otworzyć na pasku bocznym", 54 | "Quickly PARA method Plugin": "Szybko wtyczka metody PARA", 55 | "Reload": "Przeładować", 56 | "Renamed page": "Zmieniono nazwę strony", 57 | "Same level": "Ten sam poziom", 58 | "Separator character": "Znak separatora", 59 | "Sort by month": "Sortuj według miesiąca", 60 | "Sub page": "Podstrona", 61 | "Submit": "Prześlij", 62 | "Tag": "Dzień", 63 | "Tag the current page (Page-tag)": "Tagowanie bieżącej strony (Page-tag)", 64 | "The Expansion style is a style that expands on the underside.": "Styl Rozwinięcie to styl, który rozwija się od spodu.", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "Styl Galeria rozmieszcza bloki w górę, w dół, w lewo i w prawo.", 66 | "The Tile style displays content in a minimalist manner.": "Styl Kafelek wyświetla zawartość w minimalistyczny sposób.", 67 | "The Wide style uses the screen horizontally.": "Styl Szeroki używa ekranu w poziomie.", 68 | "The current page does not need to be tagged.": "Bieżąca strona nie musi być otagowana.", 69 | "The current page is not found.": "Nie znaleziono bieżącej strony.", 70 | "To archive, open each page individually and change the page tag.": "Aby zarchiwizować, otwórz każdą stronę osobno i zmień tag strony.", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "Aby go włączyć lub wyłączyć, uruchom ponownie Logseq lub wyłącz wtyczkę.", 72 | "Top level": "Najwyższy poziom", 73 | "Update the list": "Aktualizowanie listy", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "Napisz opcje menu oddzielone podziałami wierszy. Nie dołączaj znaku \"#\".", 75 | "[DONE] marked and added date to the top of the page": "[GOTOWE] oznaczone i dodane data na górze strony", 76 | "in order of update": "w kolejności aktualizacji", 77 | "logging function": "Funkcja logowania", 78 | "settings": "Ustawienia", 79 | "update date/time": "Aktualizuj datę/godzinę", 80 | "No need to tag the current page": "Nie ma potrzeby oznaczania bieżącej strony tagami", 81 | "Board configuration": "Konfiguracja płyty głównej", 82 | "All": "Cały", 83 | "Page content": "Zawartość strony", 84 | "Linked References": "Połączone odniesienia", 85 | "Show page content": "Pokaż zawartość strony", 86 | "Reloading will reflect this.": "Przeładowanie to odzwierciedli.", 87 | "Show linked references": "Pokaż połączone odniesienia", 88 | "Classify and sort by words included in the page title.": "Klasyfikuj i sortuj według słów zawartych w tytule strony.", 89 | "Classify and sort by page-tag.": "Klasyfikuj i sortuj według tagu strony.", 90 | "Write separated by line breaks.": "Zapis oddzielony podziałami wierszy.", 91 | "Matching target": "Pasujący element docelowy", 92 | "Add the date to the first block but not the page tag": "Dodaj datę do pierwszego bloku, ale nie do tagu strony" 93 | } -------------------------------------------------------------------------------- /src/translations/af.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "'n Bord wat bladsye met bladsyetikette in grootmaat vertoon deur in te sluit.", 3 | "Add a button to the left menu bar to access this plugin": "Voeg 'n knoppie by die linkerkieslysbalk om toegang tot hierdie inprop te kry", 4 | "Add date and link to the first block of the page": "Voeg datum en skakel by die eerste blok van die bladsy", 5 | "Add only date to the first block": "Voeg slegs datum by die eerste blok", 6 | "Added date to the top of the page": "Datum bo-aan die bladsy gevoeg", 7 | "Archives > Add DONE marker": "Argiewe > Voeg KLAAR-merker by", 8 | "Board": "Raad", 9 | "Batch board configuration": "Bondelbord konfigurasie", 10 | "Cancel": "Kanselleer", 11 | "Category by included word": "Kategorie volgens ingesluit woord", 12 | "Change style": "Verander styl", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "Klassifiseer en sorteer volgens woorde wat in die bladsytitel ingesluit is. Skryf geskei deur reëlbreuke.", 14 | "Click the page title to open the page.": "Klik op die bladsytitel om die bladsy oop te maak.", 15 | "Combination Menu": "Kombinasie spyskaart", 16 | "Common settings": "Algemene instellings", 17 | "Copy current full page name to clipboard": "Kopieer huidige volledige bladsynaam na knipbord", 18 | "Create a new page": "Skep 'n nuwe bladsy", 19 | "Page created.": "Bladsy geskep.", 20 | "Enable slash commands": "Aktiveer skuinsstreepopdragte", 21 | "Hover over the page title to display a tooltip.": "Beweeg oor die bladsytitel om 'n nutswenk te vertoon.", 22 | "If enabled": "Indien geaktiveer", 23 | "Journals cannot be tagged.": "Tydskrifte kan nie gemerk word nie.", 24 | "Link to the month page": "Skakel na die maandbladsy", 25 | "List": "Lys", 26 | "Loading...": "Laai tans...", 27 | "Menu": "Kieslys", 28 | "Menu > Pick-list options": "Kieslys > Kieslys opsies", 29 | "order by name": "Bestel volgens naam", 30 | "New page": "Nuwe bladsy", 31 | "New page using the sub page name (namespace)": "Nuwe bladsy met die subbladsynaam (naamruimte)", 32 | "No need to tag the current page.": "Dit is nie nodig om die huidige bladsy te merk nie.", 33 | "No page found": "Geen bladsy gevind nie", 34 | "No pages found for this page name.": "Geen bladsye gevind vir hierdie bladsynaam nie.", 35 | "No pages found for this page tag.": "Geen bladsye gevind vir hierdie bladsymerker nie.", 36 | "Open PARA method menu": "Maak die PARA-metode-kieslys oop", 37 | "Open the list": "Open die lys", 38 | "Opened page in main content": "Oopgemaakte bladsy in hoofinhoud", 39 | "Opened page in right sidebar": "Oopgemaakte bladsy in regterkantbalk", 40 | "Or from the toolbar": "Of vanaf die nutsbalk", 41 | "Others": "Ander", 42 | "Page already exists.": "Page bestaan reeds.", 43 | "Page not found": "Bladsy nie gevind nie", 44 | "Page style": "Bladsy styl", 45 | "Page-Tag": "Bladsy-etiket", 46 | "Pages tagged with": "Bladsye gemerk met", 47 | "Pages that contain the same name as the page name are displayed.": "Bladsye wat dieselfde naam as die bladsynaam bevat, word vertoon.", 48 | "Pages with that tag appear in the list.": "Bladsye met daardie merker verskyn in die lys.", 49 | "Pick List": "Kies lys", 50 | "Please set the pick list in the plugin settings.": "Stel asseblief die kieslys in die inpropinstellings.", 51 | "Plugin": "Invoegtoepassing", 52 | "Plugin settings": "Inprop instellings", 53 | "Press Shift key at the same time to open in sidebar": "Druk terselfdertyd op die Shift-sleutel om in die sybalk oop te maak", 54 | "Quickly PARA method Plugin": "Vinnig PARA metode Inprop", 55 | "Reload": "Herlaai", 56 | "Renamed page": "Hernoemde bladsy", 57 | "Same level": "Dieselfde vlak", 58 | "Separator character": "Skeier karakter", 59 | "Sort by month": "Sorteer volgens maand", 60 | "Sub page": "Subbladsy", 61 | "Submit": "Dien in", 62 | "Tag": "Dag", 63 | "Tag the current page (Page-tag)": "Merk die huidige bladsy (Bladsy-merker)", 64 | "The Expansion style is a style that expands on the underside.": "Die uitbreidingstyl is 'n styl wat aan die onderkant uitbrei.", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "Die galerystyl rangskik die blokke op, af, links en regs.", 66 | "The Tile style displays content in a minimalist manner.": "Die teëlstyl vertoon inhoud op 'n minimalistiese manier.", 67 | "The Wide style uses the screen horizontally.": "Die Wide-styl gebruik die skerm horisontaal.", 68 | "The current page does not need to be tagged.": "Die huidige bladsy hoef nie gemerk te word nie.", 69 | "The current page is not found.": "Die huidige bladsy word nie gevind nie.", 70 | "To archive, open each page individually and change the page tag.": "Om te argiveer, maak elke bladsy afsonderlik oop en verander die bladsymerker.", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "Om dit in te skakel of te deaktiveer, herbegin Logseq of skakel die inprop af.", 72 | "Top level": "Boonste vlak", 73 | "Update the list": "Dateer die lys op", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "Skryf die kieslysopsies geskei deur reëlbreuke. Moenie '#' insluit nie.", 75 | "[DONE] marked and added date to the top of the page": "[KLAAR] gemerk en datum bo-aan die bladsy bygevoeg", 76 | "in order of update": "in volgorde van opdatering", 77 | "logging function": "Aanmeld funksie", 78 | "settings": "Instellings", 79 | "update date/time": "Dateer datum/tyd op", 80 | "No need to tag the current page": "Dit is nie nodig om die huidige bladsy te merk nie", 81 | "Board configuration": "Bord konfigurasie", 82 | "All": "Alle", 83 | "Page content": "Bladsy inhoud", 84 | "Linked References": "Gekoppelde verwysings", 85 | "Show page content": "Wys bladsyinhoud", 86 | "Reloading will reflect this.": "Herlaai sal dit weerspieël.", 87 | "Show linked references": "Wys gekoppelde verwysings", 88 | "Classify and sort by words included in the page title.": "Klassifiseer en sorteer volgens woorde wat in die bladsytitel ingesluit is.", 89 | "Classify and sort by page-tag.": "Klassifiseer en sorteer volgens bladsy-merker.", 90 | "Write separated by line breaks.": "Skryf geskei deur reëlbreuke.", 91 | "Matching target": "Ooreenstemmende teiken", 92 | "Add the date to the first block but not the page tag": "Voeg die datum by die eerste blok, maar nie die bladsymerker nie" 93 | } -------------------------------------------------------------------------------- /src/translations/id.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "Papan yang menampilkan halaman dengan tag halaman secara massal dengan penyematan.", 3 | "Add a button to the left menu bar to access this plugin": "Tambahkan tombol ke bilah menu kiri untuk mengakses plugin ini", 4 | "Add date and link to the first block of the page": "Tambahkan tanggal dan tautan ke blok pertama halaman", 5 | "Add only date to the first block": "Tambahkan tanggal saja ke blok pertama", 6 | "Added date to the top of the page": "Menambahkan tanggal ke bagian atas halaman", 7 | "Archives > Add DONE marker": "Arsip > Tambahkan penanda DONE", 8 | "Board": "Papan", 9 | "Batch board configuration": "Konfigurasi papan batch", 10 | "Cancel": "Membatalkan", 11 | "Category by included word": "Kategori berdasarkan kata yang disertakan", 12 | "Change style": "Ubah gaya", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "Klasifikasikan dan urutkan berdasarkan kata-kata yang disertakan dalam judul halaman. Tulis dipisahkan oleh jeda baris.", 14 | "Click the page title to open the page.": "Klik judul halaman untuk membuka halaman.", 15 | "Combination Menu": "Menu Kombinasi", 16 | "Common settings": "Pengaturan umum", 17 | "Copy current full page name to clipboard": "Salin nama halaman lengkap saat ini ke clipboard", 18 | "Create a new page": "Membuat halaman baru", 19 | "Page created.": "Halaman dibuat.", 20 | "Enable slash commands": "Mengaktifkan perintah garis miring", 21 | "Hover over the page title to display a tooltip.": "Arahkan kursor ke judul halaman untuk menampilkan tooltip.", 22 | "If enabled": "Jika diaktifkan", 23 | "Journals cannot be tagged.": "Jurnal tidak dapat ditandai.", 24 | "Link to the month page": "Tautan ke halaman bulan", 25 | "List": "Daftar", 26 | "Loading...": "Loading...", 27 | "Menu": "Menu", 28 | "Menu > Pick-list options": "Menu > Opsi daftar pilihan", 29 | "order by name": "Urutkan berdasarkan Nama", 30 | "New page": "Halaman baru", 31 | "New page using the sub page name (namespace)": "Halaman baru menggunakan sub nama halaman (namespace)", 32 | "No need to tag the current page.": "Tidak perlu menandai halaman saat ini.", 33 | "No page found": "Tidak ada halaman yang ditemukan", 34 | "No pages found for this page name.": "Tidak ada halaman yang ditemukan untuk nama halaman ini.", 35 | "No pages found for this page tag.": "Tidak ada halaman yang ditemukan untuk tag halaman ini.", 36 | "Open PARA method menu": "Buka menu metode PARA", 37 | "Open the list": "Buka daftar", 38 | "Opened page in main content": "Halaman yang dibuka di konten utama", 39 | "Opened page in right sidebar": "Halaman yang dibuka di bilah sisi kanan", 40 | "Or from the toolbar": "Atau dari toolbar", 41 | "Others": "Lain", 42 | "Page already exists.": "Halaman sudah ada.", 43 | "Page not found": "Halaman tidak ditemukan", 44 | "Page style": "Gaya halaman", 45 | "Page-Tag": "Tag Halaman", 46 | "Pages tagged with": "Halaman yang ditandai dengan", 47 | "Pages that contain the same name as the page name are displayed.": "Halaman yang berisi nama yang sama dengan nama halaman akan ditampilkan.", 48 | "Pages with that tag appear in the list.": "Halaman dengan tag tersebut muncul dalam daftar.", 49 | "Pick List": "Daftar Pilih", 50 | "Please set the pick list in the plugin settings.": "Silakan atur daftar pilihan di pengaturan plugin.", 51 | "Plugin": "Plugin", 52 | "Plugin settings": "Pengaturan plugin", 53 | "Press Shift key at the same time to open in sidebar": "Tekan tombol Shift secara bersamaan untuk membuka di sidebar", 54 | "Quickly PARA method Plugin": "Plugin metode PARA dengan cepat", 55 | "Reload": "Reload", 56 | "Renamed page": "Halaman yang diganti namanya", 57 | "Same level": "Tingkat yang sama", 58 | "Separator character": "Karakter pemisah", 59 | "Sort by month": "Urutkan berdasarkan bulan", 60 | "Sub page": "Sub halaman", 61 | "Submit": "Tunduk", 62 | "Tag": "Hari", 63 | "Tag the current page (Page-tag)": "Menandai halaman saat ini (Page-tag)", 64 | "The Expansion style is a style that expands on the underside.": "Gaya Expansion adalah gaya yang meluas di bagian bawah.", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "Gaya Galeri mengatur blok atas, bawah, kiri, dan kanan.", 66 | "The Tile style displays content in a minimalist manner.": "Gaya Ubin menampilkan konten dengan cara minimalis.", 67 | "The Wide style uses the screen horizontally.": "Gaya Wide menggunakan layar secara horizontal.", 68 | "The current page does not need to be tagged.": "Halaman saat ini tidak perlu ditandai.", 69 | "The current page is not found.": "Halaman saat ini tidak ditemukan.", 70 | "To archive, open each page individually and change the page tag.": "Untuk mengarsipkan, buka setiap halaman satu per satu dan ubah tag halaman.", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "Untuk mengaktifkan atau menonaktifkannya, mulai ulang Logseq atau matikan plugin.", 72 | "Top level": "Tingkat atas", 73 | "Update the list": "Perbarui daftar", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "Tulis opsi menu yang dipisahkan oleh jeda baris. Jangan sertakan '#'.", 75 | "[DONE] marked and added date to the top of the page": "[SELESAI] ditandai dan menambahkan tanggal ke bagian atas halaman", 76 | "in order of update": "dalam urutan pembaruan", 77 | "logging function": "Fungsi pencatatan", 78 | "settings": "Pengaturan", 79 | "update date/time": "Perbarui tanggal/waktu", 80 | "No need to tag the current page": "Tidak perlu menandai halaman saat ini", 81 | "Board configuration": "Konfigurasi papan", 82 | "All": "Semua", 83 | "Page content": "Konten halaman", 84 | "Linked References": "Referensi Tertaut", 85 | "Show page content": "Tampilkan konten halaman", 86 | "Reloading will reflect this.": "Memuat ulang akan mencerminkan hal ini.", 87 | "Show linked references": "Tampilkan referensi yang ditautkan", 88 | "Classify and sort by words included in the page title.": "Klasifikasikan dan urutkan berdasarkan kata-kata yang disertakan dalam judul halaman.", 89 | "Classify and sort by page-tag.": "Klasifikasikan dan urutkan berdasarkan page-tag.", 90 | "Write separated by line breaks.": "Tulis dipisahkan oleh jeda baris.", 91 | "Matching target": "Pencocokan target", 92 | "Add the date to the first block but not the page tag": "Tambahkan tanggal ke blok pertama tetapi bukan tag halaman" 93 | } -------------------------------------------------------------------------------- /src/translations/uk.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "Дошка, на якій масово відображаються сторінки з тегами сторінок за допомогою вбудовування.", 3 | "Add a button to the left menu bar to access this plugin": "Додайте кнопку в лівий рядок меню, щоб отримати доступ до цього плагіна", 4 | "Add date and link to the first block of the page": "Додайте дату та посилання на перший блок сторінки", 5 | "Add only date to the first block": "Додайте лише дату до першого блоку", 6 | "Added date to the top of the page": "Додано дату у верхній частині сторінки", 7 | "Archives > Add DONE marker": "Архіви > Додати маркер ГОТОВО", 8 | "Board": "Борт", 9 | "Batch board configuration": "Конфігурація пакетної плати", 10 | "Cancel": "Скасувати", 11 | "Category by included word": "Категорія за включеним словом", 12 | "Change style": "Змінити стиль", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "Класифікуйте та сортуйте за словами, що входять до заголовку сторінки. Пишіть через розрив рядків.", 14 | "Click the page title to open the page.": "Натисніть заголовок сторінки, щоб відкрити її.", 15 | "Combination Menu": "Комбіноване меню", 16 | "Common settings": "Загальні налаштування", 17 | "Copy current full page name to clipboard": "Скопіювати поточну повну назву сторінки в буфер обміну", 18 | "Create a new page": "Створити нову сторінку", 19 | "Page created.": "Сторінку створено.", 20 | "Enable slash commands": "Увімкнення команд слеша", 21 | "Hover over the page title to display a tooltip.": "Наведіть курсор на заголовок сторінки, щоб відобразити підказку.", 22 | "If enabled": "Якщо увімкнено", 23 | "Journals cannot be tagged.": "Журнали не можна позначати тегами.", 24 | "Link to the month page": "Посилання на сторінку місяця", 25 | "List": "Список", 26 | "Loading...": "Завантаження...", 27 | "Menu": "Меню", 28 | "Menu > Pick-list options": "Меню > Параметри списку вибору", 29 | "order by name": "Замовити за назвою", 30 | "New page": "Нова сторінка", 31 | "New page using the sub page name (namespace)": "Нова сторінка з використанням назви підсторінки (простору імен)", 32 | "No need to tag the current page.": "Не потрібно позначати поточну сторінку.", 33 | "No page found": "Сторінку не знайдено", 34 | "No pages found for this page name.": "Для цієї назви сторінки не знайдено сторінок.", 35 | "No pages found for this page tag.": "За цим тегом сторінки не знайдено сторінок.", 36 | "Open PARA method menu": "Відкрийте меню методу PARA", 37 | "Open the list": "Відкрити список", 38 | "Opened page in main content": "Відкрита сторінка в основному контенті", 39 | "Opened page in right sidebar": "Відкрита сторінка в правій бічній панелі", 40 | "Or from the toolbar": "Або з панелі інструментів", 41 | "Others": "Інші", 42 | "Page already exists.": "Сторінка вже існує.", 43 | "Page not found": "Сторінку не знайдено", 44 | "Page style": "Стиль сторінки", 45 | "Page-Tag": "Тег сторінки", 46 | "Pages tagged with": "Сторінки, позначені тегом", 47 | "Pages that contain the same name as the page name are displayed.": "Відображаються сторінки, які містять те саме ім'я, що й назва сторінки.", 48 | "Pages with that tag appear in the list.": "Сторінки з цим тегом з'являться у списку.", 49 | "Pick List": "Список вибору", 50 | "Please set the pick list in the plugin settings.": "Будь ласка, встановіть список вибору в налаштуваннях плагіна.", 51 | "Plugin": "Плагін", 52 | "Plugin settings": "Налаштування плагіна", 53 | "Press Shift key at the same time to open in sidebar": "Одночасно натисніть клавішу Shift, щоб відкрити на бічній панелі", 54 | "Quickly PARA method Plugin": "Плагін швидкого методу PARA", 55 | "Reload": "Перезавантажити", 56 | "Renamed page": "Перейменована сторінка", 57 | "Same level": "Той самий рівень", 58 | "Separator character": "Символ роздільника", 59 | "Sort by month": "Сортувати по місяцях", 60 | "Sub page": "Підсторінка", 61 | "Submit": "Представити", 62 | "Tag": "День", 63 | "Tag the current page (Page-tag)": "Позначити поточну сторінку тегом (Page-tag)", 64 | "The Expansion style is a style that expands on the underside.": "Стиль розширення – це стиль, який розширюється з нижньої сторони.", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "Стиль «Галерея» розташовує блоки вгору, вниз, ліворуч і праворуч.", 66 | "The Tile style displays content in a minimalist manner.": "Стиль «Плитка» відображає контент у мінімалістичній манері.", 67 | "The Wide style uses the screen horizontally.": "У стилі «Широкий» екран розташовується горизонтально.", 68 | "The current page does not need to be tagged.": "Поточну сторінку не потрібно позначати тегами.", 69 | "The current page is not found.": "Поточну сторінку не знайдено.", 70 | "To archive, open each page individually and change the page tag.": "Щоб архівувати, відкрийте кожну сторінку окремо та змініть тег сторінки.", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "Щоб увімкнути або вимкнути його, перезапустіть Logseq або вимкніть плагін.", 72 | "Top level": "Найвищий рівень", 73 | "Update the list": "Оновити список", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "Напишіть параметри меню через розриви рядків. Не включайте '#'.", 75 | "[DONE] marked and added date to the top of the page": "[ГОТОВО] позначено та додано дату у верхній частині сторінки.", 76 | "in order of update": "в порядку оновлення", 77 | "logging function": "Функція логування", 78 | "settings": "Параметри", 79 | "update date/time": "Оновити дату/час", 80 | "No need to tag the current page": "Не потрібно позначати поточну сторінку тегами", 81 | "Board configuration": "Конфігурація плати", 82 | "All": "Увесь", 83 | "Page content": "Зміст сторінки", 84 | "Linked References": "Пов'язані посилання", 85 | "Show page content": "Показати вміст сторінки", 86 | "Reloading will reflect this.": "Перезавантаження відобразить це.", 87 | "Show linked references": "Показувати посилання на посилання", 88 | "Classify and sort by words included in the page title.": "Класифікуйте та сортуйте за словами, що входять до заголовку сторінки.", 89 | "Classify and sort by page-tag.": "Класифікація та сортування за сторінкою-тегом.", 90 | "Write separated by line breaks.": "Пишіть через розрив рядків.", 91 | "Matching target": "Узгодження мети", 92 | "Add the date to the first block but not the page tag": "Додайте дату до першого блоку, але не тег сторінки" 93 | } -------------------------------------------------------------------------------- /src/translations/ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "Доска, на которой массово отображаются страницы с тегами страниц путем встраивания.", 3 | "Add a button to the left menu bar to access this plugin": "Добавьте кнопку в левую строку меню для доступа к этому плагину", 4 | "Add date and link to the first block of the page": "Добавьте дату и ссылку в первый блок страницы", 5 | "Add only date to the first block": "Добавьте в первый блок только дату", 6 | "Added date to the top of the page": "Добавлена дата в верхнюю часть страницы", 7 | "Archives > Add DONE marker": "Архивы > Добавить маркер DONE", 8 | "Board": "Доска", 9 | "Batch board configuration": "Конфигурация пакетной доски", 10 | "Cancel": "Отмена", 11 | "Category by included word": "Категория по включенному слову", 12 | "Change style": "Изменить стиль", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "Классифицируйте и сортируйте по словам, включенным в заголовок страницы. Запись разделена переносами строк.", 14 | "Click the page title to open the page.": "Нажмите на заголовок страницы, чтобы открыть страницу.", 15 | "Combination Menu": "Комбинированное меню", 16 | "Common settings": "Общие настройки", 17 | "Copy current full page name to clipboard": "Копирование текущего полного названия страницы в буфер обмена", 18 | "Create a new page": "Создание новой страницы", 19 | "Page created.": "Страница создана.", 20 | "Enable slash commands": "Включение команд косой черты", 21 | "Hover over the page title to display a tooltip.": "Наведите указатель мыши на заголовок страницы, чтобы отобразить всплывающую подсказку.", 22 | "If enabled": "Если включено", 23 | "Journals cannot be tagged.": "Журналы не могут быть помечены.", 24 | "Link to the month page": "Ссылка на страницу месяца", 25 | "List": "Список", 26 | "Loading...": "Погрузка...", 27 | "Menu": "Меню", 28 | "Menu > Pick-list options": "Меню > Опции списка выбора", 29 | "order by name": "Заказать по названию", 30 | "New page": "Новая страница", 31 | "New page using the sub page name (namespace)": "Новая страница с использованием имени подстраницы (namespace)", 32 | "No need to tag the current page.": "Нет необходимости помечать текущую страницу тегами.", 33 | "No page found": "Страница не найдена", 34 | "No pages found for this page name.": "Для этого имени страницы не найдено страниц.", 35 | "No pages found for this page tag.": "Для этого тега страниц не найдено.", 36 | "Open PARA method menu": "Откройте меню метода PARA", 37 | "Open the list": "Открыть список", 38 | "Opened page in main content": "Открытая страница в основном содержимом", 39 | "Opened page in right sidebar": "Открыта страница на правой боковой панели", 40 | "Or from the toolbar": "Или с панели инструментов", 41 | "Others": "Другие", 42 | "Page already exists.": "Страница уже существует.", 43 | "Page not found": "Страница не найдена", 44 | "Page style": "Стиль страницы", 45 | "Page-Tag": "Тег страницы", 46 | "Pages tagged with": "Страницы с тегами", 47 | "Pages that contain the same name as the page name are displayed.": "Отображаются страницы, которые содержат то же имя, что и название страницы.", 48 | "Pages with that tag appear in the list.": "Страницы с этим тегом появятся в списке.", 49 | "Pick List": "Список выбора", 50 | "Please set the pick list in the plugin settings.": "Пожалуйста, установите список выбора в настройках плагина.", 51 | "Plugin": "Плагин", 52 | "Plugin settings": "Настройки плагина", 53 | "Press Shift key at the same time to open in sidebar": "Одновременно нажмите клавишу Shift, чтобы открыть боковую панель", 54 | "Quickly PARA method Plugin": "Плагин метода Quick PARA", 55 | "Reload": "Перезаряжать", 56 | "Renamed page": "Переименованная страница", 57 | "Same level": "Тот же уровень", 58 | "Separator character": "Символ разделителя", 59 | "Sort by month": "Сортировать по месяцам", 60 | "Sub page": "Подстраница", 61 | "Submit": "Отправить", 62 | "Tag": "День", 63 | "Tag the current page (Page-tag)": "Тег на текущей странице (Page-tag)", 64 | "The Expansion style is a style that expands on the underside.": "Стиль «Расширение» — это стиль, который расширяется с нижней стороны.", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "Стиль «Галерея» располагает блоки вверх, вниз, влево и вправо.", 66 | "The Tile style displays content in a minimalist manner.": "Стиль Плитка отображает содержимое в минималистичной манере.", 67 | "The Wide style uses the screen horizontally.": "В стиле Wide экран расположен горизонтально.", 68 | "The current page does not need to be tagged.": "Текущую страницу не нужно тегировать.", 69 | "The current page is not found.": "Текущая страница не найдена.", 70 | "To archive, open each page individually and change the page tag.": "Чтобы архивировать, откройте каждую страницу по отдельности и измените тег страницы.", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "Чтобы включить или отключить его, перезапустите Logseq или выключите плагин.", 72 | "Top level": "Верхний уровень", 73 | "Update the list": "Обновление списка", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "Запишите пункты меню через перенос строки. Не включайте '#'.", 75 | "[DONE] marked and added date to the top of the page": "[DONE] отмечено и добавлена дата в верхней части страницы", 76 | "in order of update": "в порядке обновления", 77 | "logging function": "Функция ведения журнала", 78 | "settings": "Параметры", 79 | "update date/time": "Обновление даты/времени", 80 | "No need to tag the current page": "Нет необходимости помечать текущую страницу тегами", 81 | "Board configuration": "Конфигурация платы", 82 | "All": "Все", 83 | "Page content": "Содержание страницы", 84 | "Linked References": "Связанные ссылки", 85 | "Show page content": "Показать содержимое страницы", 86 | "Reloading will reflect this.": "Перезарядка отразит это.", 87 | "Show linked references": "Показать ссылки на ссылки", 88 | "Classify and sort by words included in the page title.": "Классифицируйте и сортируйте по словам, включенным в заголовок страницы.", 89 | "Classify and sort by page-tag.": "Классифицируйте и сортируйте по тегу страницы.", 90 | "Write separated by line breaks.": "Запись разделена переносами строк.", 91 | "Matching target": "Сопоставление цели", 92 | "Add the date to the first block but not the page tag": "Добавьте дату в первый блок, но не в тег страницы" 93 | } -------------------------------------------------------------------------------- /src/translations/pt-BR.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "Um quadro que exibe páginas com tags de página em massa por incorporação.", 3 | "Add a button to the left menu bar to access this plugin": "Adicione um botão à barra de menu à esquerda para acessar este plugin", 4 | "Add date and link to the first block of the page": "Adicionar data e link para o primeiro bloco da página", 5 | "Add only date to the first block": "Adicionar apenas data ao primeiro bloco", 6 | "Added date to the top of the page": "Adicionada data ao topo da página", 7 | "Archives > Add DONE marker": "Arquivos > Adicionar marcador DONE", 8 | "Board": "Tábua", 9 | "Batch board configuration": "Configuração da placa de lote", 10 | "Cancel": "Cancelar", 11 | "Category by included word": "Categoria por palavra incluída", 12 | "Change style": "Mudar de estilo", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "Classifique e classifique por palavras incluídas no título da página. Escreva separado por quebras de linha.", 14 | "Click the page title to open the page.": "Clique no título da página para abri-la.", 15 | "Combination Menu": "Menu de combinação", 16 | "Common settings": "Configurações comuns", 17 | "Copy current full page name to clipboard": "Copiar o nome da página inteira atual para a área de transferência", 18 | "Create a new page": "Criar uma nova página", 19 | "Page created.": "Página criada.", 20 | "Enable slash commands": "Ativar comandos de barra", 21 | "Hover over the page title to display a tooltip.": "Passe o mouse sobre o título da página para exibir uma dica de ferramenta.", 22 | "If enabled": "Se habilitado", 23 | "Journals cannot be tagged.": "Os diários não podem ser marcados.", 24 | "Link to the month page": "Link para a página do mês", 25 | "List": "Lista", 26 | "Loading...": "Carregamento...", 27 | "Menu": "Menu", 28 | "Menu > Pick-list options": "Menu > Opções da lista de opções", 29 | "order by name": "Ordenar por nome", 30 | "New page": "Nova página", 31 | "New page using the sub page name (namespace)": "Nova página usando o nome da subpágina (namespace)", 32 | "No need to tag the current page.": "Não há necessidade de marcar a página atual.", 33 | "No page found": "Nenhuma página encontrada", 34 | "No pages found for this page name.": "Nenhuma página encontrada para este nome de página.", 35 | "No pages found for this page tag.": "Nenhuma página encontrada para esta tag de página.", 36 | "Open PARA method menu": "Abra o menu do método PARA", 37 | "Open the list": "Abrir a lista", 38 | "Opened page in main content": "Página aberta no conteúdo principal", 39 | "Opened page in right sidebar": "Página aberta na barra lateral direita", 40 | "Or from the toolbar": "Ou na barra de ferramentas", 41 | "Others": "Outros", 42 | "Page already exists.": "A página já existe.", 43 | "Page not found": "Página não encontrada", 44 | "Page style": "Estilo de página", 45 | "Page-Tag": "Tag de página", 46 | "Pages tagged with": "Páginas marcadas com", 47 | "Pages that contain the same name as the page name are displayed.": "As páginas que contêm o mesmo nome que o nome da página são exibidas.", 48 | "Pages with that tag appear in the list.": "As páginas com essa tag aparecem na lista.", 49 | "Pick List": "Lista de seleção", 50 | "Please set the pick list in the plugin settings.": "Por favor, defina a lista de opções nas configurações do plugin.", 51 | "Plugin": "Plug-in", 52 | "Plugin settings": "Configurações do plug-in", 53 | "Press Shift key at the same time to open in sidebar": "Pressione a tecla Shift ao mesmo tempo para abrir na barra lateral", 54 | "Quickly PARA method Plugin": "Rapidamente Plugin de método PARA", 55 | "Reload": "Recarregar", 56 | "Renamed page": "Página renomeada", 57 | "Same level": "Mesmo nível", 58 | "Separator character": "Caractere separador", 59 | "Sort by month": "Classificar por mês", 60 | "Sub page": "Subpágina", 61 | "Submit": "Enviar", 62 | "Tag": "Dia", 63 | "Tag the current page (Page-tag)": "Marcar a página atual (Page-tag)", 64 | "The Expansion style is a style that expands on the underside.": "O estilo de expansão é um estilo que se expande na parte inferior.", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "O estilo Galeria organiza os blocos para cima, para baixo, para a esquerda e para a direita.", 66 | "The Tile style displays content in a minimalist manner.": "O estilo Tile exibe o conteúdo de maneira minimalista.", 67 | "The Wide style uses the screen horizontally.": "O estilo Wide usa a tela horizontalmente.", 68 | "The current page does not need to be tagged.": "A página atual não precisa ser marcada.", 69 | "The current page is not found.": "A página atual não foi encontrada.", 70 | "To archive, open each page individually and change the page tag.": "Para arquivar, abra cada página individualmente e altere a tag de página.", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "Para ativá-lo ou desativá-lo, reinicie o Logseq ou desative o plug-in.", 72 | "Top level": "Nível superior", 73 | "Update the list": "Atualizar a lista", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "Escreva as opções do menu separadas por quebras de linha. Não inclua '#'.", 75 | "[DONE] marked and added date to the top of the page": "[CONCLUÍDO] marcou e adicionou a data ao topo da página", 76 | "in order of update": "em ordem de atualização", 77 | "logging function": "Função de registro", 78 | "settings": "Configurações", 79 | "update date/time": "data/hora de atualização", 80 | "No need to tag the current page": "Não há necessidade de marcar a página atual", 81 | "Board configuration": "Configuração da placa", 82 | "All": "Todo", 83 | "Page content": "Conteúdo da página", 84 | "Linked References": "Referências vinculadas", 85 | "Show page content": "Mostrar conteúdo da página", 86 | "Reloading will reflect this.": "O recarregamento refletirá isso.", 87 | "Show linked references": "Mostrar referências vinculadas", 88 | "Classify and sort by words included in the page title.": "Classifique e classifique por palavras incluídas no título da página.", 89 | "Classify and sort by page-tag.": "Classifique e classifique por tag de página.", 90 | "Write separated by line breaks.": "Escreva separado por quebras de linha.", 91 | "Matching target": "Destino correspondente", 92 | "Add the date to the first block but not the page tag": "Adicione a data ao primeiro bloco, mas não à tag de página" 93 | } -------------------------------------------------------------------------------- /src/translations/nl.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "Een bord dat pagina's met paginatags in bulk weergeeft door in te sluiten.", 3 | "Add a button to the left menu bar to access this plugin": "Voeg een knop toe aan de linkermenubalk om toegang te krijgen tot deze plug-in", 4 | "Add date and link to the first block of the page": "Voeg datum en link toe aan het eerste blok van de pagina", 5 | "Add only date to the first block": "Voeg alleen datum toe aan het eerste blok", 6 | "Added date to the top of the page": "Datum toegevoegd aan de bovenkant van de pagina", 7 | "Archives > Add DONE marker": "Archiveert > GEREED-markering toevoegen", 8 | "Board": "Plank", 9 | "Batch board configuration": "Configuratie van batchbord", 10 | "Cancel": "Annuleren", 11 | "Category by included word": "Categorie op opgenomen woord", 12 | "Change style": "Stijl wijzigen", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "Classificeer en sorteer op woorden die in de paginatitel zijn opgenomen. Schrijven gescheiden door regeleinden.", 14 | "Click the page title to open the page.": "Klik op de paginatitel om de pagina te openen.", 15 | "Combination Menu": "Combinatie Menu", 16 | "Common settings": "Algemene instellingen", 17 | "Copy current full page name to clipboard": "Kopieer de huidige naam van de volledige pagina naar het klembord", 18 | "Create a new page": "Een nieuwe pagina maken", 19 | "Page created.": "Pagina aangemaakt.", 20 | "Enable slash commands": "Slash-opdrachten inschakelen", 21 | "Hover over the page title to display a tooltip.": "Plaats de muisaanwijzer op de paginatitel om knopinfo weer te geven.", 22 | "If enabled": "Indien ingeschakeld", 23 | "Journals cannot be tagged.": "Tijdschriften kunnen niet worden getagd.", 24 | "Link to the month page": "Link naar de maandpagina", 25 | "List": "Lijst", 26 | "Loading...": "Laden...", 27 | "Menu": "Menu", 28 | "Menu > Pick-list options": "Menu > Keuzelijst opties", 29 | "order by name": "Sorteren op naam", 30 | "New page": "Nieuwe pagina", 31 | "New page using the sub page name (namespace)": "Nieuwe pagina met de naam van de subpagina (naamruimte)", 32 | "No need to tag the current page.": "Het is niet nodig om de huidige pagina te taggen.", 33 | "No page found": "Geen pagina gevonden", 34 | "No pages found for this page name.": "Er zijn geen pagina's gevonden voor deze paginanaam.", 35 | "No pages found for this page tag.": "Er zijn geen pagina's gevonden voor deze paginatag.", 36 | "Open PARA method menu": "Open PARA method menu", 37 | "Open the list": "Open de lijst", 38 | "Opened page in main content": "Geopende pagina in hoofdinhoud", 39 | "Opened page in right sidebar": "Geopende pagina in de rechterzijbalk", 40 | "Or from the toolbar": "Of via de werkbalk", 41 | "Others": "Anderen", 42 | "Page already exists.": "Pagina bestaat al.", 43 | "Page not found": "Pagina niet gevonden", 44 | "Page style": "Pagina stijl", 45 | "Page-Tag": "Pagina-Tag", 46 | "Pages tagged with": "Pagina's getagd met", 47 | "Pages that contain the same name as the page name are displayed.": "Pagina's die dezelfde naam bevatten als de paginanaam worden weergegeven.", 48 | "Pages with that tag appear in the list.": "Pagina's met die tag worden in de lijst weergegeven.", 49 | "Pick List": "Keuzelijst", 50 | "Please set the pick list in the plugin settings.": "Stel de keuzelijst in de instellingen van de plug-in in.", 51 | "Plugin": "Plug-in", 52 | "Plugin settings": "Plugin instellingen", 53 | "Press Shift key at the same time to open in sidebar": "Druk tegelijkertijd op de Shift-toets om in de zijbalk te openen", 54 | "Quickly PARA method Plugin": "Snel PARA-methode Plugin", 55 | "Reload": "Herladen", 56 | "Renamed page": "Hernoemde pagina", 57 | "Same level": "Zelfde niveau", 58 | "Separator character": "Scheidingsteken", 59 | "Sort by month": "Sorteren op maand", 60 | "Sub page": "Sub pagina", 61 | "Submit": "Opslaan", 62 | "Tag": "Dag", 63 | "Tag the current page (Page-tag)": "Tag de huidige pagina (Page-tag)", 64 | "The Expansion style is a style that expands on the underside.": "De stijl Uitbreiding is een stijl die aan de onderkant uitbreidt.", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "De galerijstijl rangschikt de blokken omhoog, omlaag, links en rechts.", 66 | "The Tile style displays content in a minimalist manner.": "De Tile-stijl geeft inhoud op een minimalistische manier weer.", 67 | "The Wide style uses the screen horizontally.": "In de stijl Breed wordt het scherm horizontaal gebruikt.", 68 | "The current page does not need to be tagged.": "De huidige pagina hoeft niet te worden getagd.", 69 | "The current page is not found.": "De huidige pagina is niet gevonden.", 70 | "To archive, open each page individually and change the page tag.": "Als u wilt archiveren, opent u elke pagina afzonderlijk en wijzigt u de paginatag.", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "Om het in of uit te schakelen, start u Logseq opnieuw op of schakelt u de plug-in uit.", 72 | "Top level": "Hoogste niveau", 73 | "Update the list": "De lijst bijwerken", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "Schrijf de menu-opties gescheiden door regeleinden. Gebruik geen '#'.", 75 | "[DONE] marked and added date to the top of the page": "[DONE] gemarkeerde en toegevoegde datum bovenaan de pagina", 76 | "in order of update": "in volgorde van update", 77 | "logging function": "Logging functie", 78 | "settings": "Instellingen", 79 | "update date/time": "Datum/tijd bijwerken", 80 | "No need to tag the current page": "Het is niet nodig om de huidige pagina te taggen", 81 | "Board configuration": "Configuratie van het bord", 82 | "All": "Alle", 83 | "Page content": "Pagina inhoud", 84 | "Linked References": "Gelinkte referenties", 85 | "Show page content": "Pagina-inhoud weergeven", 86 | "Reloading will reflect this.": "Herladen zal dit weerspiegelen.", 87 | "Show linked references": "Gekoppelde referenties weergeven", 88 | "Classify and sort by words included in the page title.": "Classificeer en sorteer op woorden die in de paginatitel zijn opgenomen.", 89 | "Classify and sort by page-tag.": "Classificeer en sorteer op pagina-tag.", 90 | "Write separated by line breaks.": "Schrijven gescheiden door regeleinden.", 91 | "Matching target": "Overeenkomend doel", 92 | "Add the date to the first block but not the page tag": "Voeg de datum toe aan het eerste blok, maar niet de paginatag" 93 | } -------------------------------------------------------------------------------- /src/translations/pt-PT.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "Um quadro que exibe páginas com tags de página em massa por incorporação.", 3 | "Add a button to the left menu bar to access this plugin": "Adicione um botão à barra de menu à esquerda para acessar este plugin", 4 | "Add date and link to the first block of the page": "Adicionar data e link ao primeiro bloco da página", 5 | "Add only date to the first block": "Adicionar apenas data ao primeiro bloco", 6 | "Added date to the top of the page": "Data adicionada ao topo da página", 7 | "Archives > Add DONE marker": "Arquivos > Adicionar marcador DONE", 8 | "Board": "Placa", 9 | "Batch board configuration": "Configuração da placa de lote", 10 | "Cancel": "Cancelar", 11 | "Category by included word": "Categoria por palavra incluída", 12 | "Change style": "Alterar estilo", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "Classifique e classifique por palavras incluídas no título da página. Escreva separado por quebras de linha.", 14 | "Click the page title to open the page.": "Clique no título da página para abri-la.", 15 | "Combination Menu": "Menu de combinação", 16 | "Common settings": "Configurações comuns", 17 | "Copy current full page name to clipboard": "Copiar o nome da página inteira atual para a área de transferência", 18 | "Create a new page": "Criar uma nova página", 19 | "Page created.": "Página criada.", 20 | "Enable slash commands": "Ativar comandos de barra", 21 | "Hover over the page title to display a tooltip.": "Passe o cursor sobre o título da página para exibir uma dica de ferramenta.", 22 | "If enabled": "Se ativado", 23 | "Journals cannot be tagged.": "Os periódicos não podem ser marcados.", 24 | "Link to the month page": "Link para a página do mês", 25 | "List": "Lista", 26 | "Loading...": "A carregar...", 27 | "Menu": "Cardápio", 28 | "Menu > Pick-list options": "Opções de menu > lista de opções", 29 | "order by name": "Encomendar por nome", 30 | "New page": "Nova página", 31 | "New page using the sub page name (namespace)": "Nova página usando o nome da subpágina (namespace)", 32 | "No need to tag the current page.": "Não há necessidade de marcar a página atual.", 33 | "No page found": "Nenhuma página encontrada", 34 | "No pages found for this page name.": "Nenhuma página encontrada para este nome de página.", 35 | "No pages found for this page tag.": "Nenhuma página encontrada para esta tag de página.", 36 | "Open PARA method menu": "Abrir menu do método PARA", 37 | "Open the list": "Abrir a lista", 38 | "Opened page in main content": "Página aberta no conteúdo principal", 39 | "Opened page in right sidebar": "Página aberta na barra lateral direita", 40 | "Or from the toolbar": "Ou a partir da barra de ferramentas", 41 | "Others": "Outros", 42 | "Page already exists.": "Página já existe.", 43 | "Page not found": "Página não encontrada", 44 | "Page style": "Estilo da página", 45 | "Page-Tag": "Página-Tag", 46 | "Pages tagged with": "Páginas marcadas com", 47 | "Pages that contain the same name as the page name are displayed.": "As páginas que contêm o mesmo nome que o nome da página são exibidas.", 48 | "Pages with that tag appear in the list.": "As páginas com essa tag aparecem na lista.", 49 | "Pick List": "Lista de Escolhas", 50 | "Please set the pick list in the plugin settings.": "Por favor, defina a lista de seleção nas configurações do plugin.", 51 | "Plugin": "Plugin", 52 | "Plugin settings": "Configurações do plug-in", 53 | "Press Shift key at the same time to open in sidebar": "Pressione a tecla Shift ao mesmo tempo para abrir na barra lateral", 54 | "Quickly PARA method Plugin": "Rapidamente PARA método Plugin", 55 | "Reload": "Recarregar", 56 | "Renamed page": "Página renomeada", 57 | "Same level": "Mesmo nível", 58 | "Separator character": "Caráter separador", 59 | "Sort by month": "Ordenar por mês", 60 | "Sub page": "Subpágina", 61 | "Submit": "Enviar", 62 | "Tag": "Dia", 63 | "Tag the current page (Page-tag)": "Marcar a página atual (Page-tag)", 64 | "The Expansion style is a style that expands on the underside.": "O estilo de expansão é um estilo que se expande na parte inferior.", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "O estilo Galeria organiza os blocos para cima, para baixo, para a esquerda e para a direita.", 66 | "The Tile style displays content in a minimalist manner.": "O estilo Mosaico apresenta o conteúdo de uma forma minimalista.", 67 | "The Wide style uses the screen horizontally.": "O estilo Wide usa a tela horizontalmente.", 68 | "The current page does not need to be tagged.": "A página atual não precisa ser marcada.", 69 | "The current page is not found.": "A página atual não foi encontrada.", 70 | "To archive, open each page individually and change the page tag.": "Para arquivar, abra cada página individualmente e altere a etiqueta da página.", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "Para ativá-lo ou desativá-lo, reinicie o Logseq ou desligue o plugin.", 72 | "Top level": "Nível superior", 73 | "Update the list": "Atualizar a lista", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "Escreva as opções do menu separadas por quebras de linha. Não inclua '#'.", 75 | "[DONE] marked and added date to the top of the page": "[CONCLUÍDO] data marcada e adicionada ao topo da página", 76 | "in order of update": "por ordem de atualização", 77 | "logging function": "função de registo", 78 | "settings": "Configurações", 79 | "update date/time": "data/hora de atualização", 80 | "No need to tag the current page": "Não há necessidade de marcar a página atual", 81 | "Board configuration": "Configuração da placa", 82 | "All": "Tudo", 83 | "Page content": "Conteúdo da página", 84 | "Linked References": "Referências vinculadas", 85 | "Show page content": "Mostrar conteúdo da página", 86 | "Reloading will reflect this.": "O recarregamento refletirá isso.", 87 | "Show linked references": "Mostrar referências vinculadas", 88 | "Classify and sort by words included in the page title.": "Classifique e classifique por palavras incluídas no título da página.", 89 | "Classify and sort by page-tag.": "Classifique e classifique por tag de página.", 90 | "Write separated by line breaks.": "Escreva separado por quebras de linha.", 91 | "Matching target": "Correspondência do objetivo", 92 | "Add the date to the first block but not the page tag": "Adicionar a data ao primeiro bloco, mas não a etiqueta da página" 93 | } -------------------------------------------------------------------------------- /src/translations/fr.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "Un tableau qui affiche les pages avec des balises de page en masse par intégration.", 3 | "Add a button to the left menu bar to access this plugin": "Ajouter un bouton dans la barre de menu de gauche pour accéder à ce plugin", 4 | "Add date and link to the first block of the page": "Ajouter la date et le lien vers le premier bloc de la page", 5 | "Add only date to the first block": "Ajouter uniquement la date au premier bloc", 6 | "Added date to the top of the page": "Ajout de la date en haut de la page", 7 | "Archives > Add DONE marker": "Archives > Ajouter un marqueur DONE", 8 | "Board": "Planche", 9 | "Batch board configuration": "Configuration de la carte de traitement par lots", 10 | "Cancel": "Annuler", 11 | "Category by included word": "Catégorie par mot inclus", 12 | "Change style": "Changer de style", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "Classez et triez par mots inclus dans le titre de la page. Écrivez séparés par des sauts de ligne.", 14 | "Click the page title to open the page.": "Cliquez sur le titre de la page pour l’ouvrir.", 15 | "Combination Menu": "Menu combiné", 16 | "Common settings": "Paramètres communs", 17 | "Copy current full page name to clipboard": "Copier le nom complet de la page dans le presse-papiers", 18 | "Create a new page": "Créer une nouvelle page", 19 | "Page created.": "Page créée.", 20 | "Enable slash commands": "Activer les commandes barre oblique", 21 | "Hover over the page title to display a tooltip.": "Passez la souris sur le titre de la page pour afficher une info-bulle.", 22 | "If enabled": "Si activé", 23 | "Journals cannot be tagged.": "Les revues ne peuvent pas être balisées.", 24 | "Link to the month page": "Lien vers la page du mois", 25 | "List": "Liste", 26 | "Loading...": "Chargement...", 27 | "Menu": "Menu", 28 | "Menu > Pick-list options": "Menu > Options de la liste de sélection", 29 | "order by name": "Trier par nom", 30 | "New page": "Nouvelle page", 31 | "New page using the sub page name (namespace)": "Nouvelle page utilisant le nom de la sous-page (espace de noms)", 32 | "No need to tag the current page.": "Pas besoin de baliser la page actuelle.", 33 | "No page found": "Aucune page trouvée", 34 | "No pages found for this page name.": "Aucune page n’a été trouvée pour ce nom de page.", 35 | "No pages found for this page tag.": "Aucune page n’a été trouvée pour cette balise de page.", 36 | "Open PARA method menu": "Ouvrir le menu de la méthode PARA", 37 | "Open the list": "Ouvrir la liste", 38 | "Opened page in main content": "Page ouverte dans le contenu principal", 39 | "Opened page in right sidebar": "Page ouverte dans la barre latérale droite", 40 | "Or from the toolbar": "Ou depuis la barre d’outils", 41 | "Others": "Autrui", 42 | "Page already exists.": "La page existe déjà.", 43 | "Page not found": "Page introuvable", 44 | "Page style": "Style de page", 45 | "Page-Tag": "balise de page", 46 | "Pages tagged with": "Pages marquées avec", 47 | "Pages that contain the same name as the page name are displayed.": "Les pages qui portent le même nom que le nom de la page sont affichées.", 48 | "Pages with that tag appear in the list.": "Les pages avec cette balise apparaissent dans la liste.", 49 | "Pick List": "Liste de sélection", 50 | "Please set the pick list in the plugin settings.": "Veuillez définir la liste de sélection dans les paramètres du plugin.", 51 | "Plugin": "Plugin", 52 | "Plugin settings": "Paramètres du plugin", 53 | "Press Shift key at the same time to open in sidebar": "Appuyez sur la touche Maj en même temps pour ouvrir dans la barre latérale", 54 | "Quickly PARA method Plugin": "Rapidement Plugin de méthode PARA", 55 | "Reload": "Recharger", 56 | "Renamed page": "Page renommée", 57 | "Same level": "Même niveau", 58 | "Separator character": "Caractère séparateur", 59 | "Sort by month": "Trier par mois", 60 | "Sub page": "Sous-page", 61 | "Submit": "Envoyer", 62 | "Tag": "Jour", 63 | "Tag the current page (Page-tag)": "Baliser la page actuelle (Page-tag)", 64 | "The Expansion style is a style that expands on the underside.": "Le style Expansion est un style qui s’étend sur la face inférieure.", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "Le style Galerie organise les blocs vers le haut, le bas, la gauche et la droite.", 66 | "The Tile style displays content in a minimalist manner.": "Le style Mosaïque affiche le contenu de manière minimaliste.", 67 | "The Wide style uses the screen horizontally.": "Le style Wide utilise l’écran horizontalement.", 68 | "The current page does not need to be tagged.": "Il n’est pas nécessaire de baliser la page actuelle.", 69 | "The current page is not found.": "La page actuelle est introuvable.", 70 | "To archive, open each page individually and change the page tag.": "Pour archiver, ouvrez chaque page individuellement et modifiez la balise de page.", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "Pour l’activer ou le désactiver, redémarrez Logseq ou désactivez le plugin.", 72 | "Top level": "Niveau supérieur", 73 | "Update the list": "Mettre à jour la liste", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "Écrivez les options de menu séparées par des sauts de ligne. N’incluez pas « # ».", 75 | "[DONE] marked and added date to the top of the page": "[DONE] marqué et ajouté la date en haut de la page", 76 | "in order of update": "Dans l’ordre de mise à jour", 77 | "logging function": "fonction d’enregistrement", 78 | "settings": "Paramètres", 79 | "update date/time": "Date/heure de mise à jour", 80 | "No need to tag the current page": "Pas besoin de baliser la page actuelle", 81 | "Board configuration": "Configuration de la carte", 82 | "All": "Tout", 83 | "Page content": "Contenu de la page", 84 | "Linked References": "Références liées", 85 | "Show page content": "Afficher le contenu de la page", 86 | "Reloading will reflect this.": "Le rechargement en tiendra compte.", 87 | "Show linked references": "Afficher les références liées", 88 | "Classify and sort by words included in the page title.": "Classez et triez par mots inclus dans le titre de la page.", 89 | "Classify and sort by page-tag.": "Classez et triez par page-tag.", 90 | "Write separated by line breaks.": "Écrivez séparés par des sauts de ligne.", 91 | "Matching target": "Cible correspondante", 92 | "Add the date to the first block but not the page tag": "Ajouter la date au premier bloc mais pas à la balise de page" 93 | } -------------------------------------------------------------------------------- /src/translations/it.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "Una bacheca che visualizza le pagine con i tag di pagina in blocco per incorporamento.", 3 | "Add a button to the left menu bar to access this plugin": "Aggiungi un pulsante alla barra dei menu a sinistra per accedere a questo plugin", 4 | "Add date and link to the first block of the page": "Aggiungi data e link al primo blocco della pagina", 5 | "Add only date to the first block": "Aggiungi solo la data al primo blocco", 6 | "Added date to the top of the page": "Aggiunta la data all'inizio della pagina", 7 | "Archives > Add DONE marker": "Archivi > Aggiungi marcatore DONE", 8 | "Board": "Tavola", 9 | "Batch board configuration": "Configurazione della scheda batch", 10 | "Cancel": "Annulla", 11 | "Category by included word": "Categoria per parola inclusa", 12 | "Change style": "Cambia stile", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "Classifica e ordina in base alle parole incluse nel titolo della pagina. Scrivi separato da interruzioni di riga.", 14 | "Click the page title to open the page.": "Fare clic sul titolo della pagina per aprire la pagina.", 15 | "Combination Menu": "Menu combinato", 16 | "Common settings": "Impostazioni comuni", 17 | "Copy current full page name to clipboard": "Copia il nome della pagina intera corrente negli appunti", 18 | "Create a new page": "Creare una nuova pagina", 19 | "Page created.": "Pagina creata.", 20 | "Enable slash commands": "Abilita i comandi barra", 21 | "Hover over the page title to display a tooltip.": "Passa il mouse sopra il titolo della pagina per visualizzare una descrizione comando.", 22 | "If enabled": "Se abilitato", 23 | "Journals cannot be tagged.": "I diari non possono essere etichettati.", 24 | "Link to the month page": "Link alla pagina del mese", 25 | "List": "Lista", 26 | "Loading...": "Caricamento...", 27 | "Menu": "Menù", 28 | "Menu > Pick-list options": "Opzioni del menu > dell'elenco di selezione", 29 | "order by name": "Ordina per nome", 30 | "New page": "Nuova pagina", 31 | "New page using the sub page name (namespace)": "Nuova pagina che utilizza il nome della sottopagina (namespace)", 32 | "No need to tag the current page.": "Non c'è bisogno di taggare la pagina corrente.", 33 | "No page found": "Nessuna pagina trovata", 34 | "No pages found for this page name.": "Nessuna pagina trovata per questo nome di pagina.", 35 | "No pages found for this page tag.": "Nessuna pagina trovata per questo tag di pagina.", 36 | "Open PARA method menu": "Apri il menu del metodo PARA", 37 | "Open the list": "Apri l'elenco", 38 | "Opened page in main content": "Pagina aperta nel contenuto principale", 39 | "Opened page in right sidebar": "Pagina aperta nella barra laterale destra", 40 | "Or from the toolbar": "O dalla barra degli strumenti", 41 | "Others": "Altri", 42 | "Page already exists.": "La pagina esiste già.", 43 | "Page not found": "Pagina non trovata", 44 | "Page style": "Stile pagina", 45 | "Page-Tag": "Tag di pagina", 46 | "Pages tagged with": "Pagine contrassegnate con", 47 | "Pages that contain the same name as the page name are displayed.": "Vengono visualizzate le pagine che contengono lo stesso nome della pagina.", 48 | "Pages with that tag appear in the list.": "Le pagine con quel tag vengono visualizzate nell'elenco.", 49 | "Pick List": "Elenco di selezione", 50 | "Please set the pick list in the plugin settings.": "Si prega di impostare l'elenco di selezione nelle impostazioni del plug-in.", 51 | "Plugin": "Plugin", 52 | "Plugin settings": "Impostazioni del plugin", 53 | "Press Shift key at the same time to open in sidebar": "Premere contemporaneamente il tasto Maiusc per aprire nella barra laterale", 54 | "Quickly PARA method Plugin": "Plugin per il metodo PARA rapido", 55 | "Reload": "Ricaricare", 56 | "Renamed page": "Pagina rinominata", 57 | "Same level": "Stesso livello", 58 | "Separator character": "Carattere separatore", 59 | "Sort by month": "Ordina per mese", 60 | "Sub page": "Pagina secondaria", 61 | "Submit": "Invia", 62 | "Tag": "Giorno", 63 | "Tag the current page (Page-tag)": "Contrassegnare la pagina corrente (Page-tag)", 64 | "The Expansion style is a style that expands on the underside.": "Lo stile di espansione è uno stile che si espande sul lato inferiore.", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "Lo stile Galleria dispone i blocchi in alto, in basso, a sinistra e a destra.", 66 | "The Tile style displays content in a minimalist manner.": "Lo stile Riquadro visualizza il contenuto in modo minimalista.", 67 | "The Wide style uses the screen horizontally.": "Lo stile Wide utilizza lo schermo orizzontalmente.", 68 | "The current page does not need to be tagged.": "Non è necessario che la pagina corrente venga contrassegnata.", 69 | "The current page is not found.": "La pagina corrente non è stata trovata.", 70 | "To archive, open each page individually and change the page tag.": "Per archiviare, apri ogni pagina singolarmente e modifica il tag della pagina.", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "Per abilitarlo o disabilitarlo, riavvia Logseq o disattiva il plug-in.", 72 | "Top level": "Livello superiore", 73 | "Update the list": "Aggiorna l'elenco", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "Scrivi le opzioni del menu separate da interruzioni di riga. Non includere '#'.", 75 | "[DONE] marked and added date to the top of the page": "[FATTO] contrassegnato e aggiunta la data all'inizio della pagina", 76 | "in order of update": "in ordine di aggiornamento", 77 | "logging function": "Funzione di registrazione", 78 | "settings": "Impostazioni", 79 | "update date/time": "Aggiorna data/ora", 80 | "No need to tag the current page": "Non c'è bisogno di taggare la pagina corrente", 81 | "Board configuration": "Configurazione della scheda", 82 | "All": "Tutto", 83 | "Page content": "Contenuto della pagina", 84 | "Linked References": "Riferimenti collegati", 85 | "Show page content": "Mostra il contenuto della pagina", 86 | "Reloading will reflect this.": "La ricarica rifletterà questo.", 87 | "Show linked references": "Mostra riferimenti collegati", 88 | "Classify and sort by words included in the page title.": "Classifica e ordina in base alle parole incluse nel titolo della pagina.", 89 | "Classify and sort by page-tag.": "Classifica e ordina per tag di pagina.", 90 | "Write separated by line breaks.": "Scrivi separato da interruzioni di riga.", 91 | "Matching target": "Obiettivo corrispondente", 92 | "Add the date to the first block but not the page tag": "Aggiungi la data al primo blocco ma non il tag della pagina" 93 | } -------------------------------------------------------------------------------- /src/translations/es.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "Un tablero que muestra páginas con etiquetas de página de forma masiva por incrustación.", 3 | "Add a button to the left menu bar to access this plugin": "Agregue un botón a la barra de menú de la izquierda para acceder a este complemento", 4 | "Add date and link to the first block of the page": "Añade la fecha y el enlace al primer bloque de la página", 5 | "Add only date to the first block": "Agregue solo la fecha al primer bloque", 6 | "Added date to the top of the page": "Se ha añadido la fecha en la parte superior de la página", 7 | "Archives > Add DONE marker": "Archivos > Añadir marcador HECHO", 8 | "Board": "Tabla", 9 | "Batch board configuration": "Configuración de la placa por lotes", 10 | "Cancel": "Cancelar", 11 | "Category by included word": "Categoría por palabra incluida", 12 | "Change style": "Cambiar estilo", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "Clasifique y ordene por palabras incluidas en el título de la página. Escribe separada por saltos de línea.", 14 | "Click the page title to open the page.": "Haga clic en el título de la página para abrirla.", 15 | "Combination Menu": "Menú combinado", 16 | "Common settings": "Ajustes comunes", 17 | "Copy current full page name to clipboard": "Copie el nombre de la página completa actual en el portapapeles", 18 | "Create a new page": "Crear una nueva página", 19 | "Page created.": "Página creada.", 20 | "Enable slash commands": "Habilitar comandos de barra diagonal", 21 | "Hover over the page title to display a tooltip.": "Coloque el cursor sobre el título de la página para mostrar una información sobre herramientas.", 22 | "If enabled": "Si está habilitado", 23 | "Journals cannot be tagged.": "Las revistas no se pueden etiquetar.", 24 | "Link to the month page": "Enlace a la página del mes", 25 | "List": "Lista", 26 | "Loading...": "Carga...", 27 | "Menu": "Menú", 28 | "Menu > Pick-list options": "Menú > opciones de lista de selección", 29 | "order by name": "Ordenar por nombre", 30 | "New page": "Nueva página", 31 | "New page using the sub page name (namespace)": "Nueva página con el nombre de la subpágina (espacio de nombres)", 32 | "No need to tag the current page.": "No es necesario etiquetar la página actual.", 33 | "No page found": "No se ha encontrado ninguna página", 34 | "No pages found for this page name.": "No se han encontrado páginas para este nombre de página.", 35 | "No pages found for this page tag.": "No se han encontrado páginas para esta etiqueta de página.", 36 | "Open PARA method menu": "Abrir el menú del método PARA", 37 | "Open the list": "Abrir la lista", 38 | "Opened page in main content": "Página abierta en el contenido principal", 39 | "Opened page in right sidebar": "Página abierta en la barra lateral derecha", 40 | "Or from the toolbar": "O desde la barra de herramientas", 41 | "Others": "Otros", 42 | "Page already exists.": "La página ya existe.", 43 | "Page not found": "Página no encontrada", 44 | "Page style": "Estilo de página", 45 | "Page-Tag": "Etiqueta de página", 46 | "Pages tagged with": "Páginas etiquetadas con", 47 | "Pages that contain the same name as the page name are displayed.": "Se muestran las páginas que contienen el mismo nombre que el nombre de la página.", 48 | "Pages with that tag appear in the list.": "Las páginas con esa etiqueta aparecen en la lista.", 49 | "Pick List": "Lista de selección", 50 | "Please set the pick list in the plugin settings.": "Establezca la lista de selección en la configuración del complemento.", 51 | "Plugin": "Plugin", 52 | "Plugin settings": "Configuración del plugin", 53 | "Press Shift key at the same time to open in sidebar": "Presione la tecla Shift al mismo tiempo para abrir en la barra lateral", 54 | "Quickly PARA method Plugin": "Plugin del método PARA rápidamente", 55 | "Reload": "Recargar", 56 | "Renamed page": "Página renombrada", 57 | "Same level": "Mismo nivel", 58 | "Separator character": "Carácter separador", 59 | "Sort by month": "Ordenar por mes", 60 | "Sub page": "Subpágina", 61 | "Submit": "Enviar", 62 | "Tag": "Día", 63 | "Tag the current page (Page-tag)": "Etiquetar la página actual (Page-tag)", 64 | "The Expansion style is a style that expands on the underside.": "El estilo de expansión es un estilo que se expande en la parte inferior.", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "El estilo Galería organiza los bloques arriba, abajo, izquierda y derecha.", 66 | "The Tile style displays content in a minimalist manner.": "El estilo Mosaico muestra el contenido de forma minimalista.", 67 | "The Wide style uses the screen horizontally.": "El estilo Wide utiliza la pantalla horizontalmente.", 68 | "The current page does not need to be tagged.": "No es necesario etiquetar la página actual.", 69 | "The current page is not found.": "No se encuentra la página actual.", 70 | "To archive, open each page individually and change the page tag.": "Para archivar, abra cada página individualmente y cambie la etiqueta de página.", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "Para habilitarlo o deshabilitarlo, reinicie Logseq o apague el complemento.", 72 | "Top level": "Nivel superior", 73 | "Update the list": "Actualizar la lista", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "Escriba las opciones del menú separadas por saltos de línea. No incluya '#'.", 75 | "[DONE] marked and added date to the top of the page": "[HECHO] marcó y agregó la fecha en la parte superior de la página", 76 | "in order of update": "En orden de actualización", 77 | "logging function": "Función de registro", 78 | "settings": "Configuración", 79 | "update date/time": "Fecha/hora de actualización", 80 | "No need to tag the current page": "No es necesario etiquetar la página actual", 81 | "Board configuration": "Configuración de la placa", 82 | "All": "Todo", 83 | "Page content": "Contenido de la página", 84 | "Linked References": "Referencias enlazadas", 85 | "Show page content": "Mostrar el contenido de la página", 86 | "Reloading will reflect this.": "La recarga reflejará esto.", 87 | "Show linked references": "Mostrar referencias vinculadas", 88 | "Classify and sort by words included in the page title.": "Clasifique y ordene por palabras incluidas en el título de la página.", 89 | "Classify and sort by page-tag.": "Clasificar y ordenar por etiqueta de página.", 90 | "Write separated by line breaks.": "Escribe separada por saltos de línea.", 91 | "Matching target": "Objetivo coincidente", 92 | "Add the date to the first block but not the page tag": "Agregue la fecha al primer bloque, pero no la etiqueta de página" 93 | } -------------------------------------------------------------------------------- /src/translations/de.json: -------------------------------------------------------------------------------- 1 | { 2 | "A board that displays pages with page tags in bulk by embed.": "Ein Board, das Seiten mit Seiten-Tags in großen Mengen nach Einbettung anzeigt.", 3 | "Add a button to the left menu bar to access this plugin": "Fügen Sie der linken Menüleiste eine Schaltfläche hinzu, um auf dieses Plugin zuzugreifen", 4 | "Add date and link to the first block of the page": "Datum und Link zum ersten Block der Seite hinzufügen", 5 | "Add only date to the first block": "Fügen Sie dem ersten Block nur das Datum hinzu", 6 | "Added date to the top of the page": "Datum oben auf der Seite hinzugefügt", 7 | "Archives > Add DONE marker": "Archive > DONE-Markierung hinzufügen", 8 | "Board": "Brett", 9 | "Batch board configuration": "Konfiguration der Batch-Platine", 10 | "Cancel": "Abbrechen", 11 | "Category by included word": "Kategorie nach eingeschlossenem Wort", 12 | "Change style": "Stil ändern", 13 | "Classify and sort by words included in the page title. Write separated by line breaks.": "Klassifizieren und sortieren Sie nach Wörtern, die im Seitentitel enthalten sind. Schreibe getrennt durch Zeilenumbrüche.", 14 | "Click the page title to open the page.": "Klicken Sie auf den Seitentitel, um die Seite zu öffnen.", 15 | "Combination Menu": "Kombinationsmenü", 16 | "Common settings": "Allgemeine Einstellungen", 17 | "Copy current full page name to clipboard": "Kopieren des aktuellen vollständigen Seitennamens in die Zwischenablage", 18 | "Create a new page": "Erstellen einer neuen Seite", 19 | "Page created.": "Seite erstellt.", 20 | "Enable slash commands": "Schrägstrichbefehle aktivieren", 21 | "Hover over the page title to display a tooltip.": "Bewegen Sie den Mauszeiger über den Seitentitel, um eine QuickInfo anzuzeigen.", 22 | "If enabled": "Wenn aktiviert", 23 | "Journals cannot be tagged.": "Journale können nicht mit Tags versehen werden.", 24 | "Link to the month page": "Link zur Monatsseite", 25 | "List": "Liste", 26 | "Loading...": "Laden...", 27 | "Menu": "Menü", 28 | "Menu > Pick-list options": "Menü > Optionen für die Auswahlliste", 29 | "order by name": "Sortieren Sie nach Namen", 30 | "New page": "Neue Seite", 31 | "New page using the sub page name (namespace)": "Neue Seite mit dem Namen der Unterseite (Namensraum)", 32 | "No need to tag the current page.": "Es ist nicht erforderlich, die aktuelle Seite zu markieren.", 33 | "No page found": "Keine Seite gefunden", 34 | "No pages found for this page name.": "Für diesen Seitennamen wurden keine Seiten gefunden.", 35 | "No pages found for this page tag.": "Es wurden keine Seiten für dieses Seiten-Tag gefunden.", 36 | "Open PARA method menu": "Öffnen Sie das Menü der PARA-Methode", 37 | "Open the list": "Öffnen Sie die Liste", 38 | "Opened page in main content": "Geöffnete Seite im Hauptinhalt", 39 | "Opened page in right sidebar": "Geöffnete Seite in der rechten Seitenleiste", 40 | "Or from the toolbar": "Oder aus der Symbolleiste", 41 | "Others": "Andere", 42 | "Page already exists.": "Die Seite existiert bereits.", 43 | "Page not found": "Seite nicht gefunden", 44 | "Page style": "Seitenstil", 45 | "Page-Tag": "Seiten-Tag", 46 | "Pages tagged with": "Seiten, die mit getaggt sind mit", 47 | "Pages that contain the same name as the page name are displayed.": "Es werden Seiten angezeigt, die denselben Namen wie der Seitenname enthalten.", 48 | "Pages with that tag appear in the list.": "Seiten mit diesem Tag werden in der Liste angezeigt.", 49 | "Pick List": "Auswahlliste", 50 | "Please set the pick list in the plugin settings.": "Bitte stellen Sie die Auswahlliste in den Plugin-Einstellungen ein.", 51 | "Plugin": "Stecker", 52 | "Plugin settings": "Plugin-Einstellungen", 53 | "Press Shift key at the same time to open in sidebar": "Drücken Sie gleichzeitig die Umschalttaste, um die Seitenleiste zu öffnen", 54 | "Quickly PARA method Plugin": "Schnelles PARA-Methoden-Plugin", 55 | "Reload": "Nachladen", 56 | "Renamed page": "Seite umbenannt", 57 | "Same level": "Gleiches Niveau", 58 | "Separator character": "Trennzeichen", 59 | "Sort by month": "Sortieren nach Monat", 60 | "Sub page": "Unterseite", 61 | "Submit": "Senden", 62 | "Tag": "Tag", 63 | "Tag the current page (Page-tag)": "Die aktuelle Seite mit Tags versehen (Page-Tag)", 64 | "The Expansion style is a style that expands on the underside.": "Der Stil \"Erweiterung\" ist ein Stil, der auf der Unterseite erweitert wird.", 65 | "The Gallery style arranges the blocks up, down, left, and right.": "Im Galeriestil werden die Blöcke nach oben, unten, links und rechts angeordnet.", 66 | "The Tile style displays content in a minimalist manner.": "Der Kachelstil zeigt Inhalte auf minimalistische Weise an.", 67 | "The Wide style uses the screen horizontally.": "Bei der Formatvorlage \"Breit\" wird der Bildschirm horizontal verwendet.", 68 | "The current page does not need to be tagged.": "Die aktuelle Seite muss nicht mit Tags versehen werden.", 69 | "The current page is not found.": "Die aktuelle Seite wird nicht gefunden.", 70 | "To archive, open each page individually and change the page tag.": "Um zu archivieren, öffnen Sie jede Seite einzeln und ändern Sie das Seiten-Tag.", 71 | "To enable or disable it, restart Logseq or turn off the plugin.": "Um es zu aktivieren oder zu deaktivieren, starten Sie Logseq neu oder deaktivieren Sie das Plugin.", 72 | "Top level": "Höchste Ebene", 73 | "Update the list": "Aktualisieren der Liste", 74 | "Write the menu options separated by line breaks. Do not include `#`.": "Schreiben Sie die Menüpunkte durch Zeilenumbrüche getrennt. Fügen Sie '#' nicht ein.", 75 | "[DONE] marked and added date to the top of the page": "[DONE] markiert und Datum oben auf der Seite hinzugefügt", 76 | "in order of update": "In der Reihenfolge der Aktualisierung", 77 | "logging function": "Logging-Funktion", 78 | "settings": "Einstellungen", 79 | "update date/time": "Datum/Uhrzeit aktualisieren", 80 | "No need to tag the current page": "Es ist nicht erforderlich, die aktuelle Seite zu markieren", 81 | "Board configuration": "Konfiguration der Platine", 82 | "All": "Alle", 83 | "Page content": "Seiteninhalt", 84 | "Linked References": "Verknüpfte Referenzen", 85 | "Show page content": "Seiteninhalt anzeigen", 86 | "Reloading will reflect this.": "Das Nachladen wird dies widerspiegeln.", 87 | "Show linked references": "Verknüpfte Referenzen anzeigen", 88 | "Classify and sort by words included in the page title.": "Klassifizieren und sortieren Sie nach Wörtern, die im Seitentitel enthalten sind.", 89 | "Classify and sort by page-tag.": "Klassifizieren und sortieren Sie nach Seiten-Tag.", 90 | "Write separated by line breaks.": "Schreibe getrennt durch Zeilenumbrüche.", 91 | "Matching target": "Passendes Ziel", 92 | "Add the date to the first block but not the page tag": "Fügen Sie dem ersten Block das Datum hinzu, aber nicht das Seiten-Tag" 93 | } -------------------------------------------------------------------------------- /src/settings.ts: -------------------------------------------------------------------------------- 1 | import { SettingSchemaDesc } from '@logseq/libs/dist/LSPlugin.user' 2 | import { t } from "logseq-l10n" //https://github.com/sethyuan/logseq-l10n 3 | 4 | export const styleList = [ 5 | "Tile", 6 | "Gallery", 7 | "Expansion", 8 | ] 9 | 10 | export const keySettingsPageStyle = "pageStyle" 11 | 12 | /* user setting */ 13 | // https://logseq.github.io/plugins/types/SettingSchemaDesc.html 14 | export const settingsTemplate = (): SettingSchemaDesc[] => [ 15 | 16 | { 17 | key: "headingBatchBoard", 18 | type: "heading", 19 | title: t("Board configuration"), 20 | default: null, 21 | // ページタグがついたページを、embedによって一括表示するボードです。 22 | // ページタイトルをクリックすると、ページが開きます。 23 | // ページタイトルにカーソルを置くと、ツールチップが表示されます。(有効な場合) 24 | // アーカイブ化するには、各ページを個別に開いて、ページタグを変更してください。 25 | description: ` 26 | 27 | ${t("A board that displays pages with page tags in bulk by embed.")} 28 | ${t("Click the page title to open the page.")} 29 | ${t("Hover over the page title to display a tooltip.")} (${t("If enabled")}) 30 | 31 | ${t("To archive, open each page individually and change the page tag.")} 32 | `, 33 | }, 34 | { 35 | key: "addLeftMenu", 36 | type: "boolean", 37 | default: true, 38 | // 左メニューバーにボタンを追加して、このプラグインにアクセスできるようにします。 39 | title: t("Add a button to the left menu bar to access this plugin"), 40 | // ツールバーからもアクセスできます。 41 | description: "", 42 | }, 43 | { // メインページのスタイル 44 | key: keySettingsPageStyle, 45 | title: t("Page style"), 46 | type: "enum", 47 | enumChoices: styleList, 48 | default: "Gallery", 49 | // Tile: コンテンツ最小限のスタイル 50 | // Gallery: 上下左右に配置するスタイル 51 | // Expansion: 下側に展開するスタイル 52 | description: ` 53 | 54 | ${t("The Tile style displays content in a minimalist manner.")} 55 | ${t("The Gallery style arranges the blocks up, down, left, and right.")} 56 | ${t("The Expansion style is a style that expands on the underside.")} 57 | `, 58 | }, 59 | { // ページコンテンツを表示するかどうか 60 | key: "showPageContent", 61 | title: " > " + t("Show page content"), 62 | type: "boolean", 63 | default: true, 64 | // リロードすると反映されます。 65 | description: t("Reloading will reflect this."), 66 | }, 67 | { 68 | key: "showLinkedReferences", 69 | title: " > " + t("Show linked references"), 70 | type: "boolean", 71 | default: true, 72 | description: t("Reloading will reflect this."), 73 | 74 | }, 75 | 76 | 77 | { 78 | key: "headingBatchBoardIncludeWord", 79 | type: "heading", 80 | default: null, 81 | title: `${t("Board")} > ${t("Category by included word")}`, 82 | description: ` 83 | Page-title: ${t("Classify and sort by words included in the page title.")} 84 | Page-tag: ${t("Classify and sort by page-tag.")} 85 | 86 | ${t("Write separated by line breaks.")} 87 | ${t("Reloading will reflect this.")} 88 | `, 89 | }, 90 | {// ページタイトルか、ページタグどちらにマッチングするか 91 | key: "batchBoardCategoryMatching", 92 | title: `> ${t("Matching target")}`, 93 | type: "enum", 94 | enumChoices: ["Page-title", "Page-tag"], 95 | default: "Page-title", 96 | description: "", 97 | }, 98 | {// Projectsのbatchボードの分類機能 99 | key: keyCommonBatchBoardIncludeWord + "Projects", 100 | // 含まれる単語で、分類します 101 | title: "Projects", 102 | type: "string", 103 | inputAs: "textarea", 104 | default: "", 105 | // ページタイトルに含まれる単語で、分類し、並び替えます。改行で区切って記述します。 106 | description: "", 107 | }, 108 | {// Areas of responsibilityのbatchボードの分類機能 109 | key: keyCommonBatchBoardIncludeWord + "Areas", 110 | // 含まれる単語で、分類します 111 | title: "Areas of responsibility", 112 | type: "string", 113 | inputAs: "textarea", 114 | default: "", 115 | // ページタイトルに含まれる単語で、分類し、並び替えます。改行で区切って記述します。 116 | description: "", 117 | }, 118 | {// Resourcesのbatchボードの分類機能 119 | key: keyCommonBatchBoardIncludeWord + "Resources", 120 | // 含まれる単語で、分類します 121 | title: "Resources", 122 | type: "string", 123 | inputAs: "textarea", 124 | default: "", 125 | // ページタイトルに含まれる単語で、分類し、並び替えます。改行で区切って記述します。 126 | description: "", 127 | }, 128 | {// Archivesのbatchボードの分類機能 129 | key: keyCommonBatchBoardIncludeWord + "Archives", 130 | // 含まれる単語で、分類します 131 | title: "Archives", 132 | type: "string", 133 | inputAs: "textarea", 134 | default: "", 135 | // ページタイトルに含まれる単語で、分類し、並び替えます。改行で区切って記述します。 136 | description: "", 137 | }, 138 | 139 | 140 | {// PARA settings 141 | key: "headingPARASettings", 142 | type: "heading", 143 | default: null, 144 | title: `PARA ${t("settings")}`, 145 | description: "", 146 | }, 147 | { 148 | key: "switchPARArecodeDate", 149 | title: t("logging function"), 150 | type: "boolean", 151 | default: true, 152 | // ページの最初のブロックに日付とリンクを含めます 153 | description: t("Add date and link to the first block of the page"), 154 | }, 155 | {//月ごとの分類をおこなう 156 | key: "sortByMonth", 157 | title: t("logging function") + " > " + t("Sort by month"), 158 | type: "boolean", 159 | default: true, 160 | description: "", 161 | }, 162 | {//上の項目がオンの場合に、それをリンクにするかどうか 163 | key: "sortByMonthLink", 164 | title: " > " + t("Sort by month") + " > " + t("Link to the month page"), 165 | type: "boolean", 166 | default: true, 167 | description: "", 168 | }, 169 | {//sortByMonthSeparator 170 | key: "sortByMonthSeparator", // 区切り文字 171 | title: " > " + t("Sort by month") + " > " + t("Separator character"), 172 | type: "string", 173 | default: ">", 174 | description: "default: `>`", 175 | }, 176 | { 177 | key: "archivesDone", 178 | // アーカイブに記録する際に、DONEマーカーを追加します 179 | title: t("Archives > Add DONE marker"), 180 | type: "boolean", 181 | default: false, 182 | description: "", 183 | }, 184 | { 185 | key: "booleanRecodeOnly", 186 | //ページタグをつけない設定 187 | title: t("Add the date to the first block but not the page tag"), 188 | type: "boolean", 189 | default: false, 190 | description: "⚠️ default: false", 191 | }, 192 | 193 | 194 | {// Menu settings 195 | key: "headingMenuSettings", 196 | type: "heading", 197 | default: null, 198 | title: t("Menu") + " " + t("settings"), 199 | description: "", 200 | }, 201 | { 202 | key: "pickList", 203 | type: "string", 204 | default: "Index\nReadLATER\n", 205 | title: t("Menu > Pick-list options"), 206 | // メニューの選択肢を改行で区切って記述します。`#`は付けないでください。 207 | description: t("Write the menu options separated by line breaks. Do not include `#`."), 208 | inputAs: "textarea", 209 | }, 210 | 211 | 212 | {// Common settings 213 | key: "headingCommonSettings", 214 | type: "heading", 215 | default: null, 216 | title: t("Common settings"), 217 | description: "", 218 | }, 219 | { 220 | key: "slashCommandMenu", 221 | // スラッシュコマンドを有効にするかどうか 222 | title: t("Enable slash commands"), 223 | type: "boolean", 224 | default: true, 225 | description: "`/Projects` `/Areas of responsibility` `/Resources` `/Archives` ⚠️" + t("To enable or disable it, restart Logseq or turn off the plugin."), 226 | }, 227 | ] 228 | 229 | export const keyCommonBatchBoardIncludeWord = "BatchBoardIncludesWord" -------------------------------------------------------------------------------- /src/batchTileView/embed/generateBlock.ts: -------------------------------------------------------------------------------- 1 | import { BlockEntity, IBatchBlock, PageEntity } from "@logseq/libs/dist/LSPlugin" 2 | import { t } from "logseq-l10n" 3 | import { keyCommonBatchBoardIncludeWord } from "../../settings" 4 | import { hideMainContent } from "../lib" 5 | import { advancedQuery, queryCodeContainsDoubleTags, queryCodeContainsTag } from "./advancedQuery" 6 | 7 | 8 | 9 | let processingGenerateEmbed = false 10 | export const generateEmbed = async ( 11 | type: string, 12 | pageName: string, 13 | blocks: { uuid: BlockEntity["uuid"] }[] 14 | ) => { 15 | 16 | if (processingGenerateEmbed) return 17 | processingGenerateEmbed = true 18 | setTimeout(() => processingGenerateEmbed = false, 900) 19 | 20 | await logseq.Editor.exitEditingMode() 21 | 22 | logseq.showMainUI({ autoFocus: false }) 23 | setTimeout(() => logseq.hideMainUI({ restoreEditingCursor: false }), 3000) 24 | 25 | 26 | const pageEntities = await advancedQuery(queryCodeContainsTag, `"${type}"`) as { name: PageEntity["name"] }[] | null 27 | 28 | if (pageEntities && pageEntities.length > 0) { 29 | 30 | // 連想配列を配列に変換 31 | const array = pageEntities.map((v) => v.name).sort() 32 | // console.log(array) 33 | 34 | 35 | // 保存されている設定を取得 36 | const config = logseq.settings![type] as string[] 37 | 38 | if (logseq.settings![type] === undefined // 保存されていない場合に生成 39 | || (config.length !== array.length || !config.every((v, i) => v === array[i])) // config と array が一致しない場合に生成 (前回分と一致しない場合に生成) 40 | ) { 41 | logseq.updateSettings({ [type]: array })// 今回分を保存 42 | 43 | const boardBatch: IBatchBlock[] = [] 44 | const typeMapping = { 45 | "Projects": "Projects", 46 | "Areas of responsibility": "Areas", 47 | "Resources": "Resources", 48 | "Archives": "Archives" 49 | } 50 | const settingKey = typeMapping[type as keyof typeof typeMapping] 51 | if (settingKey) 52 | await eachCategoryCreateBatchEmbed( 53 | array, 54 | logseq.settings![keyCommonBatchBoardIncludeWord + settingKey] as string, 55 | boardBatch, 56 | type, 57 | ) 58 | 59 | if (boardBatch.length > 0) 60 | await refreshPageBlocks(blocks, pageName, boardBatch, type) 61 | } 62 | } else 63 | // 見つからなかった場合 64 | await removeBlocksAndNotify(blocks, pageName, type) 65 | 66 | 67 | // ブロックの編集モードを終了 68 | await logseq.Editor.exitEditingMode() 69 | 70 | logseq.hideMainUI({ restoreEditingCursor: false }) 71 | processingGenerateEmbed = false 72 | } 73 | 74 | 75 | 76 | //カテゴリ分けごとにEmbedを生成 (カテゴリに含まれない場合は、その他に分類) 77 | const eachCategoryCreateBatchEmbed = async ( 78 | array: string[], 79 | config: string, 80 | boardBatch: IBatchBlock[], 81 | type: string, 82 | ) => { 83 | 84 | // カテゴリごとに分類 (ページタイトルでマッチング) 85 | if (logseq.settings!.batchBoardCategoryMatching as string === "Page-title") { 86 | 87 | if (config === "") 88 | boardBatch.push({ 89 | content: `# ${t("All")}`, 90 | children: array.map((v) => ({ content: `{{embed [[${v}]]}}` })) 91 | }) 92 | else { 93 | const categories = config.split("\n") 94 | 95 | for (const category of categories) { 96 | const categoryArray = array.filter((v) => v.includes(category)) 97 | if (categoryArray.length > 0) { 98 | boardBatch.push({ 99 | content: `## ${category}`, // embedを使用 100 | children: categoryArray.map((v) => ({ content: `{{embed [[${v}]]}}` })) 101 | }) 102 | // 該当するページを配列から削除 103 | array = array.filter(item => !categoryArray.includes(item)) 104 | } 105 | } 106 | // その他のカテゴリーに分類されなかったページを追加 107 | if (array.length > 0) 108 | boardBatch.push({ 109 | content: `## ${t("Others")}`, // 分類なし 110 | children: array.map((v) => ({ content: `{{embed [[${v}]]}}` })) 111 | }) 112 | } 113 | 114 | 115 | } else // カテゴリごとに分類 (ページタグでマッチング) 116 | if (logseq.settings!.batchBoardCategoryMatching as string === "Page-tag") { 117 | if (config === "") 118 | boardBatch.push({ 119 | content: `# ${t("All")}`, 120 | children: array.map((v) => ({ content: `{{embed [[${v}]]}}` })) 121 | }) 122 | else { 123 | // カテゴリーにページタグが一致するページがあるかないかのフラグ 124 | let flagMatchPages = false 125 | 126 | for (const category of config.split("\n")) { 127 | const pageEntities = await advancedQuery(queryCodeContainsDoubleTags, `"${type}"`, `"${category}"`) as { name: PageEntity["name"] }[] | null 128 | if (pageEntities && pageEntities.length > 0) { 129 | const categoryArray = pageEntities.map((v) => v.name).sort() 130 | boardBatch.push({ 131 | content: `## ${category}`, // embedを使用 132 | children: categoryArray.map((v) => ({ content: `{{embed [[${v}]]}}` })) 133 | }) 134 | // 該当するページを配列から削除 135 | array = array.filter(item => !categoryArray.includes(item)) 136 | if (flagMatchPages === false) 137 | flagMatchPages = true 138 | } 139 | } 140 | // その他のカテゴリーに分類されなかったページを追加 141 | if (array.length > 0) 142 | boardBatch.push({ 143 | content: `## ${flagMatchPages === false ? t("All") : t("Others")}`, // 分類なし 144 | children: array.map((v) => ({ content: `{{embed [[${v}]]}}` })) 145 | }) 146 | } 147 | } 148 | } 149 | 150 | 151 | const refreshPageBlocks = async ( 152 | blocks: { uuid: BlockEntity["uuid"] }[], 153 | pageName: string, 154 | batch: IBatchBlock[], 155 | type: string, 156 | ) => { 157 | 158 | // 一時的にDOMエレメントを非表示にする 159 | hideMainContent('#main-content-container div[id^="quickly-para-method-plugin/"] ') 160 | 161 | // 全てのブロックを削除 162 | await clearBlocks(blocks) 163 | 164 | // 600ms待機 165 | await new Promise((resolve) => setTimeout(resolve, 600)) 166 | 167 | // メインページの最初のブロックを作成 168 | const newBlock = await logseq.Editor.appendBlockInPage(pageName, "") as { uuid: BlockEntity["uuid"] } | null 169 | //下にくるブロックが先 170 | if (newBlock) 171 | await generateContentForMainPageContent(newBlock, type, batch) 172 | } 173 | 174 | 175 | // 全てのブロックを削除 176 | const removeBlocksAndNotify = async ( 177 | blocks: { uuid: BlockEntity["uuid"] }[], 178 | pageName: string, 179 | type: string, 180 | ) => { 181 | await refreshPageBlocks(blocks, pageName, [{ content: t("No page found") }], type) 182 | } 183 | 184 | 185 | const generateContentForMainPageContent = async ( 186 | newBlock: { uuid: BlockEntity["uuid"] }, 187 | type: string, 188 | boardBatch: IBatchBlock[] 189 | ) => { 190 | 191 | const batch: IBatchBlock[] = [] 192 | // batchの先頭に追加 193 | batch.unshift({ 194 | content: `# ${t("Board")}`, 195 | children: boardBatch, 196 | }) 197 | 198 | // batchの最後尾に追加 199 | if (logseq.settings!.showPageContent as boolean === true) { 200 | batch.push({ 201 | content: `# ${t("Page content")}`, 202 | children: [{ content: `{{embed [[${type}]]}}` }] 203 | }) 204 | } 205 | if (logseq.settings!.showLinkedReferences as boolean === true) { 206 | batch.push({ 207 | content: `# ${t("Linked References")}`, 208 | children: [{ content: `{{query (and [[${type}]] (not (page [[${type}]])) (not (page [[Quickly-PARA-Method-Plugin/${type}]])))}}` }] 209 | }) 210 | } 211 | 212 | // バッチを挿入 213 | await logseq.Editor.insertBatchBlock(newBlock.uuid, batch, { before: true, sibling: true }) 214 | // ブロックを削除 215 | await logseq.Editor.removeBlock(newBlock.uuid) 216 | } 217 | 218 | 219 | const clearBlocks = async (blocks: { uuid: BlockEntity["uuid"] }[]) => { 220 | for (const block of blocks) 221 | await logseq.Editor.removeBlock(block.uuid) 222 | } 223 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": [ 3 | "./src", 4 | ], 5 | "exclude": [ 6 | "dist", 7 | "node_modules" 8 | ], 9 | "compilerOptions": { 10 | /* Visit https://aka.ms/tsconfig.json to read more about this file */ 11 | 12 | /* Projects */ 13 | // "incremental": true, /* Enable incremental compilation */ 14 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 15 | // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ 16 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ 17 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 18 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 19 | 20 | /* Language and Environment */ 21 | "target": "ESNext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ 22 | "lib": ["DOM", "DOM.Iterable", "ESNext"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 23 | //"jsx": "react-jsx", /* Specify what JSX code is generated. */ 24 | "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ 25 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 26 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ 27 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 28 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ 29 | // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ 30 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 31 | "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 32 | 33 | /* Modules */ 34 | "module": "ESNext", /* Specify what module code is generated. */ 35 | // "rootDir": "./", /* Specify the root folder within your source files. */ 36 | "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ 37 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 38 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 39 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 40 | // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ 41 | "types": ["vite/client", "node"], /* Specify type package names to be included without being referenced in a source file. */ 42 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 43 | "resolveJsonModule": true, /* Enable importing .json files */ 44 | // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ 45 | 46 | /* JavaScript Support */ 47 | "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ 48 | "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 49 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ 50 | 51 | /* Emit */ 52 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 53 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 54 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 55 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 56 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ 57 | // "outDir": "./", /* Specify an output folder for all emitted files. */ 58 | // "removeComments": true, /* Disable emitting comments. */ 59 | "noEmit": true, /* Disable emitting files from a compilation. */ 60 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 61 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ 62 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 63 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 64 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 65 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 66 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 67 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 68 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 69 | // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ 70 | // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ 71 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 72 | // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ 73 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 74 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 75 | 76 | /* Interop Constraints */ 77 | "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 78 | "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 79 | "esModuleInterop": false, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ 80 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 81 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ 82 | 83 | /* Type Checking */ 84 | "strict": true, /* Enable all strict type-checking options. */ 85 | "noImplicitAny": false, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ 86 | // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ 87 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 88 | // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ 89 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 90 | // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ 91 | // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ 92 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 93 | // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ 94 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ 95 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 96 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 97 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 98 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ 99 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 100 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ 101 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 102 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 103 | 104 | /* Completeness */ 105 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 106 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import '@logseq/libs' //https://plugins-doc.logseq.com/ 2 | import { AppInfo, LSPluginBaseInfo, PageEntity } from '@logseq/libs/dist/LSPlugin' 3 | import { setup as l10nSetup, t } from "logseq-l10n" //https://github.com/sethyuan/logseq-l10n 4 | import { AddMenuButton, handleRouteChange } from './batchTileView/handle' 5 | import { addLeftMenuNavHeaderForEachPARA, clearEleAll } from './batchTileView/lib' 6 | import { copyPageTitleLink, createPageForPARA, removePopup } from './lib' 7 | import { slashCommandItems } from './lib/slashCommand' 8 | import { combinationNamespace, combinationNewPage } from './menu/combination' 9 | import { openMenuFromToolbar } from './menu/menu' 10 | import { runCommand } from './menu/property' 11 | import { keySettingsPageStyle, settingsTemplate, styleList } from './settings' 12 | import CSSMain from './style.css?inline' 13 | import af from "./translations/af.json" 14 | import de from "./translations/de.json" 15 | import es from "./translations/es.json" 16 | import fr from "./translations/fr.json" 17 | import id from "./translations/id.json" 18 | import it from "./translations/it.json" 19 | import ja from "./translations/ja.json" 20 | import ko from "./translations/ko.json" 21 | import nbNO from "./translations/nb-NO.json" 22 | import nl from "./translations/nl.json" 23 | import pl from "./translations/pl.json" 24 | import ptBR from "./translations/pt-BR.json" 25 | import ptPT from "./translations/pt-PT.json" 26 | import ru from "./translations/ru.json" 27 | import sk from "./translations/sk.json" 28 | import tr from "./translations/tr.json" 29 | import uk from "./translations/uk.json" 30 | import zhCN from "./translations/zh-CN.json" 31 | import zhHant from "./translations/zh-Hant.json" 32 | import { update20231023ChangeSplit, update20250118Change } from './update' 33 | 34 | 35 | 36 | export const mainPageTitle = "Quickly-PARA-Method-Plugin" // メインページのタイトル 37 | export const mainPageTitleLower = mainPageTitle.toLowerCase() 38 | export const shortKey = "qpm" 39 | export const keyToolbar = "Quickly-PARA-Method" 40 | export const keyPageBarId = `${shortKey}--pagebar` 41 | export const keyToggleButton = `${shortKey}--changeStyleToggle` 42 | export const keySettingsButton = `${shortKey}--pluginSettings` 43 | export const keyReloadButton = `${shortKey}--reload` 44 | export const keyLeftMenu = `${shortKey}--nav-header` 45 | 46 | let logseqVersion: string = "" //バージョンチェック用 47 | let logseqVersionMd: boolean = false //バージョンチェック用 48 | // export const getLogseqVersion = () => logseqVersion //バージョンチェック用 49 | export const booleanLogseqVersionMd = () => logseqVersionMd //バージョンチェック用 50 | 51 | /* main */ 52 | const main = async () => { 53 | 54 | // バージョンチェック 55 | logseqVersionMd = await checkLogseqVersion() 56 | // console.log("logseq version: ", logseqVersion) 57 | // console.log("logseq version is MD model: ", logseqVersionMd) 58 | // 100ms待つ 59 | await new Promise(resolve => setTimeout(resolve, 100)) 60 | 61 | if (logseqVersionMd === false) { 62 | // Logseq ver 0.10.*以下にしか対応していない 63 | logseq.UI.showMsg("The ’Quickly-PARA-Method’ plugin only supports Logseq ver 0.10.* and below.", "warning", { timeout: 5000 }) 64 | return 65 | } 66 | 67 | // l10nのセットアップ 68 | await l10nSetup({ 69 | builtinTranslations: {//Full translations 70 | ja, af, de, es, fr, id, it, ko, "nb-NO": nbNO, nl, pl, "pt-BR": ptBR, "pt-PT": ptPT, ru, sk, tr, uk, "zh-CN": zhCN, "zh-Hant": zhHant 71 | } 72 | }) 73 | 74 | // Plugin settings 75 | logseq.useSettingsSchema(settingsTemplate()) 76 | 77 | // メニュー用のボタンを追加 78 | AddMenuButton() 79 | 80 | // メニューバーのヘッダーに追加 81 | if (logseq.settings!.addLeftMenu === true) 82 | addLeftMenuNavHeaderForEachPARA() 83 | 84 | // 初期化 85 | if (!logseq.settings) { 86 | //各ページを作成 87 | for (const page of [ 88 | { name: "Projects", icon: "✈️" }, 89 | { name: "Areas of responsibility", icon: "🏠" }, 90 | { name: "Resources", icon: "🌍" }, 91 | { name: "Archives", icon: "🧹" } 92 | ]) 93 | createPageForPARA(page.name, page.icon, true) 94 | 95 | //設定画面を開く 96 | setTimeout(() => logseq.showSettingsUI(), 300) 97 | } 98 | 99 | //Update 2023/10/23 必ず残す!! 100 | update20231023ChangeSplit() 101 | 102 | // バグ修正用 Areas of Responsibility -> Areas of responsibility 103 | update20250118Change() 104 | 105 | // external button on toolbar 106 | logseq.App.registerUIItem('toolbar', { 107 | key: 'openPARA', 108 | template: ``, 109 | }) 110 | 111 | // page menu 112 | logseq.App.registerPageMenuItem(`⚓ ${t("Open PARA method menu")}`, () => { 113 | if (!parent.document.getElementById("quickly-para-method--openQuickly")) 114 | openMenuFromToolbar() 115 | }) 116 | 117 | // Model 118 | model("quickly-para-method--openQuickly") 119 | 120 | //slash command menu 121 | if (logseq.settings?.slashCommandMenu === true) slashCommandItems() 122 | 123 | // CSS 124 | logseq.provideStyle(CSSMain) 125 | 126 | // プラグインが有効になったとき 127 | // document.bodyのクラスを変更する 128 | if (logseq.settings![keySettingsPageStyle]) 129 | parent.document.body.classList.add(`${shortKey}-${logseq.settings![keySettingsPageStyle]}`) 130 | 131 | logseq.App.onRouteChanged(async ({ path, template }) => handleRouteChange(path, template))//ページ読み込み時に実行コールバック 132 | // logseq.App.onPageHeadActionsSlotted(async () => handleRouteChange())//Logseqのバグあり。動作保証が必要 133 | 134 | // プラグイン設定の項目変更時 135 | logseq.onSettingsChanged(( 136 | newSet: LSPluginBaseInfo["settings"], 137 | oldSet: LSPluginBaseInfo["settings"] 138 | ) => { 139 | 140 | // スタイル変更時の処理 141 | if (newSet[keySettingsPageStyle] !== oldSet[keySettingsPageStyle]) { 142 | //document.bodyのクラスを変更する 143 | if (oldSet[keySettingsPageStyle]) 144 | parent.document.body.classList.remove(`${shortKey}-${oldSet[keySettingsPageStyle]}`) 145 | if (newSet[keySettingsPageStyle]) 146 | parent.document.body.classList.add(`${shortKey}-${newSet[keySettingsPageStyle]}`) 147 | } 148 | 149 | if (oldSet.addLeftMenu !== newSet.addLeftMenu) { 150 | if (newSet.addLeftMenu === false) 151 | clearEleAll(`.${shortKey}--nav-header`) 152 | else 153 | addLeftMenuNavHeaderForEachPARA() 154 | } 155 | } 156 | ) 157 | 158 | // プラグインが無効になったとき 159 | logseq.beforeunload(async () => { 160 | if (logseq.settings![keySettingsPageStyle]) 161 | parent.document.body.classList.remove(`${shortKey}-${logseq.settings![keySettingsPageStyle]}`) 162 | clearEleAll(`.${shortKey}--nav-header`) 163 | }) 164 | 165 | }/* end_main */ 166 | 167 | 168 | 169 | // Model 170 | 171 | // ボタン処理中フラグ 172 | let processingButton = false 173 | 174 | const model = (popup: string) => 175 | logseq.provideModel({ 176 | openPARA: () => {// ツールバー 177 | if (!parent.document.getElementById(popup)) 178 | openMenuFromToolbar() 179 | }, 180 | Projects: () => runCommand("Projects", "PARA"), 181 | AreasOfResponsibility: () => runCommand("Areas of responsibility", "PARA"), 182 | Resources: () => runCommand("Resources", "PARA"), 183 | Archives: () => runCommand("Archives", "PARA"), 184 | pickListTagSubmitButton: () => {// ピックリストの送信ボタン 185 | 186 | const selectionListValue: string = (parent.document.getElementById('pickListSelect') as HTMLSelectElement)!.value//