別プロジェクトに転記するスクリプト
https://gyazo.com/ad5645959e04c169b2926b2b0e7fc93e
Scrapboxの記事を他のプロジェクトにコピーするためのメニューボタンを追加する 1. メニューボタンを押す
2. 自分が参加してるプロジェクトの一覧が出る
3. 選択したプロジェクトに新しいページが作られ、元のページの本文が代入される
プロジェクト一覧の取得方法に欠陥があって左上のメニューで「more」の中に入ってるプロジェクトは選択肢に現れない
Scrapbox が固まるようになったのでこのスクリプトは保留
使い方
code:import.js
import '/api/code/kembo/別プロジェクトに転記するスクリプト/script.js'
code:style.css
a#Copy.tool-btn:hover { text-decoration: none }
a#Copy.tool-btn::before {
position: absolute; /* img 等他の要素を無視して絶対座標で配置する */
left: calc(46px/4); /* アイコンのための枠が 46px でアイコンがその半分だから余白は 1/4 */
font-size: 23px; /* scrapbox で使ってるアイコン */
content: '\E00A';
font-family: 'AppIcons';
}
/* 元の画像アイコンは表示しない */
a#Copy.tool-btn img { opacity: 0; }
code:memo.txt
const Label = "Copy";
scrapbox.PageMenu.addMenu({
title: Label,
});
/* 自分のプロジェクト一覧を取得 */
let projectName = scrapbox.Project.name;
let projectList = [];
let globalMenu = document.getElementsByClassName('global-menu-for-user')0; let length = globalMenu.childElementCount;
let i = 0;
while (i < length) {
if (globalMenu.childreni.classList.contains("project-list-filter")) { i++;
break;
}
}
console.log(i);
while (i < length) {
let item = globalMenu.childreni; if (item.classList.length > 0) { break; }
if (item.innerText != projectName) {
projectList.push(item.innerText);
}
i++;
}
console.log(projectList);
/* プロジェクト一覧を元にメニューにアイテム追加 */
let BaseUrl = location.href.match(/https?:\/\/^/+/)0; projectList.forEach((projectName) => {
scrapbox.PageMenu(Label).addItem({
title: projectName,
onClick: (e) => {
let project = e.target.innerText;
let lines = scrapbox.Page.lines.map((d) => d.text);
let title = encodeURIComponent(lines.shift());
lines = encodeURIComponent(lines.join("\n"));
window.open(BaseUrl + "/" + project + "/" + title + "?body=" + lines);
}
});
});