ken_nogi/NodeSrv/apps/xwiki/scripts/_tmp-hide-archive.js
Kenichiro NOGI ce58cb4be4 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合
GitHub(nextgroup2706/ken_nogi)は今後使わず自社Gitea運用に切替え。
NodeSrvは旧リポジトリの履歴を破棄しファイルのみ統合(Dokploy用サービスアカウントは
別途mygit-admin/NodeSrv.gitに履歴あり)。notepmエクスポート(12GB)とPleasanter
インストーラzip(208MB)はサイズが大きいため.gitignoreで除外。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 15:37:06 +09:00

113 lines
5.3 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Archive配下の全ページにhidden=trueを設定する使い捨てスクリプト。
const fs = require("fs");
const path = require("path");
const envPath = path.join(__dirname, "..", ".env");
for (const line of fs.readFileSync(envPath, "utf8").split("\n")) {
const m = line.match(/^([A-Z_]+)=(.*)$/);
if (m) process.env[m[1]] = m[2].replace(/^"|"$/g, "");
}
const XWIKI_BASE_URL = process.env.XWIKI_BASE_URL;
const AUTH = "Basic " + Buffer.from(`${process.env.XWIKI_ADMIN_USER}:${process.env.XWIKI_ADMIN_PASSWORD}`).toString("base64");
const WIKI_ID = "nexthd";
const pages = [
"Archive.FIT■FIT-PHP.WebHome",
"Archive.FIT■FIT-PHP.アーキトレンド.FCコンシェルジュ登録",
"Archive.FIT■FIT-PHP.アーキトレンド.WebHome",
"Archive.FIT■FIT-PHP.アーキトレンド.アーキトレンド",
"Archive.FIT■FIT-PHP.アーキトレンド.アーキトレンドマスタ更新",
"Archive.FIT■デザインセンター.WebHome",
"Archive.FIT■デザインセンター.デザインセンター",
"Archive.ネクスト■ウェルホーム八王子.WebHome",
"Archive.ネクスト■ウェルホーム八王子.ウェルホーム八王子",
"Archive.ネクスト■ウェルホーム八王子.テスト",
"Archive.ネクスト■ウェルホーム横浜.WebHome",
"Archive.ネクスト■ウェルホーム横浜.ウェルホーム横浜",
"Archive.ネクスト■ウェルホーム立川.WebHome",
"Archive.ネクスト■ウェルホーム立川.WELLHOMES立川",
"Archive.ネクスト■ネクストハウス厚木.WebHome",
"Archive.ネクスト■ネクストハウス厚木.ネクストハウス厚木",
"Archive.ネクスト■ネクストハウス相模原.WebHome",
"Archive.ネクスト■ネクストハウス相模原.ネクストハウス相模原",
"Archive.ネクスト■ネクストハウス立川.WebHome",
"Archive.ネクスト■ネクストハウス立川.モデルハウス名",
"Archive.ネクスト■東京特販課.東京特販課",
"Archive.ネクスト■東京特販課.WebHome",
"Archive.ネクストイノベーション株式会社.WebHome",
"Archive.ネクストイノベーション株式会社.東京住宅営業部",
"Archive.ネクストイノベーション株式会社.不動産事業部.WebHome",
"Archive.ネクストイノベーション株式会社.不動産事業部.東京不動産(センチュリー21).WebHome",
"Archive.ネクストイノベーション株式会社.不動産事業部.東京不動産(センチュリー21).イオンハウジング相模原",
"Archive.ネクストイノベーション株式会社.不動産事業部.東京不動産(センチュリー21).東京不動産(センチュリー21)",
"Archive.ネクストイノベーション株式会社.住宅営業部.WebHome",
"Archive.ネクストイノベーション株式会社.住宅営業部.WELLHOMESブランド_西東京_.WebHome",
"Archive.ネクストイノベーション株式会社.住宅営業部.WELLHOMESブランド_西東京_.業務フロー(WELLHOMES[西東京])",
"Archive.愛知■アクティエ大府第1.WebHome",
"Archive.愛知■アクティエ大府第1.actie大府第一",
"Archive.業務改善プロジェクトページ.WebHome",
"Archive.業務改善プロジェクトページ.野木試作中.2021年6月14日 議事録",
"Archive.業務改善プロジェクトページ.野木試作中.WebHome",
"Archive.業務改善プロジェクトページ.野木試作中.テスト",
"Archive.業務改善プロジェクトページ.野木試作中.nexthouse厚木",
];
function fullNameToUrlPath(fullName) {
const parts = fullName.split(".");
const pageName = parts.pop();
const spacesPart = parts.map((s) => `spaces/${encodeURIComponent(s)}`).join("/");
return `/rest/wikis/${WIKI_ID}/${spacesPart}/pages/${encodeURIComponent(pageName)}`;
}
function escapeXml(s) {
return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
}
async function main() {
let ok = 0;
let fail = 0;
for (const fullName of pages) {
const urlPath = fullNameToUrlPath(fullName);
const getRes = await fetch(`${XWIKI_BASE_URL}${urlPath}`, {
headers: { Authorization: AUTH, Accept: "application/json" },
});
if (!getRes.ok) {
console.warn(` ! GET失敗(${getRes.status}): ${fullName}`);
fail++;
continue;
}
const data = await getRes.json();
if (data.hidden === true) {
console.log(` - 既にhidden: ${fullName}`);
ok++;
continue;
}
const xml = `<?xml version="1.0" encoding="UTF-8"?>
<page xmlns="http://www.xwiki.org">
<title>${escapeXml(data.title)}</title>
<syntax>${escapeXml(data.syntax)}</syntax>
<hidden>true</hidden>
<content>${escapeXml(data.content)}</content>
</page>`;
const putRes = await fetch(`${XWIKI_BASE_URL}${urlPath}`, {
method: "PUT",
headers: { Authorization: AUTH, "Content-Type": "application/xml; charset=UTF-8" },
body: xml,
});
if (putRes.status === 200 || putRes.status === 202 || putRes.status === 201) {
console.log(` - hidden設定: ${fullName} (${putRes.status})`);
ok++;
} else {
console.warn(` ! PUT失敗(${putRes.status}): ${fullName}`);
fail++;
}
}
console.log(`完了: ${ok}件成功, ${fail}件失敗`);
}
main().catch((e) => {
console.error(e);
process.exit(1);
});