Confluenceで子ページの中身を全て展開したページを作る[Server 6.1.4版]

#はじめに
（勝手に）以下ページを参考にしております。
[Confluenceで子ページの中身を全て展開したページを作る](https://qiita.com/wamei/items/efce9f63d5739903c8df)
参考にさせてもらったコードだと、Server6.1.4では動かず、一部手直しした時の情報を残しておきます。
※問題あれば記事消します。（本家優先）

#使い方
##基本
本家と変わりません。
1. 「その他マクロ＞子ページの表示」をページ内のどこかに配置する。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/214587/93672ea9-ce73-642a-8243-812c7a99fb5a.png)
2. 以下ソースを、「その他マクロ＞htmlマクロ」に記載する。
※htmlマクロを使うには管理＞アドオンで有効化する必要があります。
 詳しくは [こちら](https://ja.confluence.atlassian.com/doc/html-macro-38273085.html)

```html
<div class="w-child-pages" data-url="this"></div>
<script type="text/javascript">
(function() {
    var expandScript = function($div, data) {
        $div.css({padding: '15px', border: 'solid 1px #aaa', borderRadius: '5px'});
        var page_url = $div.attr('data-url');
        if (page_url == 'this') {
            appendPage($div, data, true);
            return;
        }
        $.get(page_url, function(data) {
            appendPage($div, data, false);
        });
    };
    var appendPage = function($div, data, self) {
        if (self) {
            appendChildPages($div, data);
        } else {
            var $data = $(data);
            var $content = $data.find('div#main-content');
            $div.append($data.find('h1#title-text'));
            $div.append($content);
            expandScripts($content, data);
        }
        if (window.SyntaxHighlighter) {
            window.SyntaxHighlighter.highlight();
        }
    };
    var expandScripts = function($div, data) {
        $div.find('div.w-child-pages').each(function(){
            expandScript($(this), data);
        });
    };
    var appendChildPages = function($div, data) {
        $(data).find('ul.childpages-macro.conf-macro.output-block').find('li').each(function() {
            var $content = $('<div>').css({marginBottom: '10px'});;
            $div.append($content);
            $.get($(this).find('a').attr('href'), function(data) {
                appendPage($content, data, false);
            });
        });
    };
    var scriptTags = document.getElementsByTagName('script');
    var $div = $(scriptTags[scriptTags.length - 1]).prev();
    $(function(){
        if (location.pathname != '/pages/viewpage.action') {
            return;
        }
        expandScript($div, $('html')[0].outerHTML);
    });
})();
</script>

```
※サーバーがインターネット接続できないネットワークにあるので、`<script src="https://・・・">`ではうまくいかないので、直書き。

##応用
本家と変わりません。
・任意のページを埋め込むときは最初のdivのdata-urlの部分にURLを指定する

##制約
本家と変わりません。
・子ページでコードブロックが使われている場合、埋め込むページにも最低１つはコードブロックが必要

#手直し箇所
たぶんconfluence本体のタグの使い方が変わったのだと思う。
before

```js
$(data).find('li.child-item').each(function() {
```
after

```js
$(data).find('ul.childpages-macro.conf-macro.output-block').find('li').each(function() {
```

※うちの環境では、`/pages/`の前に`/wiki`が着くように設定ファイルいじったりしてたので、ここも直してます。
before

```js
if (location.pathname != '/pages/viewpage.action') {
```
after

```js
if (location.pathname != '/wiki/pages/viewpage.action') {
```

気が向いたらプルリク送ります・・・

#あとがき
ホントは、配下ページの添付ファイル一覧作りたいな、と思ったのがスタート。 → [作りました@201711/29](https://qiita.com/nh321/items/f52b6fa7d82376490c07)
ページの再帰展開がまずできれば、きっとなんとかなるだろうと思って、いじりました。

結論的には、REST api使えばできるわ・・・ということに思い至り、このソースを拡充していく方向は取りやめにしようかと・・・
でもせっかくなので、公開しておこうかな・・・くらいの感覚です。

以上です。