テンプレート
① テンプレートを以下に記載
code:記事作成.txt
質問.icon質問
回答.icon回答
このページの内容
hr.icon
はじめに
詳細
まとめ
code:テンプレ②.txt
タイトル
本文
code:テンプレ③.txt
タイトル
本文
code:テンプレ④.txt
タイトル
本文
code:テンプレ⑤.txt
タイトル
本文
code:テンプレ⑥.txt
タイトル
本文
code:テンプレ⑦.txt
タイトル
本文
code:テンプレ⑧.txt
タイトル
本文
code:テンプレ⑨.txt
タイトル
本文
code:テンプレ⑩.txt
タイトル
本文
hr.icon
② 以下のscript.js内に作成したテンプレートの情報を追記する。
追記は以下のように行う。※ 追記する際はカンマで区切ること。
code:サンプル
// テンプレートメニューの定義ここから ----------
{ title: '📄 テンプレート名', template: '/api/code/konosho/テンプレート/スクリプト名.txt' }
// テンプレートメニューの定義ここまで ----------
hr.icon
テンプレートを使ってページを作成(UserScript版)
code:style.css
button#Templates.tool-btn:hover { text-decoration: none }
button#Templates.tool-btn::before { position: absolute; content: '\f067'; font: 900 21px/46px 'Font Awesome 5 Free' }
button#Templates.tool-btn img { opacity: 0 }
code:script.js
addTemplateItemsToPageMenu()
function addTemplateItemsToPageMenu() {
// テンプレートメニューの定義ここから ----------
const __templates = [
{ title: '📄 記事作成', template: '/api/code/konosho/テンプレート/記事作成.txt' }, // ←複数作る際は必ずカンマを入れる。(最終行のみカンマ不要)
{ title: '📄 テンプレ②', template: '/api/code/konosho/テンプレート/テンプレ②.txt' },
{ title: '📄 テンプレ③', template: '/api/code/konosho/テンプレート/テンプレ③.txt' },
{ title: '📄 テンプレ④', template: '/api/code/konosho/テンプレート/テンプレ④.txt' },
{ title: '📄 テンプレ⑤', template: '/api/code/konosho/テンプレート/テンプレ⑤.txt' },
{ title: '📄 テンプレ⑥', template: '/api/code/konosho/テンプレート/テンプレ⑥.txt' },
{ title: '📄 テンプレ⑦', template: '/api/code/konosho/テンプレート/テンプレ⑦.txt' },
{ title: '📄 テンプレ⑧', template: '/api/code/konosho/テンプレート/テンプレ⑧.txt' },
{ title: '📄 テンプレ⑨', template: '/api/code/konosho/テンプレート/テンプレ⑨.txt' },
{ title: '📄 テンプレ⑩', template: '/api/code/konosho/テンプレート/テンプレ⑩.txt' }
]
// テンプレートメニューの定義ここまで ----------
const __templMenuTitle = 'Templates'
scrapbox.PageMenu.addMenu({ title: __templMenuTitle, image: '/assets/img/logo.png', onClick: () => { } })
__templates.forEach((i) => {
scrapbox.PageMenu(__templMenuTitle).addItem({
title: i.title,
onClick: () => { __loadTemplate(i.template) }})
})
var __loadTemplate = function (templateUrl) {
if (scrapbox.Page.lines && scrapbox.Page.lines.length == 1) {
// タイトル行をクリックしたことにする
const line = document.getElementById('L' + scrapbox.Page.lines0.id) const lastChar = line.querySelector('span.char-index:last-of-type')
const textarea = document.getElementById('text-input')
lastChar.dispatchEvent(new MouseEvent('click', {bubbles: true, cancelable: true}))
textarea.dispatchEvent(new KeyboardEvent('keydown', {bubbles: true, cancelable: true, keyCode: 35}))
// テンプレートを読み込む
$('#text-input').load(templateUrl, function (response, status, xhr) {
if (status == "success") {
try {
// 読み込んだテンプレートをテキストエリアにセットしまして
textarea.value = /\.js$/.test(templateUrl) ? eval(response) : response
// テキストエリアのinputイベントを出しまして
textarea.dispatchEvent(new InputEvent('input', {bubbles: true, cancelable: true}))
} catch (ex) {
console.log("だめでした>< \n" + ex)
}
} else {
console.log("だめでした>< \n" + status)
}
})
}
}
}
hr.icon
参考
作成日